現在、いくつかのソフトウェア用のGUIを作成しようとしていますが、いくつかの静的コントロールに問題があります。私のウィンドウプロシージャには、静的コントロールが描画されるタイミングに関するWM_CTLCOLORSTATICメッセージがあります。メッセージの中には、ウィンドウのハンドルを描画する必要のあるハンドルと比較し、それに応じてウィンドウ関数を実行するIFELSEステートメントがあります。1つは静的テキストコントロールで、描画時に背景色が設定され、もう1つは静的コントロールの境界線を描画します。
case WM_CTLCOLORSTATIC:
{
if (hwnd = ANNwindow->settingsborder)
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)ANNwindow->backgroundbrush;
}
else if (hwnd = ANNwindow->settingstext)
{
DrawEdge((HDC)wParam, &ANNwindow->rect, EDGE_ETCHED, BF_BOTTOMRIGHT);
return (LRESULT)ANNwindow->backgroundbrush;
}
}
settingsborderとsettingstextは、GUIを作成するためのクラスのウィンドウハンドルです。
if elseステートメントの順序を逆にすると、順序に関係なく、最初のステートメントのみが実行されます。背景色の変更がIFの下にある場合は、それが行われます。境界線の描画がIFの下にある場合、それはそれを行いますが、else部分の下には何もありません。問題を見つけることができないので、これはC++言語を使用する際の単純なエラーですか。助けてください、ありがとう。
PSドローエッジ部分では、最初に静的コントロールボーダーを作成し、次にその上でドローエッジを使用します。別の方法で行う必要がありますか?ありがとう。