2013-01-31 140 views
2

我是相对较新的Win32/Windows API(非MFC),并且正在尝试更改静态文本控件的文本颜色。它已经以黑色显示在屏幕上,但我想使用Windows颜色选择器对话框将其更改为另一种颜色,该对话框在单击按钮时打开。这可能吗?在Win32中,如何使用“更改颜色”对话框来更改STATIC文本?

对于该按钮,单击处理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声明,我不知道为什么!其他例子似乎写这样的代码。

+0

一次只问一个问题。只需点击Ask Question按钮询问另一个。 –

回答

1

ChooseColor()崩溃,因为您没有完全初始化CHOOSECOLOR结构。你只设置3个字段,其余的将包含垃圾。你需要零初始化所有事情,很简单:

CHOOSECOLOR ccColour = {0}; 
+0

辉煌 - 谢谢!我也尝试过'CHOOSECOLOR ccColour = {sizeof(CHOOSECOLOR)};'也有效。另外,它看起来'lpCustColors'结构成员不是可选的。 – BWHazel