MDI 親ウィンドウの背景色を変更する.
クラスウィザードの「クラスの追加」にて CMDIClient(名前は例です)を作成する.
Class Type は generic CWnd とする.
MDIClient.h
class CMDIClient : public CWnd // MDI Client 用クラス
{
protected:
virtual WNDPROC* GetSuperWndProcAddr();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
};
MDIClient.cpp
BOOL CMDIClient::OnEraseBkgnd(CDC* pDC)
{
CBrush nBrs;
// 背景色のブラシを作成
nBrs.CreateSolidBrush(RGB(192,192,192));
// 現在の背景色のブラシを変更
HBRUSH hOldBrs = (HBRUSH)SetClassWord(GetSafeHwnd(),
GCW_HBRBACKGROUND, (WORD)(HBRUSH)nBrs.m_hObject);
BOOL status = CWnd::OnEraseBkgnd(pDC);
// 背景色を以前のブラシに戻します
SetClassWord(GetSafeHwnd(), GCW_HBRBACKGROUND, (WORD)hOldBrs);
nBrs.DeleteObject();
return status;
}
WNDPROC* CMDIClient::GetSuperWndProcAddr()
{
static WNDPROC NEAR pfnSuper = NULL;
return &pfnSuper;
}
MainFrm.h
#include "MDIClient.h"
class CMainFrame : public CMDIFrameWnd
{
protected:
CMDIClient m_NewMDIClient; // MDI client のオブジェクト
};
MainFrm.cpp
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if(!m_NewMDIClient.SubclassWindow(m_hWndMDIClient)){
// MDI クライアントのサブクラスを作成
TRACE("SubclassWindow failed.\n");
}
return 0;
}
参照
MDI 親ウィンドウ背景に描画
SDI 背景色変更
FormView の背景色変更