gpt4 book ai didi

c++ - 填充矩形类型的 PictureBox,C++ WINAPI

转载 作者:行者123 更新时间:2023-11-28 07:13:20 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

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

关于c++ - 填充矩形类型的 PictureBox,C++ WINAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com