2

我对 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我不确定为什么!其他示例似乎编写了这样的代码。

4

1 回答 1

1

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

  CHOOSECOLOR ccColour = {0};
于 2013-01-31T15:43:19.843 回答