現在、一部のソフトウェアのGUIを作成しようとしていますが、いくつかの静的コントロールに問題があります。私のウィンドウプロシージャでは、静的なコントロールが描画されるときに私はWM_CTLCOLORSTATICメッセージを持っています。メッセージの中には、IF ELSEステートメントがあります。このステートメントは、ウィンドウのハンドルと描画する必要があるウィンドウのハンドルを比較し、それに応じてウィンドウ関数を実行します。 1つは静的テキストコントロールで、背景色は描画時に設定され、もう1つは静的コントロールの境界線を描画します。WindowsのプロシージャメッセージのためにElseステートメントが機能しない場合
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++言語を使用する際の単純なエラーですか?助けてください、ありがとう。
P.S. Drawedgeの部分については、最初に静的なコントロールの境界線を作成し、その上にdrawedgeを使用します。これは別の方法で行うべきですか?ありがとう。
うわー、私はその1つ、助けをありがとう。 – contrapsych