我编了一个在桌面上显示的时钟就是dc.textout当前的时间,通过一个timer使它总在最前方,但是程序退出时在桌面上留下残余字体,需刷新才能消除,我想通过退出程序前updatewindow来让整个屏幕刷新,但是不能实现.还有,当我设置字体背景色为白时,显示无问题,担当设了dc.SetBkMode(TRANSPARENT);后,虽然透明了,但每秒显示的秒数会残留在屏幕上,应该怎么去除?
调试欢乐多
hLVWnd = FindWindowEx (hPMWnd, NULL, "SHELLDLL_DefView", NULL);
hIconWnd = FindWindowEx (hLVWnd, NULL, "SysListView32",NULL);
再对hIconWnd对应的窗口Invalidate看看
HWND hLVWnd = ::FindWindowEx (hPMWnd, NULL, "SHELLDLL_DefView", NULL);
HWND hIconWnd = ::FindWindowEx (hLVWnd, NULL, "SysListView32",NULL);
CWnd *wnd = CWnd::FromHandle(hIconWnd);
wnd->Invalidate();上面的代码可以立马刷新桌面。这是因为桌面的最上面的窗口是class名SysListView32
::InvalidateRect(NULL,NULL,TRUE);