如何用我自己的应用程序窗口CWnd替换窗口桌面

时间:2010-01-25 18:02:43

标签: windows visual-c++ mfc desktop cwnd

我尝试使用GetDesktopWindow()在我的Windows桌面上绘画。 但我失败了,因为桌面快速重新绘制,我的绘画没有出现。 所以我需要用ownerdraw应用程序窗口替换GetDesktopWindow()获取的桌面窗口 任何人都有想法,怎么做?

提前致谢, 米兰

5 个答案:

答案 0 :(得分:0)

我不认为这是可能的。当我编写一个操纵桌面的“桌面玩具”时,我所做的就是截取屏幕截图,创建一个与桌面一样大的窗口,并将屏幕截图放在应用程序窗口的后面。这确实阻止了开始菜单和桌面图标等工作,但这对我的目的来说很好,不知道你想要做什么。

您可以尝试从GetDesktopWindow()获取窗口的子类......不过我怀疑Windows有防范这种恶作剧的保护措施。

答案 1 :(得分:0)

您无法替换桌面窗口。但你可以把它绘制成你想要的任何东西。

只需将您要绘制的内容放入位图中,然后使用SystemParametersInfo SPI_SETDESKTOPWALLPAPER

选择该位图作为桌面背景位图

答案 2 :(得分:0)

我在Windows桌面上有一些痒,而我正在评估的另一种选择是Windows KDE ...

http://windows.kde.org/

这是(通常)基于Linux Qt的KDE窗口系统的Windows版本。

我解释了如何在安装信息中替换Windows shell(桌面)。在我的情况下,我正在安全地玩它。我保留了我的旧帐户(为了保存简短,我只是在以管理员身份登录时复制帐户信息到“我的副本”文件夹)。

我正在和KDE一起作为评估的独立用户。

作为问题的答案,有信息。在安装文档和代码库中,涵盖了96%的问题。与我们大多数人分享其余部分: - )

\ _ W _ /

答案 3 :(得分:0)

您可以将注册表中的默认shell更改为您自己的应用程序。

我尝试用注册表中的cmd.exe替换explorer.exe并且它有效。当我重新启动机器时,我只能看到命令提示符。

答案 4 :(得分:-1)

以管理员身份创建C:/windows/explorer.exe的副本,并将其另存为explorer.exe.old,删除explorer.exe,然后将应用程序作为explorer.exe复制到C:/ windows。重新启动,登录,从理论上讲,它应该在那里。