Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 填充矩形C+类型的图片盒+;WINAPI_C++_Winapi_Picturebox - Fatal编程技术网

C++ 填充矩形C+类型的图片盒+;WINAPI

C++ 填充矩形C+类型的图片盒+;WINAPI,c++,winapi,picturebox,C++,Winapi,Picturebox,为了便于学习,我正在重新创建一个模拟Windows颜色编辑对话框的应用程序。 我创建了一个外观相同的对话框,使用PictureBox(es)作为“颜色容器”。 我将PictureBox类型设置为“矩形”,我想使用LOGBRUSH填充矩形对象会更容易;而不是将PictureBox设置为键入“位图”,并将位图的每个像素设置为必要的颜色 我遇到的问题是。。。我不知道如何使用带有LOGBRUSH的PictureBox控件的HWND来填充它 我很难找到PictureBox通知和消息与控件进行通信 有谁能

为了便于学习,我正在重新创建一个模拟Windows颜色编辑对话框的应用程序。

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

我遇到的问题是。。。我不知道如何使用带有LOGBRUSH的PictureBox控件的HWND来填充它

我很难找到PictureBox通知和消息与控件进行通信


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

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


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

如果我没记错的话,它将在LPCREATESTRUCT中。您可以尝试找出该控件是否向您发送WM_CTLCOLORxxx(可能是WM_CTLCOLORSTATIC)消息。