大佬教程收集整理的这篇文章主要介绍了c – 渲染到桌面,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这肯定适用于XP和Windows 7(使用Areo),以获得普通GDI绘图可以使用的东西.我从未使用DirectX对其进行测试,但我怀疑如果您使用hMainWnd作为演示窗口,它会起作用.
HWND hProgMan = NULL; HWND hSHell = NULL; HWND hMainWnd = NULL; unsigned int ScreenWidth = 0; unsigned int ScreenHeight = 0; int ScreenTop = 0; int ScreenLeft = 0; HRGN ValiDRGN = NULL; // ... ScreenWidth = GetSy@L_502_9@metrics(SM_cxvIRTUALSCREEN); if ( ScreenWidth == 0 ) ScreenWidth = GetSy@L_502_9@metrics( SM_CXSCREEN ); ScreenHeight = GetSy@L_502_9@metrics(SM_CYVIRTUALSCREEN); if ( ScreenHeight == 0 ) ScreenHeight = GetSy@L_502_9@metrics(SM_CYSCREEN); ScreenTop = GetSy@L_502_9@metrics(SM_YVIRTUALSCREEN); ScreenLeft = GetSy@L_502_9@metrics(SM_XVIRTUALSCREEN); ValiDRGN = CreateRectRgn(0,ScreenWidth,ScreenHeight); hProgMan = FindWindow("Progman","Program Manager"); if(hProgMan != NULL) { hSHell = FindWindowEx(hProgMan,"SHelLDLL_DefView",null); } else { hProgMan = FindWindow("DesktopBACkgroundClass",null); if(hProgMan != NULL) hSHell = FindWindowEx(hProgMan,"DeskFolder",null); } hMainWnd = CreateWindowEx( WS_EX_TRANSPARENT,"MyWindowClass","Window title",WS_CHILDWINDOW | WS_OVERLAPPED | WS_CLIPCHILDREN,ScreenHeight,hSHell,NULL,hInstance,NULL ); EnableWindow(hMainWnd,falSE); SetWindowPos(hMainWnd,HWND_BOTTOM,SWP_NOSIZE|SWP_NOMOVE);
…然后用于绘图(使用GDI),像这样……
HDC hDC = GetDC( hMainWnd ); SELEctClipRgn(hDC,ValiDRGN); BitBlt( hDC,ScreenX,ScreenY,hBACkBuffer,SRCCOPY ); ReleaseDC( hMainWnd,hDC );
…并使用桌面图标的区域更新ValiDRGN.通过Desktop的listview控制窗口可以找到一些工具.对于这个问题,这个问题相当复杂.
以上是大佬教程为你收集整理的c – 渲染到桌面全部内容,希望文章能够帮你解决c – 渲染到桌面所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。