在 Win32 中,如何使用更改颜色对话框来更改 STATIC 文本?
Posted
技术标签:
【中文标题】在 Win32 中,如何使用更改颜色对话框来更改 STATIC 文本?【英文标题】:In Win32, how can a Change Color dialog be used to change STATIC text? 【发布时间】:2013-01-31 15:09:51 【问题描述】:我对 Win32/Windows API(非 MFC)比较陌生,正在尝试更改静态文本控件的文本颜色。它已经以黑色绘制到屏幕上,但我想使用 Windows 颜色选择器对话框将其更改为另一种颜色,该对话框在单击按钮时打开。这可能吗?
对于按钮,WM_COMMAND
消息在单击时处理。到目前为止,我已经写了:
CHOOSECOLOR ccColour;
ccColour.lStructSize = sizeof(ccColour);
ccColour.hwndOwner = hWnd;
ccColour.rgbResult = crLabelTextColour;
ccColour.Flags = CC_FULLOPEN | CC_RGBINIT;
if (ChooseColor(&ccColour) == TRUE)
// crLabelTextColour is a COLORREF global variable assigned on loading the program
crLabelTextColour = ccColour.rgbResult;
然而,这段代码在if
语句处出现未处理的异常而失败,我不知道为什么!其他例子好像是这样写代码的。
【问题讨论】:
一次只问一个问题。只需点击按钮即可询问其他人。 【参考方案1】:ChooseColor() 崩溃,因为您没有完全初始化 CHOOSECOLOR 结构。您只设置了 3 个字段,其余字段将包含垃圾。您需要对所有内容进行零初始化,这很简单:
CHOOSECOLOR ccColour = 0;
【讨论】:
太棒了——谢谢!我还尝试了CHOOSECOLOR ccColour = sizeof(CHOOSECOLOR);
,它也很有效。此外,lpCustColors
结构成员似乎不是可选的。以上是关于在 Win32 中,如何使用更改颜色对话框来更改 STATIC 文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 win32API 中更改静态窗口的背景颜色? [复制]