onpaint 什么时候调用
1个回答
展开全部
窗口需要重绘时触发,至于什么时候需要重绘这要看窗口控件机制,这是微软封装的,不用你管。
一般情况下,窗口局部被遮挡后又切到前台时,被遮挡的部分要重绘,onpaint此时被触发,用户可以在发生重绘时绘制自己的图形,而且此事件每个可呈现的控件都有。
在MFC中有消息映射,使用向导就可以,C#中在控件的事件列表中双击就会自动创建事件函数。
在win32中在消息处理函数中编写代码
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
char *p=new char[100];
char *c=p;
WCHAR *wd=new WCHAR[100];
int a;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询