ディスプレイサイズのダイアログを作成して、
その上をBMPが動くものを作っていたんだけど。
デバッグがやりにくかったので一時的にダイアログを
透明化したくてコードを追加しました・∀・
処理の流れ
- ダイアログに赤色が使われるところを透明にする設定をする。
- ダイアログを表示時に赤色で全部塗りつぶす。
- ダイアログを表示時、全面赤色に塗りつぶされたダイアログは透明になる。
xxxDialog.hの中で以下追加
CBrush m_brDlg; ← ダイアログの背景色ブラシ
CxxxDialog::OnInitDialogの中で以下追加
// ウィンドウの拡張スタイルを変更
ModifyStyleEx(0, WS_EX_LAYERED);
// レイヤードウィンドウの不透明度と透明のカラーキー
SetLayeredWindowAttributes(RGB(255 , 0 , 0), 0, LWA_COLORKEY);
// 赤色のブラシを作成する.
m_brDlg.CreateSolidBrush(RGB(255,0,0));
// WM_CTLCOLORのメッセージ関数をオーバーライド
HBRUSH
CxxxDialog ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: ここで DC の属性を変更してください。
switch(nCtlColor){
case CTLCOLOR_DLG: ←ダイアログの背景色
return (HBRUSH) m_brDlg;
default:
break;
}
// TODO: 既定値を使用したくない場合は別のブラシを返します。
return hbr;
}