○ダイアログとコントロールの背景色の変更

ダイアログ以外の通常のウインドウでもコントロールの背景色を変更できます。

buttonはオーナー描画でしか色がかえられません。

■ダイアログプロシージャに以下のWM_CTLCOLOR???を追加する


HBRUSH bkColorBrush=CreateSolidBrush(RGB(200,255,255));//背景色のブラシを用意する

//ダイアログプロシージャー
BOOL CALLBACK DlgProc(HWND hDlg,UINT msg,WPARAM wp,LPARAM lp){
	switch (msg){
		case WM_CTLCOLORDLG://ダイアログの背景色
			return (LRESULT)bkColorBrush;
			break;
		case WM_CTLCOLORSTATIC://static Radio Check の背景色
			//lpに各コントロールのハンドルが入ってきます。
			//lpを見て各々のコントロールの色を変えられます
			SetBkMode(((HDC)wp),TRANSPARENT);
			SetTextColor (((HDC)wp),RGB(200,0,0));//文字の色
			return (LRESULT)bkColorBrush;
			break;
		case WM_CTLCOLOREDIT://Edit の背景色
			//lpに各コントロールのハンドルが入ってきます。
			//lpを見て各々のコントロールの色を変えられます
			SetBkMode(((HDC)wp),TRANSPARENT);
			SetTextColor (((HDC)wp),RGB(200,0,0));//文字の色
			return (LRESULT)bkColorBrush;
			break;



▼色(ブラシ)を動的に変更した時は以下を呼び出して再描画する。

InvalidateRect(hDlg, NULL,1);
UpdateWindow(hDlg);



▲トップページ > Windows と C++