在 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 中更改静态窗口的背景颜色? [复制]

在win32中更改无边框窗口的颜色

更改整个控制台背景颜色 (Win32 C++)

如何在 mfc 中更改 CImage 对象的背景颜色?

如何更改 UIActivityViewController 触发的发送消息对话框中的颜色?

如何更改小吃店的背景颜色?