在windows中:我想知道是否有可能(如果是这样,如何)在C ++中制作一个直接在屏幕上显示图像/文本的程序,这意味着没有窗口;如果你仍然对我之后的事情感到困惑,那就是:Rocketdock和Rainmeter。
答案 0 :(得分:1)
你可以在不使用Qt或任何其他框架的情况下做到这一点。只需Win32 API可以帮助您在内部执行此操作,每个框架都会调用这些API,因此在这些框架中没有任何魔力
首先,要了解没有窗口就不能显示图像或文本。每个程序都使用某种窗口来显示文本或图像。您可以使用Windows SDK附带的Spy ++来验证它。单击十字线标志,单击您认为没有任何窗口显示的图像或文本。 Spy ++将显示它所包含的窗口。
现在如何显示似乎未包含在任何窗口中的图像或文本。那么你必须执行某些步骤。
创建一个没有标题栏,调整边框大小,控制框,最小化,最大化或关闭按钮的窗口。使用 CreateWindowEx(),查看所需窗口样式的各种窗口样式 WS_EX_XXX , WS_XXX 。
窗口到达后,您需要剪切窗口。就像饼干切割器一样。为此你需要定义一个区域。此区域称为区域,您可以使用许多功能定义它,例如 CreateEllipticRgn(), CreatePolygonRgn(), CreateRectRgn(), CreateRoundRectRgn()等所有这些函数都返回一个HRGN,它是该区域的句柄。椭圆或矩形区域可以作为起点。
现在是最后一部分。你必须像那个特定区域一样切割窗口。使用 SetWindowRgn()功能,该功能需要窗口的句柄和该区域的句柄( HRGN )。此功能将窗口切割成您想要的形状。
现在是图片或文字。在窗口内绘制图像或文本。我假设你必须根据你的形象切割窗户,你只需要给窗户一张脸。所以只需在 WM_ERRASE背景或 WM_PAINT 消息
使用 SetWindowPos()将窗口移动到屏幕上您想要的位置。如果您在CreateWindowEx()中使用了正确的参数,则无需执行此步骤
您可以使用 SetWindowLong()功能设置任何其他窗口样式。
恭喜,您无需使用任何窗口即可显示图像;)