0
点赞
收藏
分享

微信扫一扫

MFC一种让所有对话框同一配色的方法

Go_Viola 2022-01-28 阅读 45
mfcc++

核心思想:

       核心思想是定义一个画了颜色的基类对话框,让其他对话框类继承该基类,毫不费劲的得到对话框背景颜色的绘制,
        实现整个项目拥有统一的配色。


关键一:

更改基类对话框背景颜色

	1.
		(1)基类中声明画刷CBrush m_brush;
		(2)在基类构造函数创建画刷m_brush.createSolidBrush(RGB(255,125,125));
		(3)重载afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),WM_CTLCOLOR消息触发,表示即将重绘控件
			  {
				if (nCtrlColor == CTLCOLOR_DLG)//改变对话框背景颜色
				{
					return m_Brush;
				}
			  }

关键二

自定义子对话框的父类(用VS自动添加Class的话,只能从CDlialogEx之类的继承)

		2.1)创建基类CBaseColorDlg:CDialogEx,并删除基类的资源以及IDD
			(2)修改基类的构造函数声明CBaseDlg(UINT nIdTemplate, CWnd* pParent = NULL); 
				※关键是添加了一个nIdTemplate参数,是对话框资源ID,可以将指定的对话框传给CDialogEx构造函数
			(3)修改基类的构造函数实现
			CColorBaseDlg::CColorBaseDlg(UINT nIdTemplate, CWnd* pParent /*=NULL*/)
			: CDialogEx(nIdTemplate, pParent)
			{

			}4)用VS自动添加对话框类,继承自CDialogEx,最后将头文件和源文件所有的CDialogEx,
				改成CColorBaseDlg,完成对话框父类的指定。
				CDlgSub::CDlgSub(CWnd* pParent /*=NULL*/)
				: CDialogEx(CDlgSub::IDD, pParent)
				↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
				CDlgSub::CDlgSub(CWnd* pParent /*=NULL*/)
				: CColorBaseDlg(CDlgSub::IDD, pParent)


举报

相关推荐

0 条评论