gpt4 book ai didi

c++ - 在屏幕上显示内容但没有窗口的程序

转载 作者:可可西里 更新时间:2023-11-01 10:37:24 25 4
gpt4 key购买 nike

在 Windows 中:我想知道是否可以(如果可以,如何)用 C++ 编写一个程序,直接在屏幕上显示图像/文本,这意味着没有窗口;如果你在一些例子之后仍然对我的意思感到困惑:Rocketdock 和 Rainmeter。

最佳答案

您当然可以在不使用 Qt 或任何其他框架的情况下做到这一点。只有 Win32 API 可以帮助您做到这一点,并且在内部,每个框架都调用这些 API,因此这些框架中的任何一个都没有魔法

首先要明白,没有窗口就无法显示任何图像或文本。每个程序都使用某种窗口来显示文本或图像。您可以使用 Windows SDK 附带的 Spy++ 对其进行验证。单击十字线符号,单击您认为没有任何窗口显示的图像或文本。 Spy++ 将向您显示它所在的窗口。

现在如何显示看起来不包含在任何窗口中的图像或文本。那么您必须执行某些步骤。

  1. 创建一个没有标题栏、调整边框大小、控制框、最小化、最大化或关闭按钮的窗口。使用 CreateWindowEx() 并查看各种窗口样式 WS_EX_XXXWS_XXX 以获得所需的窗口样式。

  2. 一旦有了窗口,您就需要剪切窗口。很像 cookies 切割器。为此,您需要定义一个区域。这个区域称为区域,您可以使用许多函数来定义它,例如 CreateEllipticRgn()CreatePolygonRgn()CreateRectRgn() CreateRoundRectRgn() 等所有这些函数都返回一个 HRGN,它是区域的句柄。椭圆形或矩形区域可以作为起始。

  3. 现在是最后一部分。你必须像那个特定区域一样切割窗口。使用 SetWindowRgn() 函数,该函数需要您的窗口句柄和该区域 (HRGN) 的句柄。此功能会将窗口切割成您想要的形状。

  4. 现在是图片或文字。在窗口内绘制图像或文本。我想你一定是按照你的形象剪了 window ,你只需要给 window 一张脸。所以只需在 WM_ERRASE BACKGROUNDWM_PAINT 消息上绘制图像

  5. 使用SetWindowPos() 将窗口移动到您希望在屏幕上显示的位置。如果您在 CreateWindowEx() 中使用了正确的参数,则无需执行此步骤

  6. 您可以使用 SetWindowLong() 函数设置任何其他窗口样式。

  7. 恭喜,您已经在不使用任何窗口的情况下显示了图像;)

关于c++ - 在屏幕上显示内容但没有窗口的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com