织梦CMS - 轻松建站从此开始!

360BC游戏

当前位置: 主页 > 游戏资讯

MFC设置窗口背景颜色(很全很强大)

时间:2025-09-25 19:15来源:本站 作者:admin666 点击:
如何修改frame窗口的背景颜色 MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的。为了改变frame窗口背景的颜色只需要这个客户区的背景颜色就可以了。你必须自己处理WM_ERASEBKND消息

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

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

 

如何改变view的背景颜色?

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

 

若要改变CFromView继承类的背景颜色

下面是一个范例代码:

 

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

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

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

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

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

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

 

如何改变view的背景颜色?

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

 

若要改变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));

}

 

来自:http://www.cnblogs.com/bcxx_qin/archive/2009/02/13/1390204.html

(责任编辑:蚂蚁团队)

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

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

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

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

#include "MDIClient.h"
class CMainFrame : public CMDIFrameWnd
{
...
protected:
CMDIClient m_wndMDIClient;
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

else
return FALSE;
}

BOOL CSampleView::OnEraseBkgnd(CDC* pDC)
{

//设置brush为希望的背景颜色
CBrush backBrush(#ff8080);

//保存旧的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;

}

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));

}

#include "MDIClient.h"
class CMainFrame : public CMDIFrameWnd
{
...
protected:
CMDIClient m_wndMDIClient;
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

else
return FALSE;
}

BOOL CSampleView::OnEraseBkgnd(CDC* pDC)
{

//设置brush为希望的背景颜色
CBrush backBrush(#ff8080);

//保存旧的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;

}

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容