如何修改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(#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;

}

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

}

如何修改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(#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;

}

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

}

转载于:https://www.cnblogs.com/bcxx_qin/archive/2009/02/13/1390204.html

MFC如何修改窗口背景色(转载)相关推荐

  1. Ubuntu12.04如何修改窗口背景色为眼睛保护色来保护眼睛,强力推荐!!

    最近突然发现盯着屏幕看的久了,眼睛会非常的痛苦,因此想改变一下系统的窗口背景颜色.其实看代码主要是在Eclipse里面察看,因此一开始我就想改变Eclipse的文本编辑框的背景颜色,效果如下图所示. ...

  2. VC++ 深入详解 学习笔记(5) -- 修改窗口样式续

    From: http://elton.iteye.com/blog/301503 之前说过, 修改窗口大小,窗口样式的方法. 这里说明一下修改窗口的图标,光标和背景的方法. 修改窗口大小,样式是在创建 ...

  3. MFC中修改程序图标

    在使用MFC时,我们经常需要修改我们得到的exe文件的图标.如:写一个随机画圆的小程序,我们就希望该程序的图标是个圆或者是和圆有关的图标.所以,在这里我就记录一下我修改图标的步骤. 顺便提一下,我使用 ...

  4. MFC处理回车窗口消失

    MFC处理回车窗口消失   2011-04-24 12:21:31|  分类: C&C++&VC |  标签:对话框  回车  mfc  消失   |字号大中小 订阅 我的方法是:找到 ...

  5. android开发 修改标题栏背景_android开发修改状态栏背景色和图标颜色

    修改状态栏背景色和图标颜色 默认是黑底白字的,现在要改为白底黑字的 先看下效果图: Screenshot_2018-01-03-19-20-27-797_com.yiban1314..png 1.状态 ...

  6. C++中修改窗口名称和窗口颜色

    改变窗口的名称 在C++中修改窗口的名称我们需要用到C语言中的一个头文件 <windows.h> 以及函数SetConsoleTitle. //引用头文件 #include <ios ...

  7. 注册表第二部份、修改窗口滚动条的大小,锁定任务栏的大小和位置

    注册表第二部份.修改窗口滚动条的大小,锁定任务栏的大小和位置 2010-01-26 12:15:38|  分类: 若寒注册表学习|字号 订阅 转载于:https://www.cnblogs.com/b ...

  8. win7中能对窗口的排列方法是_win7系统窗口排列方式怎么修改?修改窗口排列方式方法...

    一般情况下,win7系统自动排列窗口的排列方式可分为层叠.纵向堆叠和并排,我们也可以自定义修改窗口排列方式,让窗口按照设置的进行排列.那么win7系统窗口排列方式怎么修改?其实修改方法很简单,接下去教 ...

  9. iOS 13 修改状态栏背景色

    iOS 13之后,苹果禁止KVC直接修改私有属性.以前用KVC修改状态栏背景色也会Crash. 新的解决办法如下. if (@available(iOS 13.0, *)) {UIView *stat ...

最新文章

  1. 奥卡姆剃刀是什么?机器学习实践中那些学习模型或者那些评估指标践行了这一理论?
  2. 为什么要学习DOS?
  3. HDU 4619 Warm up 2 最大独立集
  4. java.两个例子充分阐述多态的可拓展性
  5. DataWorks功能实践速览 05——循环与遍历
  6. RabbitMQ Network Partitions 处理策略
  7. Android启示录——开始Android旅途
  8. Idea插件——Translation 翻译插件安装与使用
  9. [原]Java程序员的JavaScript学习笔记(7——jQuery基本机制)
  10. linux 可定义信号数,Linux系统编程(20)——信号基本概念
  11. 压力测试网站_JMeter简单压力测试教程
  12. 探秘联想台北研发中心 扒一扒system x是如何炼成的?
  13. Anndroid 使用相机或相册打开图片
  14. API函数简介 转自洪恩在线
  15. 【Pyecharts50例】GEO航线图/lines
  16. Android之模拟网络请求返回http 502、400、401、402错误码
  17. iphone手机屏幕开发尺寸
  18. java web web.xml配置_web.xml配置详解
  19. ubuntu修改开机密码
  20. 线性代数学习笔记11-2:总复习Part2(相似对角化、对称矩阵、奇异值分解SVD)

热门文章

  1. Java复习打卡day40
  2. S0391-060使用CentOS6.x将82583v网卡down掉后网卡灯仍会亮起
  3. bash 将二进制转换为十进制_PowerShell把IP地址转换成二进制的方法
  4. STA series --- 8.Timing Verification (PARTII)
  5. PL/SQL:DBMS_PIPE包的使用
  6. div垂直居中-CSS元素垂直居中方法
  7. K8S (kubernetes)
  8. 淋巴瘤最新研究进展(2022年4月)
  9. 微信小程序画地块(微信开放文档中腾讯地图)
  10. java中的依赖是啥意思_java – “ – ”(箭头)在gradle的依赖图中是什么意思?