填充矩形类型的图片框,C++WINAPI

Filling a PictureBox of Type Rectangle, C++ WINAPI

本文关键字:C++WINAPI 类型 填充矩形      更新时间:2023-10-16

我正在重新创建一个模拟Windows颜色编辑对话框的应用程序(即来自Paint),用于研究目的
https://i.stack.imgur.com/UGdtU.jpg

我创建了一个外观相同的对话框,使用PictureBox作为"颜色容器"。我将PictureBox类型设置为"矩形",我认为使用LOGBRUSH填充矩形对象会更容易;而不是将PictureBox设置为"位图"类型并将位图的每个像素设置为必要的颜色。

我遇到的问题是……我不知道如何将PictureBox控件的HWND与LOGBRUSH一起使用来填充它。

我在查找PictureBox通知和消息以与控件通信时遇到问题。

有人能给我一些关于如何与PictureBox控件正确通信的见解吗?

使用具有SS_SIMPLE样式且没有文本的静态控件。然后在父窗口中处理WM_CTLCOLORSTATIC消息。然后,父窗口可以返回系统用于绘制背景的笔刷。请记住,除非是系统刷,否则释放刷是您的责任。即,如果您使用CreateSolidBrush或类似功能创建了笔刷,那么一旦不再使用,就需要释放笔刷,否则会导致GDI对象泄漏。对于您提议的实现,您可以在初始化对话框时创建一组笔刷句柄,并为特定框提供适当的笔刷以响应WM_CTLCOLORSTATIC。当对话框即将销毁时,可以释放笔刷手柄。

另一种实现方式是创建一个自定义控件,该控件只保存窗口私有数据中数组中各种框的颜色,并手动绘制它们以响应WM_PAINT。