2

私はWin32/Windows API(非MFC)に比較的慣れておらず、静的テキストコントロールのテキストの色を変更しようとしています。すでに黒で画面に描画されていますが、ボタンをクリックすると開くWindowsColorChooserダイアログを使用して別の色に変更したいと思います。これは可能ですか?

ボタンの場合、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 に答える