2013-01-31 90 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