标 // TODO:在此添加额外的初始化代码
m_brush.CreateSolidBrush(RGB(255,255,200));//初始化画刷 m_brush.CreateSolidBrush(RGB(255,255,200));//初始化画刷
return TRUE; …… // 除非设置了控件的焦点,否则返回 TRUE
8
Windows 程序
设计 VC++.NET 实验指导书
计算机科学系 郭清宇
HBRUSH CBgColorDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性
return m_brush;
// TODO: 如果默认的不是所需画笔,则返回另一个画笔 //return hbr; } 4. 编译执行程序
实例 2:模态对话框
1.新建项目 类型:Visual C++项目;模板:MFC 应用程序;项目名称:ModalDlg;应用 程序类型:单文档. 2.新建对话框 选择菜单"视图,资源视图" ,打开资源视图编辑框,插入新对话框资源. 设计新对话框,标题为"模态对话框" . 3.添加代码 (1)增加一个头文件 MyDlg.h #pragma once // CMyDlg 对话框 class CMyDlg : public CDialog { DECLARE_DYNAMIC(CMyDlg) public: CMyDlg(CWnd* pParent = NULL); // 标准构造函数 virtual ~CMyDlg(); // 对话框数据 enum { IDD = IDD_DIALOG1 }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支 持 DECLARE_MESSAGE_MAP() }; (2) 增加一个 C++文件 MyDlg.cpp // MyDlg.cpp : 实现文件 // #include "stdafx.h" #include "ModalDlg.h" #include "MyDlg.h" // CMyDlg 对话框 IMPLEMENT_DYNAMIC(CMyDlg, CDialog)
9
Windows 程序设计 VC++.NET 实验指导书 计算机科学系 郭清宇
CMyDlg::CMyDlg(CWnd*
pParent /*=NULL*/) : CDialog(CMyDlg::IDD, pParent) { } CMyDlg::~CMyDlg() { } void CMyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMyDlg, CDialog) END_MESSAGE_MAP() (3)在资源视图中双击 Menu,IDR_MAINFRAME,打开菜单编辑器,添加新菜单. 在视图菜单的状态栏下增加"模态对话框"菜单,并在其属性栏中将 ID 修改为 ID_VIEW_MODALDLG. 选择菜单"视图,类视图" ,选择 CmodalDlgView 类,打开其属性菜单;单击属 性菜单中的事件按钮,选择 ID_VIEW_MODALDLG,点击左侧的"+"号,选择 "COMMAND" ,在右侧为 CmodalDlgView 类添加菜单响应函数 OnViewModaldlg(). Void CmodalDlgView::OnViewModaldlg() { //TODO: 在此添加命令处理程序代码 CMyDlg m_Dlg;//创建自定义对话框对象 m_Dlg.DoModal ();//启动对话框 } (4)在 ModalDlgView.cpp 中的起始位置添加 #include "MyDlg.h" 4.编译,运行 编译, 编译 运行程序,选择视图,模态对话框命令,显示模态对话框.
实例 3:非模态对话框
1.新建项目 类型:Visual C++项目;模板:MFC 应用程序;项目名称:ModallessDlg; 应用程序类型:单文档. 2.新建对话框 选择菜单"视图,资源视图" ,打开资源视图编辑框,插入新对话框资源. 设计新对话框,标题为"非模态对话框" . 3.添加代码 (1)增加一个头文件 MyDlg.h
10
Windows 程序设计 VC++.NET 实验指导书 计算机科学系 郭清宇
#pragma once // CMyDlg 对话框 class CMyDlg : public CDialog { DECLARE_DYNAMIC(CMyDlg) public: CMyDlg(CWnd* pParent = NULL); // 标准构造函数 virtual ~CMyDlg(); // 对话框数据 enum { IDD = IDD_DIALOG1 }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 DECLARE_MESSAGE_MAP() };
(2)增加一个 C++文件 MyDlg.cpp #include "stdafx.h" #include "ModallessDlg.h" #include "MyDlg.h" // CMyDlg 对话框 IMPLEMENT_DYNAMIC(CMyDlg, CDialog) CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg::IDD, pParent) { } CMyDlg::~CMyDlg() { } void CMyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMyDlg, CDialog) END_MESSAGE_MAP() (