在不声明成员变量的情况下更改按钮颜色
Change button color without declaring member variable
我正在尝试使用类函数setcolor
CColorbutton
按钮着色。当我声明按钮的成员变量时,它工作正常,但是当我通过GetDlgItem(IDC_BUTTON1)
直接获取句柄时它不起作用。谁能告诉我这个的解决方案?
CColorButton* pWnd = (CColorButton*)GetDlgItem(id+i);pWnd->SetColor(RGB(0,0,0),RGB(200, 153, 204));
首先:如果不为按钮控件声明变量,您将无法让它运行!
为什么?窗口变量和使用DDX-Control或使用CWNd::SubclassWindow是方法,子类化在MFC中工作。如果不进行子类化,则消息不会由 CCOlorButton 中使用的代码处理。
是的,您可以使用GetDlgItem和我对CColorButton进行硬转换,但这非常危险!为什么?您获得的窗口对象只是一个临时的 CWnd 对象,没有其他成员变量。如果调用 CColorButton 的特定成员函数(该函数使用其他数据成员),则可能会销毁内存/堆/堆栈内容。
使用 MFC 控件类,始终需要内存中某处的特定对象来温和地强制转换 GetDlgItem 返回的指针!
如果您有成员函数,则不需要强制转换。如果(出于任何其他原因)您需要强制转换 CWnd 指针,明智的做法是使用 STATIC_DOWNCAST/DYNAMIC_DOWNCAST 在出现问题时获取 ASSERT。
如果未声明并正确初始化 CColorButton 变量,则程序中没有 CColorButton 对象。所以你在召唤不存在的东西。你要求解决这个问题,但你已经知道解决方案了!
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- QML按钮点击功能执行顺序
- 更改 QT 中按钮的颜色
- 颜色为C++的单选按钮
- 使用winapi使用按钮更改窗口的背景颜色
- 当鼠标越过按钮时,我可以更改按钮背景颜色吗?
- 如何设置按钮的背景颜色,包括复选框按钮
- Qt 样式表按钮背景颜色
- 如何阻止Qt的setStyleSheet重置表单和按钮上的指定颜色?
- 单击按钮后对QML矩形的颜色设置动画
- 在不声明成员变量的情况下更改按钮颜色
- 如何获取指向颜色按钮的指针
- 如何更改QDockWidget浮动按钮的颜色
- 如何使用QSS为禁用按钮设置不同的背景颜色
- 为什么在CToolBar中使用高深度颜色的禁用按钮只是灰色框
- 如何获取标题栏窗口控件的 RECT(最大化、最小化、关闭按钮)?我尝试制作自定义颜色标题栏
- 更改 Windows 上的任务栏按钮颜色