我将如何在 Windows 桌面上放置文本?有人告诉我 GetDesktopWindow() 是我需要的,但我需要一个示例。
最佳答案
我假设您的最终目标是在桌面上显示某种状态信息。
您必须执行以下任一操作:
将 DLL 注入(inject) Explorer 进程并将桌面窗口子类化(
Progman
窗口层次结构底部的SysListView32
)以直接在其上绘制文本.创建一个不可激活的窗口,其背景使用
PaintDesktop
绘制,并在其上绘制文本。
第一个解决方案是最具侵入性的,并且很难编写代码,所以我不推荐它。
第二种解决方案具有最大的灵 active 。没有“未记录”或依赖于 Explorer 的特定实现,甚至没有将 Explorer 作为外壳。
为了防止窗口在单击时被带到顶部,您可以在 Windows 2000 及更高版本上使用扩展窗口样式 WS_EX_NOACTIVATE
。在下层系统上,您可以处理 WM_MOUSEACTIVATE
消息并返回 MA_NOACTIVATE
。
如果您需要使用分层窗口实现真正的透明度,您可以使用 PaintDesktop
调用,但概念保持不变。我写了另一个答案,详细说明了如何使用 GDI+ 正确地使用 alpha 进行分层窗口。
关于c++ - 如何在 Windows 的桌面上绘制文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397389/