C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 渲染到桌面大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望能够渲染一个像壁纸一样的东西.我使用 Windows,我更喜欢DirectX.我知道VLC可以在DirectX模式下呈现视频壁纸,所以它是可能的.

所以,一个简单的问题,我怎么能设置rendertarget呈现,如果它是Windows中的壁纸?

解决方法

这里有一些代码可以让你获得一个窗口的句柄(HWND),可以用来绘制windows桌面的顶部.这是如何工作的主要问题是桌面图标仍然存在,但这将允许您绘制它们之上.如果你想让图标显示为正常(你的东西在它们后面),你需要在绘制完东西之后重新绘制它们,或者找到一种方法来避免首先绘制它们.这是非常重要的,我从未完全解决过.

这肯定适用于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,请注明来意。
标签:c桌面渲染