背景色
来源:互联网 发布:淘宝直通车入门 编辑:程序博客网 时间:2024/04/29 09:53
MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的。为了改变frame窗口背景的颜色,只需要这个客户区的背景颜色就可以了。你必须自己处理WM_ERASEBKND消息。下面是工作步骤:
创建一个从CWnd类继承的类,就叫它CMDIClient吧;
在CMDIFrameWnd中加入CMDIClient变量;(具体情况看下面的代码)
class CMainFrame : public CMDIFrameWnd
{
...
protected:
CMDIClient m_wndMDIClient;
}
重载CMDIFrameWnd::OnCreateClient,下面是这段代码,请注意其中的SubclassWindow();
{
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));
}
- 背景色
- 背景色
- 设置标题栏背景色,背景色是自定义背景色
- 前景色与背景色
- 改变背景色
- 取消背景色
- 文本背景色
- css 背景色渐变
- 对话框改变背景色
- 桌面图标背景色解决方案
- C# DrawString 背景色
- DataGridView背景色
- 设置背景色
- 设置对话框背景色
- 修改窗口背景色
- 设置状态栏背景色
- 文本编辑框--背景色
- OPENGL 设置背景色
- tomcat内存溢出解决
- UTF-8 and Unicode FAQ
- MFC程序的诞生与死亡
- Oracle与SQL Server之间的数据迁移
- JAVA和C++的区别
- 背景色
- Delphi的下一步-2007-4-6
- 在ASP.NET 2.0中直接得到本页面生成的HTML代码
- 《Java与模式》学习笔记(5)——Singleton
- Linux 下安装支持SSL连接的 Mysql
- 详解css定位与定位应用
- Java开发工程师是怎样炼成的------按钮篇(Buttons)之三
- Gentoo Linux HPPA 手冊
- 网络攻击常用的命令(都是经典的)