在Win32中,如何使用“更改颜色”对话框来更改STATIC文本?

时间:2013-01-31 15:09:51

标签: winapi

我是Win32 / Windows API(非MFC)的新手,我正在尝试更改静态文本控件的文本颜色。它已被黑色绘制到屏幕上,但我想使用Windows Color Chooser对话框将其更改为另一种颜色,该对话框在单击按钮时打开。这可能吗?

对于该按钮,点击时会处理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 个答案:

答案 0 :(得分:1)

ChooseColor()崩溃,因为您没有完全初始化CHOOSECOLOR结构。您只设置3个字段,其余将包含垃圾。您需要对所有内容进行零初始化,操作简单:

  CHOOSECOLOR ccColour = {0};