加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在Windows桌面上绘制文本?

发布时间:2020-12-16 10:26:37 所属栏目:百科 来源:网络整理
导读:我将如何在 Windows桌面上放置文本?我被告知GetDesktopWindow()是我需要的,但我需要一个例子. 解决方法 我假设您的最终目标是在桌面上显示某种状态信息. 您将不得不这样做: 将DLL注入Explorer的进程并将桌面窗口(Progman窗口层次结构底部的SysListView32)
我将如何在 Windows桌面上放置文本?我被告知GetDesktopWindow()是我需要的,但我需要一个例子.

解决方法

我假设您的最终目标是在桌面上显示某种状态信息.

您将不得不这样做:

>将DLL注入Explorer的进程并将桌面窗口(Progman窗口层次结构底部的SysListView32)子类化,直接在其上绘制文本.
>创建一个不可激活的窗口,其背景使用PaintDesktop绘制并在其上绘制文本.

第一种解决方案是最具侵入性的,而且很难编码,因此我不推荐它.

第二种解决方案允许最灵活.没有“未记录”或依赖于Explorer的特定实现,甚至只是将Explorer作为shell.

为了防止窗口在单击时被置于顶部,您可以在Windows 2000及更高版本上使用扩展窗口样式WS_EX_NOACTIVATE.在下层系统中,您可以处理WM_MOUSEACTIVATE消息并返回MA_NOACTIVATE.

如果通过使用分层窗口需要真正的透明度,您可以使用PaintDesktop调用,但概念保持不变.我写了另一个回答,详细说明了如何使用GDI正确地使用alpha进行分层窗口.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读