html中frame背景颜色,如何修改frame窗口的背景颜色?

MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的。为了改变frame窗口背景的颜色,只需要这个客户区的背景颜色就可以了。你必须自己处理WM_ERASEBKND消息。下面是工作步骤:

创建一个从CWnd类继承的类,就叫它CMDIClient吧;

在CMDIFrameWnd中加入CMDIClient变量;(具体情况看下面的代码)

#include "MDIClient.h"

class CMainFrame : public CMDIFrameWnd

{

...

protected:

CMDIClient m_wndMDIClient;

}

重载CMDIFrameWnd::OnCreateClient,下面是这段代码,请注意其中的SubclassWindow();

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,

CCreateContext* pContext)

{

if ( CMDIFrameWnd::OnCreateClient(lpcs, pContext) )

{

m_wndMDIClient.SubclassWindow(m_hWndMDIClient);

return TRUE;

}

else

return FALSE;

}

最后要在CMDIClient中加入处理WM_ERASEBKGND的函数。

如何改变view的背景颜色?

若要改变CView,CFrameWnd或CWnd对象的背景颜色需要处理WM_ERASEBKGND消息,下面就是一个范例代码:

BOOL CSampleView::OnEraseBkgnd(CDC* pDC)

{

//设置brush为希望的背景颜色

CBrush backBrush(RGB(255, 128, 128));

//保存旧的brush

CBrush* pOldBrush = pDC->SelectObject(&backBrush);

CRect rect;

pDC->GetClipBox(&rect);

//画需要的区域

pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),

PATCOPY);

pDC->SelectObject(pOldBrush);

return TRUE;

}

若要改变CFromView继承类的背景颜色,下面是一个范例代码:

HBRUSH CMyFormView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT

nCtlColor)

{

switch (nCtlColor)

{

case CTLCOLOR_BTN:

case CTLCOLOR_STATIC:

{

pDC->SetBkMode(TRANSPARENT);

//不加任何处理或设置背景为透明

}

case CTLCOLOR_DLG:

{

CBrush* back_brush;

COLORREF color;

color = (COLORREF) GetSysColor(COLOR_BTNFACE);

back_brush = new CBrush(color);

return (HBRUSH) (back_brush->m_hObject);

}

}

return(CFormView::OnCtlColor(pDC, pWnd, nCtlColor));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值