问题标签 [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 投票
0 回答
142 浏览

c++ - Win32 c ++将RGB颜色迭代到WM_PAINT中的窗口

我有一个具有以下界面的 VS2019 c++ 应用程序: 界面.png

它对“单次”测量(通过“测量样本”按钮)非常有效。测量完成,所有收集的数据显示在界面上 a) 以图形形式,b) 数字形式和 c) 以“颜色”形式,如您在右侧的黄色大方块中所见(模拟) .

我开发的下一步是在屏幕上显示一系列 RGB 颜色,进行测量并将它们保存到文件中。为了做到这一点,我只需将测量设备连接到屏幕上,然后依次连接我需要的所有 RGB 颜色,每次都进行测量。

所以我添加了一个“测量屏幕”按钮。哪个使用此代码:

我“期望”代码工作的方式是,每个 Invalidate 调用都会向 WM_PAINT 事件发送一条消息,并以这种方式处理:

IOW,只要未引发“inProgress”标志,WM_PAINT 事件就会“正常”处理消息。只有当消息来自“MEASURE_SCREEN”函数时,矩形才会填充指定的 RGB 颜色(在全局范围内指定)。

好吧,这行不通?该函数遍历颜色 OK 并每次调用“Invalidate”,它会达到我的“InProgress”逻辑,但“新”颜色永远不会显示在屏幕上,直到控制退出该函数。

我一直在寻找如何做到这一点已经有一段时间了,我想我可能会寻求你的友好和耐心的帮助。

0 投票
1 回答
54 浏览

c - 在 Windows 上绘制客户区时“清除更新区域”是什么意思?

在这里画窗提到:

绘制完客户区后,清除更新区域,这会告诉操作系统它不需要发送另一个 WM_PAINT 消息,直到发生变化。

可以编写以下代码:

这里的清除是什么意思?我们不希望我们绘制的内容被清除。