c++ win32怎么在WM_PAINT之外绘图,非mfc
展开全部
API 程序里 在:
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc ;
。。。
switch (message)
{
case WM_CREATE : 。。。return 0 ;
case WM_SIZE : 。。。return 0 ;
case WM_TIMER : 。。。return 0 ;
case WM_PAINT : 。。。return 0 ;
case WM_DESTROY : 。。。return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
你可以在任何一个 case 里画图:
(1)hdc = GetDC (hwnd) ; // 获得 hdc
(2)用 hdc 画图
(3)ReleaseDC (hwnd, hdc) ; // 释放 hdc
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc ;
。。。
switch (message)
{
case WM_CREATE : 。。。return 0 ;
case WM_SIZE : 。。。return 0 ;
case WM_TIMER : 。。。return 0 ;
case WM_PAINT : 。。。return 0 ;
case WM_DESTROY : 。。。return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
你可以在任何一个 case 里画图:
(1)hdc = GetDC (hwnd) ; // 获得 hdc
(2)用 hdc 画图
(3)ReleaseDC (hwnd, hdc) ; // 释放 hdc
展开全部
楼上说得不错,我补充一点
作为一个良好结构的程序,你应该在wm_paint之外,把图画在内存的bitmap中,然后调用invalidaterect函数
强制产生一个wm_paint消息,再用这个bitmap用bitblt画在窗口上
作为一个良好结构的程序,你应该在wm_paint之外,把图画在内存的bitmap中,然后调用invalidaterect函数
强制产生一个wm_paint消息,再用这个bitmap用bitblt画在窗口上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HDC hDC = GetWindowDC(hWnd);
然后使用 hDC, 绘图
然后使用 hDC, 绘图
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:
窗口句柄(Window Handle) HWND,
消息ID(Message ID) UINT,
和两个消息参数(wParam, lParam)WPARAM、LPARAM,
WndProc的第一个参数hWnd就是当前接收消息的窗口句柄,第二个参数就是被传送过来的消息,第三、第四个参数都是附加在消息上的数据,这和MSG结构体是一样的。
2、LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc ;
。。。
switch (message)
{
case WM_CREATE : 。。。return 0 ;
case WM_SIZE : 。。。return 0 ;
case WM_TIMER : 。。。return 0 ;
case WM_PAINT : 。。。return 0 ;
case WM_DESTROY : 。。。return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
可以在任何一个 case 里画图:
(1)hdc = GetDC (hwnd) ; // 获得 hdc
(2)用 hdc 画图
(3)ReleaseDC (hwnd, hdc) ; // 释放 hdc
窗口句柄(Window Handle) HWND,
消息ID(Message ID) UINT,
和两个消息参数(wParam, lParam)WPARAM、LPARAM,
WndProc的第一个参数hWnd就是当前接收消息的窗口句柄,第二个参数就是被传送过来的消息,第三、第四个参数都是附加在消息上的数据,这和MSG结构体是一样的。
2、LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc ;
。。。
switch (message)
{
case WM_CREATE : 。。。return 0 ;
case WM_SIZE : 。。。return 0 ;
case WM_TIMER : 。。。return 0 ;
case WM_PAINT : 。。。return 0 ;
case WM_DESTROY : 。。。return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
可以在任何一个 case 里画图:
(1)hdc = GetDC (hwnd) ; // 获得 hdc
(2)用 hdc 画图
(3)ReleaseDC (hwnd, hdc) ; // 释放 hdc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询