MFC 桌面窗口重绘问题。
我现在想使用VC的MFC,在电脑的桌面上面画一个风车,当然风车要可以在桌面上面转动,这样就需要重绘电脑桌面,但是我试了好几种方法都不行。我用MFC建立的是SDI的程序,如...
我现在想使用VC的MFC,在电脑的桌面上面画一个风车,当然风车要可以在桌面上面转动, 这样就需要重绘电脑桌面,但是我试了好几种方法都不行。我用MFC建立的是SDI的程序,如果用简单的用RedrawWindow()程序运行只能客户区的内容,不能达到我的要求。求各路大神现身啊。。。。
展开
3个回答
展开全部
得到桌面窗口的句柄,然后再绘图
HWND GetDesktopWindow(VOID);
HWND GetDesktopWindow(VOID);
更多追问追答
追问
图是能够画出来的了,就是不能够擦掉。
追答
当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息对窗口进行重新绘制。
Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate()只是通知系统,此 时的窗口已经变为无效。强制系统调用WM_PAINT,而这个消息只是Post就是将该消息放入消息队列。当执行到WM_PAINT消息时才会对敞口进行重绘。
UpdateWindow只向窗体发送WM_PAINT消息,在发送之前判断GetUpdateRect(hWnd,NULL,TRUE)看有无可绘制的客户区域,如果没有,则不发送WM_PAINT。
RedrawWindow()则是具有Invalidate()和UpdateWindow()的双特性。声明窗口的状态为无效,并立即更新窗口,立即调用WM_PAINT消息处理。
展开全部
孙鑫老师有讲过,你可以得到桌面句柄,然后对整个屏幕绘图,之后再刷新
追问
CWindowDC dc(GetDeskTopWindow());
RedrawWindow();
//这样好像不得行哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HWND GetDesktopWindow(VOID);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询