您的位置:首页 > 编程语言 > C语言/C++

第一个windows程序

2017-08-07 20:38 260 查看
打开vs2015,新建一个空的win32项目,并向项目中添加一个main.cpp的c++源文件。main.c中的代码如下:

#include <Windows.h>
#include <stdio.h>

LRESULT CALLBACK WinProc(
HWND hwnd,		//handle to window
UINT uMsg,		//message identifier
WPARAM wParam,  //first message parameter
LPARAM lParam	//second message parameter
);

int WINAPI WinMain(
HINSTANCE hInstance,    //handle to current instance
HINSTANCE hPrevInstance,  //handle to previous instace
LPSTR lpCmdLine,      //command line
int nCmdShow		//show state
) {
//design a window class
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);
wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);
wndcls.hInstance = hInstance;  //application instance handle passed by WinMain function
wndcls.lpfnWndProc = WinProc;
wndcls.lpszClassName = L"tangliang";
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);

//创建窗口,定义一个变量用来保存成功创建后返回的句柄
HWND hwnd;
hwnd = CreateWindow(L"tangliang", L"http://blog.csdn.net/a18779148177", WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL);
//显示及刷新窗口
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);

//定义消息结构体,开始消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

//编写窗口过程函数
LRESULT CALLBACK WinProc(
HWND hwnd,		//handle to window
UINT uMsg,		//message identifier
WPARAM wParam,  //first message parameter
LPARAM lParam	//second message parameter
) {
switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf_s(szChar, "char code is %d", wParam);
MessageBox(hwnd, L"char code is %d", L"char", 0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd, L"mouse clicked", L"message", 0);
HDC hdc;
hdc = GetDC(hwnd);		//不能在响应WM_PAINT消息时调用
TextOut(hdc, 0, 50, L"tangliang", strlen("tangliang"));
//ReleaseDC(hwnd, hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hwnd, &ps);   //BeginPaint只能在响应WM_PAINT消息时调用
TextOut(hDC, 0, 0, L"http://blog.csdn.net/a18779148177", strlen("http://blog.csdn.net/a18779148177"));
EndPaint(hwnd, &ps);
break;
case WM_CLOSE:
if (IDYES == MessageBox(hwnd, L"是否真的结束?", L"message", MB_YESNO)) {
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}

运行该项目,效果图如下:



在窗口中单击鼠标左键会弹出如下图所示对话框:



点击确定按钮后,如下图所示:



单击关闭按钮,如下图所示:



当拉伸窗口时,窗口会重新绘制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息