QQ登录

只需一步,快速开始

上位机MFC如何更改主框架窗口的颜色

[ 复制链接 ]
子框架窗口的颜色可以在视窗内更改。
多文档时,子框架窗口可以缩小,进而显示出主框架窗口的背景。
那么主框架窗口的背景颜色如何更改呢?
我们可以事先准备一个从CWnd派生的类,在此窗口类中先通过消息WM_ERASEBKGND处理函数实现窗口的背景的设置。
然后再用此类将框架窗口子类化。
例如从CWnd派生一个类,使用类向导生成类时,在基于选项卡上没有CWnd,我们可以随意选择一个窗口类。
下面是类的头文件,与源文件
  1. #if !defined(AFX_MDICLIENTWND_H__7F7D43A4_7FDE_4215_99E7_3700998324FB__INCLUDED_)
  2. #define AFX_MDICLIENTWND_H__7F7D43A4_7FDE_4215_99E7_3700998324FB__INCLUDED_

  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // MDIClientWnd.h : header file
  7. //

  8. /////////////////////////////////////////////////////////////////////////////
  9. // CMDIClientWnd frame

  10. #define CFrameWnd CWnd
  11. class CMDIClientWnd : public CFrameWnd
  12. {
  13.         DECLARE_DYNCREATE(CMDIClientWnd)
  14. public:
  15.         CMDIClientWnd();           // protected constructor used by dynamic creation
  16.         virtual ~CMDIClientWnd();
  17.         CBrush m_Brush;
  18. // Attributes
  19. public:

  20. // Operations
  21. public:

  22. // Overrides
  23.         // ClassWizard generated virtual function overrides
  24.         //{{AFX_VIRTUAL(CMDIClientWnd)
  25.         //}}AFX_VIRTUAL

  26. // Implementation
  27. protected:
  28.        

  29.         // Generated message map functions
  30.         //{{AFX_MSG(CMDIClientWnd)
  31.         afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  32.         //}}AFX_MSG
  33.         DECLARE_MESSAGE_MAP()
  34. };

  35. /////////////////////////////////////////////////////////////////////////////

  36. //{{AFX_INSERT_LOCATION}}
  37. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

  38. #endif // !defined(AFX_MDICLIENTWND_H__7F7D43A4_7FDE_4215_99E7_3700998324FB__INCLUDED_)

复制代码
源文件
  1. // MDIClientWnd.cpp : implementation file
  2. //

  3. #include "stdafx.h"
  4. #include "wer.h"
  5. #include "MDIClientWnd.h"

  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif

  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMDIClientWnd

  13. IMPLEMENT_DYNCREATE(CMDIClientWnd, CFrameWnd)

  14. CMDIClientWnd::CMDIClientWnd()
  15. {
  16.                 //创建画刷
  17.         m_Brush.CreateSolidBrush(RGB(0x99, 0xCC, 0xFF));
  18. }

  19. CMDIClientWnd::~CMDIClientWnd()
  20. {
  21. }


  22. BEGIN_MESSAGE_MAP(CMDIClientWnd, CFrameWnd)
  23.         //{{AFX_MSG_MAP(CMDIClientWnd)
  24.         ON_WM_ERASEBKGND()
  25.         //}}AFX_MSG_MAP
  26. END_MESSAGE_MAP()

  27. /////////////////////////////////////////////////////////////////////////////
  28. // CMDIClientWnd message handlers

  29. BOOL CMDIClientWnd::OnEraseBkgnd(CDC* pDC)
  30. {
  31.         //获得客户区大小
  32.         CRect rect;
  33.         GetClientRect(rect);                               

  34.         //填充背景
  35.         pDC->FillRect(rect, &m_Brush);

  36.         return TRUE;
  37. //        return CFrameWnd::OnEraseBkgnd(pDC);
  38. }
复制代码
然后就是在主框架窗口类的使用此类,        CMDIClientWnd m_wndClient;
主框架窗口创建时调用        m_wndClient.SubclassWindow(m_hWndMDIClient);就可以设置主框架窗口的背景了。
这里m_hWndMDIClient是主框架窗口自身 的成员变量。

上位机MFC如何更改主框架窗口的颜色

上位机MFC如何更改主框架窗口的颜色

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC如何更改主框架窗口的颜色.rar 
文件大小:32.13 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索