实际上,它是画了的,但是当你的函数结束以后, DesktopWindow会自动重画。就把你画的
摸掉了。
不信你可以在你的函数里多画一些东西,中间用sleep。
摸掉了。
不信你可以在你的函数里多画一些东西,中间用sleep。
解决方案 »
- unsigned char* 转换问题
- 获取一个指定窗口位置的问题
- 想做一个notes那样的状态栏按钮, 按一下弹出列表, 但如何响应整个程序的鼠标事件让他关闭??????????
- 通過Excel的句柄能取得当前的active行和列嘛?
- 求职(上海)--VC程序员,SDK/MFC/GUI/SQL/DLL/进程线程实时系统/COM/图像处理
- 传送文件的问题~~~!在线等~~~~!
- 发送端如何知道接收端已经正确接收到???
- 组播 实现屏幕共享 对网络传输数据这块儿没有头绪
- 想了解一下在VC中怎样处理SHIFT 和 别的键(比如DOWN键)同时按的事件(在线等)
- MFC的CDC打印问题
- 一个线程可以自己把自己挂起来吗?如果可以的话,用什么函数挂起?
- msdn中的subclass???
SCreenDC.CreateDC("DISPLAY",NULL,NULL,NULL); //创建屏幕的设备上下文
CDC memDC;//定义一个兼容DC
memDC.CreateCompatibleDC(&SCreenDC);//创建DC
CBitmap bmpDraw;
bmpDraw.LoadBitmap(IDB_BITMAP1);//装入DDB
CBitmap* pbmpOld=memDC.SelectObject(&bmpDraw);//保存原有DDB,并选入新DDB入DC
pDC->BitBlt(0,0,32,32,&memDC,0,0,SRCCOPY); //现在可以随心所欲的画了
memDC.SelectObject(&bmpOld);
任何刷新都会导致屏幕重画
CDC *pDC = CDC::FromHandle(::GetDC(NULL));
用hdc画画,比如::TextOut(hdc......画完之后任何一个鼠标动作都会导致窗口重画
所以你需要把桌面窗口锁住,禁止它重画//画画之后琐住桌面
::LockWindowUpdate(::GetDesktopWindow());
//下面操作解锁
::LockWindowUpdate(NULL);
//下面操作刷新整个桌面
::InvalidateRect(0,NULL,0);
RECT rc;
HWND hWnd = GetDesktopWindow();
GetClientRect(hWnd,&rd);
//drawing here
ValidateRect(hWnd,&rc);或者干脆SubClass桌面的窗口,在CallWindowProc调用原来的窗口函数以后再自己“添足”噢!
确实可以的