case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = HDC( wParam );
HWND hwndStatic = HWND( lParam );
if( hwndStatic == 対象のウィンドウハンドル )
{
SetBkColor( hdcStatic, GetSysColor( COLOR_WINDOW ) );
return LRESULT( GetSysColorBrush( COLOR_WINDOW ) );
}
break;
}
こちらでは、こんな感じで実現できました
環境、Windows 2K VC6+SP5 SDK
>たみあ様
え!!本当ですか!?
こちらでも、先ほど確認したとき、ほぼ同じやり方で(ウィンドウハンドルの判別部分
のみ違う)やっていたのですができなかったのですが・・・・(^^;A
ウィンドウハンドル判別は、どうせ、所持していたとしても一つしかないからいいか、と
思って省きました。
この処理をしている場所はコンボボックスのフックしたプロシージャ内でよろしいんです
よね!?
当方のコードはこんな感じです。
一つ白状(?)しますと、使用しているコモンダイアログボックスは、「ファイルを開く」
ダイアログです。
~ダイアログのWM_INITDIALOGメッセージ内~
HWND hCmb = GetDlgItem(GetParent(hDlg), cmb1);
DefComboBoxProc = (WNDPROC)SetWindowLong(hCmb,GWL_WNDPROC,
(LONG)HookComboBoxProc);
~フックプロシージャ~
LRESULT CALLBACK HookComboBoxProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM
lParam)
{
switch(msg)
{
case WM_CTLCOLORSTATIC:
SetBkColor( (HDC)wParam, GetSysColor( COLOR_WINDOW ) );
return LRESULT( GetSysColorBrush( COLOR_WINDOW ) );
}
return ::CallWindowProc(DefComboBoxProc,hWnd, msg, wParam, lParam);
}
DefComboBoxProcはグローバル変数として宣言してあります。
>>この処理をしている場所はコンボボックスのフックしたプロシージャ内でよろしいんですよ
ね!?
いえいえ、親ウィンドウのウィンドウプロックです
>たみあ様
できました!!どうもありがとうございました!!
いや~、見てくれはそんなたいしたことないですがとても感動してます!!
でもまさか親ダイアログのプロシージャ内で処理するとは・・・・・
いままでお付き合いいただいて本当にありがとうございます。m(_ _)m
記述するコードはウィンドウハンドル判別以外は
return LRESULT( GetSysColorBrush( COLOR_WINDOW ) );
のみでいけました。
ちなみにテキストの色はどうされましたでしょうか?
テキストはもう一度描画することで解決させました。
またお知恵おお借りすることがあると思いますのでそのときはよろしくお願いいたします。
jan