C++ Win32 窗口重叠事件

Posted

技术标签:

【中文标题】C++ Win32 窗口重叠事件【英文标题】:C++ Win32 Window Overlap Event 【发布时间】:2012-03-09 19:59:17 【问题描述】:

我正在创建一个窗口并在其上绘制一些线条。我已经完成了使用 CHOOSECOLOR 选择线条颜色的选项。问题是当显示颜色对话框时,当它在窗口中移动(拖动)时,绘制的线条会被擦除(就像 MS Paint 中的橡皮擦一样)。

我已经成功地重新绘制了颜色对话框成功关闭后被擦除的内容。但是随着颜色对话框的移动,立即重绘会更好。

有什么想法吗?

【问题讨论】:

你在WM_PAINT处理程序中画线吗? 你的WM_PAINT处理程序被调用了吗? @RaymondChen 我不明白“调用 WM_PAINT”。对不起。 WM_PAINT 处理程序上设置断点。这可能是您的窗口过程中的case WM_PAINTOnPaint 方法或您的框架提供的其他东西。验证断点是否命中。验证当您单步通过您的油漆处理程序时,您绘制了线条。 WM_PAINT 是当您的部分或全部窗口出于任何原因需要重绘时由 Windows 自动生成的消息。一个这样的原因是当您的窗口的一部分被另一个窗口覆盖时。 【参考方案1】:

将你的图形保存在链表或数组中,每次都重绘你在数据结构中的所有内容。

【讨论】:

我已经做到了。但它们仅在颜色对话框关闭后才会重绘,而不是在它移动时重绘。正如您在回答中所说的“每次”。我想检测“每次”,即我的窗口与另一个窗口重叠的事件(如果存在此类事件)。

以上是关于C++ Win32 窗口重叠事件的主要内容,如果未能解决你的问题,请参考以下文章

win32 (C++) 中的动画和事件问题

win32如何触发一个窗口中listcontrol控件的单击事件?

Win32API:如何向父窗口请求嵌入式 Windows 事件通知

.NET/Win32 - 检测属于另一个应用程序的窗口何时获得焦点的事件

在运行时创建事件处理程序而不使用 WndProc win32 c++

如何将键盘事件发送到 Pywin32 中的不同窗口?