问题标签 [wm-paint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
46916 浏览

c# - C# 中的 SetWindowsHookEx

我正在尝试挂钩第 3 方应用程序,以便我可以在其屏幕上绘图。在屏幕上绘图很容易,我不需要帮助,但我似乎在使用SetWindowsHookExto 处理WH_GETMESSAGE. 我不知道最后两个参数要传递什么。

0 投票
1 回答
896 浏览

c++ - 从 Windows7 中的安全屏幕 (Ctrl+Alt+Del) 返回时未收到 WM_PAINT 消息

我需要检测安全屏幕的关闭,这是用户在 windows 下按下 Ctrl+Alt+Del 时出现的全屏。在 Xp 中,当此屏幕关闭时,我的应用程序会收到一条 wm_paint 消息,但在 windows 7 下,并不总是收到一条消息,可能只有 25% 的时间。

我尝试捕获 WM_WTSSESSION_CHANGE 消息,但如果用户注销然后重新登录到他们的帐户,我只会收到此消息。

不确定 Vista 中的行为,因为到目前为止我只在 XP 和 7 上对此进行了测试。

0 投票
1 回答
2051 浏览

c++ - 拦截 WM_PAINT 消息并据此采取行动

我正在尝试在 C++ 中拦截/挂钩桌面的 WM_PAINT 消息。我目前正在使用桌面手柄绘图,我唯一的问题是我不同步,所以它可能会闪烁。

我基本上想要的是一个可以检查 UINT 消息的 WM_PAINT 的语句。在这种情况下,我想做其他事情。

我要偷懒的问一下,有没有人把这个放在一小段代码里?获取桌面句柄是通过 GetDesktopWindow() 完成的;从此我也想检查 WM_PAINT。

0 投票
0 回答
1118 浏览

java - WM_PAINT、Java 和捕获隐藏窗口

首先声明一下,我是一名 Java 程序员,对 Windows API 几乎一无所知。所以请多多包涵。

我的目标是使用 Java 来捕获隐藏的窗口。我的目标平台是 Windows。我确实了解Robot该类用于捕获屏幕的可见部分。经过一番浏览,我发现了这三个链接,它们似乎是相关的:

JxCapture 和冯远的文章一样复杂。我的问题是这个,如果这个论坛的大师可以帮助我找到一个合理的解决方案。JxCapture 中建议的方法似乎并不过分复杂。有什么提示吗?执行此操作的 Visual Basic 脚本或一些 C# 代码将是一个很好的起点。

我相信当窗口被隐藏时,如果我向它发送一个按键事件或鼠标按下事件,它会强制它重新绘制自己,从而允许它自己被捕获java.awt.Robot。那是一种错觉,它不起作用。

另一方面,JxCapture 线程中的消息来自 2006 年;是不是 Sun 从那时起就包含了这样的功能而我只是不知道?

0 投票
1 回答
613 浏览

vb.net - 在任务栏上绘制图像时 Winforms 闪烁

现在,我正在窗口的标题栏上绘制一个 16x16 的小图像。它工作得很好,除了我无法弄清楚如何摆脱的令人讨厌的闪烁。

我只是像这样绘制图像:

每次更改某些内容(单击,鼠标悬停在角落按钮等)时,它都会重新绘制整个标题栏,并且在重新绘制期间我会闪烁。

还有其他人遇到过这个问题吗?

0 投票
3 回答
1975 浏览

c++ - win32:WM_PAINT 调用但不应该是!

我对 WM_PAINT 有疑问。基本上我希望在用户 WM_COMMAND 之后调用 WM_PAINT,但由于某种原因,它无论如何都会在主函数中调用。

根据 MSDN,WM_PAINT 仅在 UpdateWindow() 或 ReDrawWindow() 之后,或者当您将其作为消息 SendMessage 时才会自动调用。然而,我什么都不做。我基本上只想在用户交互之后调用 WM_PAINT,而不是之前......有什么办法可以解决这个问题吗?这是什么原因造成的?(我想这是一些奇怪的副作用,我找不到 >.< 的文档)

0 投票
1 回答
3257 浏览

c++ - 如何使用 Windows API 在透明窗口上绘制动画?

我正在尝试使用 Windows API 在具有透明背景的窗口上绘制动画。问题是我无法从窗口中删除以前的绘图。

我设置了以下参数:

但它仍然不起作用。您可以在所附图像中看到结果。我想要的动画是在屏幕上移动圆圈。相反,我得到的(如附图所示)是它们运动的伪影,因为在每次绘制之前都没有清除窗口。

请参阅下面的完整代码:

这是 5 帧后的结果: 替代文字

0 投票
3 回答
7466 浏览

c++ - 在Win32上,我可以在一段时间内禁用窗口的绘制吗?

是否有一个功能会在我更改对话框布局时冻结窗口重绘一段时间?

0 投票
1 回答
1288 浏览

windows-7 - Windows 7 发送不必要的 WM_PAINT 消息

我有一个关于奇怪地发送到我的窗口的 WM_PAINT 消息的问题。它发生在Windows 7上,不会发生在Windows XP上。

细节

在我的程序中,我有一个触发 GUI 更新的计时器,该计时器基于此 API 调用:

在为我的系统提供处理计时器到期的线程中,我做了一些 GUI 更新,即在窗口(0,0)->(57,50)中画一条线:

正如我在Windows XP上所期望的那样工作,但在Windows7上,这使得系统向这个窗口发送 WM_PAINT 消息,更新区域为:(0,0,58,51)。请注意,矩形比受线影响的正方形区域宽一个像素。

由于此绘图而到达的 WM_PAINT 是我不明白的。窗口没有被触摸/重叠/调整大小等。显然,这条线被系统识别为矩形无效。

这只发生在 Windows 7 中(与 Windows XP 不同)。

问题

W7 中的 WDM 或 Windows 处理有什么新东西吗?有什么办法可以避免这种情况?

这可能是我的程序或我正在使用的图形工具包中的一个错误(或两者兼而有之)。但为什么它只出现在 Windows 7 上呢?

感谢您提供任何线索!

丹尼

0 投票
5 回答
230 浏览

c++ - C++ 编程效率

这是我从 Microsoft Developer Network
http://msdn.microsoft.com/en-us/library/dd162487(v=VS.85).aspx复制的一些代码

我可能错了,但我认为每次编译器运行如下任何一个语句时:

计算机将创建一个新变量。至少这是合乎逻辑的想法,因为当你想创建一个新变量时,这是你写的,对吧?

我也一直认为,如果你有这样的代码块:

计算机将创建 100 个不同的变量,它们都具有相同的名称sum和一些包含在i

在上面的示例代码中,函数 WndProc 将在程序过程中被多次调用,但是函数创建的两个变量“ps”和“hdc”只会在函数执行的某些时候使用.

那么计算机会生成许多它永远不会使用的单独的、额外的 PAINTSTRUCT 和 HDC 变量吗?
像这样在 case WM_PAINT: 之后声明“ps”和“hdc”会不会更有效?