用vc++编写window窗口
程序员文章站
2022-04-05 08:07:13
...
用vc++初次创建win32窗口程序:
总结以下几点
声明WndProc函数
WinMain函数中包含
①设计窗口类
②注册窗口
③创建窗口
④显示窗口函数
⑤消息循环
定义WndProc函数
#include<Windows.h>
#include<tchar.h>
LRESULT CALLBACK WndProc
(HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
//int nCmdShow 表示窗口的状态,是最大化,还是最小化,等等
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR nCmdLine, int nCmdShow)
{
//设计窗口类
WNDCLASSEX wndclassex;
wndclassex.cbSize = sizeof(WNDCLASSEX);
wndclassex.cbClsExtra = 0;
wndclassex.cbWndExtra = 0;
wndclassex.style = 0;//窗口样式默认
wndclassex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);//窗口背景为白色
wndclassex.hInstance = hInstance;//窗口实例
wndclassex.hIcon = LoadIcon(NULL, IDI_ERROR);//窗口图标样式
wndclassex.hCursor = LoadCursor(NULL, IDC_ARROW);//窗口光标样式
wndclassex.lpszClassName = L"kice_Amber";
wndclassex.lpszMenuName = NULL;
wndclassex.lpfnWndProc = WndProc;
wndclassex.hIconSm = LoadIcon(wndclassex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));//设计窗口类时,没有将元素全部设置,导致窗口注册失败
//注册窗口
if (!RegisterClassExW(&wndclassex)) {
MessageBox(NULL, L"注册失败", L"00", NULL);
return 1;
}
//创建窗口
HWND hWnd; //定义一个句柄 标识窗口
hWnd = CreateWindow
(L"kice_Amber",
L"MyTest",
WS_OVERLAPPEDWINDOW,//窗口风格
CW_USEDEFAULT,//左上角x
CW_USEDEFAULT,//左上角y
CW_USEDEFAULT,//窗口高
CW_USEDEFAULT,//窗口宽
NULL,//是否有父类窗口
NULL,//菜单句柄:是否有主菜单(无则是NULL)
hInstance,//窗口句柄
NULL
);
//显示窗口
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd); //更新窗口
//消息循环部分
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);//转换消息
DispatchMessage(&msg);//交由处理函数
}
return 0;
}
LRESULT CALLBACK WndProc
( HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return 0;
}