作者:xi曦 | 来源:互联网 | 2023-07-07 13:30
示例代码:
#include
//变量声明
HINSTANCE hinst;
//函数声明
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){
WNDCLASSEX wcx; //窗口类
HWND hwnd; //窗口句柄
MSG msg; //消息
BOOL fGotMessage; //是否成功获取消息
hinst = hinstance; //对创建的窗口类进行填充相应的数据结构
wcx.cbSize = sizeof(wcx); //cxSize转到定义为 该类型为UINT
wcx.style = CS_HREDRAW | CS_VREDRAW; //样式 大小改变时 重新进行绘制
wcx.lpfnWndProc = MainWndProc; // 窗口消息处理函数
wcx.cbWndExtra = 0; // 步使用类内存
wcx.cbClsExtra = 0; // 不使用窗口内存
wcx.hInstance = hinstance; //所属的应用程序的实例句柄
wcx.hIcon = LoadIcon(NULL, IDI_APPLICATION); //图标: 默认
wcx.hCursor = LoadCursor(NULL, IDC_ARROW); // 光标:默认
wcx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 背景:WHITE_BRUSH
wcx.lpszMenuName = NULL; // 菜单:步使用
wcx.lpszClassName = "MainClass"; //窗口类型
wcx.hIcOnSm= (HICON)LoadImage(hinstance, MAKEINTRESOURCE(5), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CXSMICON), LR_DEFAULTCOLOR);
if (!RegisterClassEx(&wcx)) { //创建窗口类
return 1;
}
//调用CreateWindow API
hwnd = CreateWindow("MainClass", //窗口名
"CH 2-3", //窗口标题
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, //水平位置:默认
CW_USEDEFAULT, //垂直位置:默认
CW_USEDEFAULT, //宽度位置:默认
CW_USEDEFAULT, //高度位置:默认
(HWND)NULL, // 父窗口:无
(HMENU)NULL, //菜单:使用窗口类的菜单
hinstance, //应用程序实例句柄
(LPVOID)NULL); //窗口创建时数据:无
if (!hwnd) {
return 1;
}
//显示窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
//消息循环,这里十分重要,自己摸索
while ((fGotMessage = GetMessage(&msg, (HWND)NULL, 0, 0)) != 0 && fGotMessage != -1) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/*
MainWndProc
功能:窗口消息处理函数 对所有的消息都使用默认处理函数
*/
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_DESTROY:
ExitThread(0);
return 0;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}}
效果图: