专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++ Builder

SwitchDesktop切换虚拟桌面,能闪屏,甚至黑屏一段时间

发布时间:2011-06-28 10:34:02 文章来源:www.iduyao.cn 采编人员:星星草
SwitchDesktop切换虚拟桌面,会闪屏,甚至黑屏一段时间
下面是部分代码,第一次执行SwitchDesktop的时候,经常是黑屏一段时间。接下来就是每次切换一次,闪屏一次。切换回原桌面也会闪屏。(下面代码省略了切换回来的部分)
请问各位有遇到类似问题吗?求教!

//szDesktopName为随机字母
HDESK hDesktop = CreateDesktop(szDesktopName, NULL, NULL, 0, GENERIC_ALL, NULL);

//记录原始桌面的句柄
m_hOriginalThread = GetThreadDesktop(GetCurrentThreadId()); 
m_hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);

//得到当前桌面截图
HDC hdc = ::GetDC(GetDesktopWindow());

int cx=GetSystemMetrics(SM_CXVIRTUALSCREEN);  
int cy=GetSystemMetrics(SM_CYVIRTUALSCREEN);
int x = GetSystemMetrics(SM_XVIRTUALSCREEN );
int y = GetSystemMetrics(SM_YVIRTUALSCREEN );

m_dcScreen = ::CreateCompatibleDC(hdc);

m_hbitmapMem = ::CreateCompatibleBitmap(hdc,cx,cy);
m_hbitmapOld = (HBITMAP)::SelectObject(m_dcScreen,m_hbitmapMem);

::BitBlt(m_dcScreen,0,0,cx,cy,hdc,x,y,SRCCOPY);
SwitchDesktop(hDesktop); //切换到虚拟桌面
SetThreadDesktop(hDesktop); //设置桌面活动焦点是虚拟桌面
------解决方案--------------------
我之前实作过没有任何问题,是不是你系统本身的问题?你找别的电脑试试什么效果
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: