我们今天来吹一下关于窗口重绘的事情,在开始吹牛之前,我们先用上一篇博文中说到的方法写一个简单的Win32应用程序。代码如下:
#include <Windows.h>
//先声明一下消息处理函数
LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
// 入口点
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrvInstance,
LPSTR lpCommandLine,
int cmdShow)
{
WCHAR* cln = L"MyApp";
//设计窗口类
WNDCLASS wc = {};
wc.hInstance = hInstance;
wc.lpszClassName = cln;
wc.lpfnWndProc = MyWindowProc;
//注册窗口类
RegisterClass(&wc);
// 创建窗口
HWND hMainwind = CreateWindow(
cln,
L"绘制窗口",
WS_OVERLAPPEDWINDOW,
20,
12,
450,
300,
NULL,
NULL,
hInstance,
NULL);
// 显示窗口
if(hMainwind == NULL)
return 0;
ShowWindow(hMainwind,SW_NORMAL);
// 消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
// 窗口消息处理程序
LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_PAINT:
break;
case WM_DESTROY:
PostQuitMessage(0);//退出程序
return 0;
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
}
这个程序是可以正常运行的,我们先来运行一下&#x