【发布时间】:2010-01-25 18:02:43
【问题描述】:
我尝试使用 GetDesktopWindow() 在我的 Windows 桌面上绘画。 但我失败了,因为桌面会迅速重新粉刷自己,而我的画没有出现。 所以我需要将我通过GetDesktopWindow() 获得的桌面窗口替换为ownerdraw 应用程序窗口 任何人都可以有一个想法,如何做到这一点?
提前致谢, 米兰
【问题讨论】:
标签: windows visual-c++ mfc desktop cwnd
我尝试使用 GetDesktopWindow() 在我的 Windows 桌面上绘画。 但我失败了,因为桌面会迅速重新粉刷自己,而我的画没有出现。 所以我需要将我通过GetDesktopWindow() 获得的桌面窗口替换为ownerdraw 应用程序窗口 任何人都可以有一个想法,如何做到这一点?
提前致谢, 米兰
【问题讨论】:
标签: windows visual-c++ mfc desktop cwnd
我认为这是不可能的。当我编写一个操纵桌面的“桌面玩具”时,我所做的是截取屏幕截图,创建一个与桌面一样大的窗口,然后将屏幕截图放在我的应用程序窗口的背面。当然,这确实阻止了开始菜单和桌面图标之类的工作,但这对我来说很好,不知道您要做什么。
您可以尝试对从 GetDesktopWindow() 获得的窗口进行子类化...虽然我怀疑 Windows 有针对此类恶作剧的保护措施。
【讨论】:
您无法替换桌面窗口。但是你可以让它画你想要的任何东西。
只需将您想要绘制的任何内容放入位图中,然后使用SystemParametersInfo SPI_SETDESKTOPWALLPAPER 将其选为桌面背景位图
【讨论】:
我对 Windows 桌面有些不满,我正在评估的一种替代方案是 Windows KDE ...
这是(通常)基于 Linux Qt 的 KDE 窗口系统的 Windows 版本。
我在安装信息中解释了如何替换 windows shell(桌面)。就我而言,我玩得很安全。我保留了我的旧帐户(为简单起见,我只是在以管理员身份登录时将帐户信息复制到“我的副本”文件夹中)。
我正在使用 KDE 作为单独的用户进行评估。
作为问题的答案,有信息。在安装文档和代码库中覆盖 96% 的问题。与我们大多数人分享其余部分:-)
\_w_/
【讨论】:
您可以将注册表中的默认 shell 更改为您自己的应用程序。
我尝试在注册表中将 explorer.exe 替换为 cmd.exe 并且成功了。当我重新启动机器时,我只能看到一个命令提示符。
【讨论】:
作为管理员,创建 C:/windows/explorer.exe 的副本并将其另存为 explorer.exe.old,删除 explorer.exe,并将您的应用程序复制到 C:/windows 作为 explorer.exe。重新启动,登录,理论上,它应该在那里。
【讨论】: