第一个windows窗口程序
首先一个能运行的Windows窗口都有一个基本骨架,
- 头文件引入
- 函数声明(WndProc)
- WinMain主函数
- 回调处理函数
大概是这样
`#include<windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM Lparam);
//winmain入口
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow)
{
//填充窗口类
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = TEXT("MyWindowClass");
//注册窗口
RegisterClass(&wc);
//创建窗口
HWND hwnd = CreateWindow(
TEXT("MyWindowClass"),
TEXT("我的第一个窗口"),
WS_OVERLAPPEDWINDOW, // 窗口样式:带标题栏、最大化/最小化/关闭按钮
CW_USEDEFAULT, CW_USEDEFAULT, // 窗口初始位置(系统自动分配)
CW_USEDEFAULT, CW_USEDEFAULT, // 窗口初始大小(系统自动分配)
NULL, NULL, hInstance, NULL
);
//窗口显示和刷新
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
//消息机制
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
//消息处理回调函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
}
`
小结:
- 第一次在visual中写Windows程序,文件含中文时最好保存为UTF-8带签名,不然报C4819错误
- 因为主函数入口时WinMain而不是Main,所以要把项目的链接器改为Windows


浙公网安备 33010602011771号