【发布时间】:2016-09-19 23:40:28
【问题描述】:
我尝试使用GetDC(GetDesktopWindow) 在桌面窗口上绘制任何东西,例如以下简单程序:
#include <windows.h>
int main()
{
TextOut(GetDC(GetDesktopWindow()), 10, 10, TEXT("Test TextOut Tester!!"), 21);
return 0;
}
似乎我当前的用户权限会影响绘图行为,我不是我电脑上的管理员,这是原因吗?有没有关于这个问题的文档? 提前致谢
【问题讨论】:
-
问题是,桌面窗口不属于你。没有合同文件表明这是受支持的方案。 GDI 不受特权的约束。您正在做的事情因另一个原因而失败。完全没有错误处理不会有助于找出答案。
-
我该怎么办?如果我尝试
TextOut到创建的窗口,它会成功,但是在桌面窗口上执行它会失败,那么问题是什么?即使GetDC和GetDesktopWindow的返回值不为零。 -
这样做很难做到,在重绘和 99.9% 的时间之间是不持久的,这是一个糟糕的想法,有更好的选择(你应该说明你的最终目标)。 GetDesktopWindow() 窗口不是您看到的包含图标、壁纸等的窗口,而是您需要从 GetShellWindow() 开始定位的 syslistview。
-
我曾经在我的 PC 上的桌面窗口上绘制东西,但在办公室(我不是管理员)出现了提到的问题,我肯定会在我的 PC 上使用所有 GDI 东西,如
SetPixel和TextOut,但在我目前的情况下它不起作用。 -
您不能在桌面上绘图。它不是你的。别再试图在别人的窗户上画画了!创建一个窗口。以此为基础。
标签: windows winapi drawing gdi win32gui