MFC 对话框的使用
2012-03-24 09:31
134 查看
常规的对话框分为模态和非模态,建立对话框的一般过程为:1.在资源当中添加好对话框资源2.通过在对话框资源当中为对话框添加类来为对话框添加成员变量及成员函数等对话框的类一般都是继续自CDialog或CDialogEx,在成员变量当中有一个枚举变量指明了对话框资源:enum { IDD = IDD_DIALOG2 };对话框中有两个函数一般需要重载,分别是afx_msg void OnOK();afx_msg void OnCancel();他们的消息映射可以使用:ON_BN_CLICKED(IDOK, &NewDialog::OnBnClickedOk)ON_BN_CLICKED(IDCANCEL, &NewDialog::OnBnClickedCancel对于对话框的数据交换,可以通过在对话框资源上与一个变量进行关联来实现,CDialog有一个DoDataExchange()的函数来管理对话框的数据交换,关联后,会在对话框的相应类当中添加一个成员变量,及在其DoDataExchange()当中添加一行:DDX_Text(pDX, IDC_EDIT1, m_Edit);//苦中IC_EDIT1是控件ID,m_Edit是刚关联的变量名,这是一个值关联关联好后如果需要更新数据,可以调用:
UpdateData(TRUE);将控件上的数据写入成员变量UpdateData(FALSE);将变量写入控件.这样就可以在视图类当中直接产生对象,然后调用DoModel方法就可以调用对话框了MFC的预置的对话框常用的有文件对话框和字体选择对话框,一般的文件对话框创建过程为:char* filters="Wodk|*.doc|bmp|*.bmp|All|*.*";//类型选择CFileDialog fileDlg(TRUE,NULL,"*.doc",NULL,filters);int result=fileDlg.DoModal();//获取返回值CString openfileName;if(result==IDOK){openfileName=fileDlg.GetFileName();//获取选择的文件名}字体选择对话框一般的创建过程为:
LOGFONT m_logFont;//一种字体信息数据结构 CFontDialog fontDialog(&m_logFont);//以字体数据结构为参数初始化对话框 int resultID=fontDialog.DoModal(); if(resultID==IDOK) { CFont font; CFont *oldFont;
COLORREF color;
CClientDC client(this);
fontDialog.GetCurrentFont(&m_logFont);//获取选择字体名字 font.CreateFontIndirectA(&m_logFont);//创建字体 color=fontDialog.GetColor();//获取选中的颜色
oldFont=(CFont*)client.SelectObject(font);//设置绘图区
client.SetTextColor(color); client.TextOutA(20,60,"adfadsfasdf"); }非模态对话框一般用动态创建的方法建立,过程一般与模态差不多,不过在资源文件当中要对非模态对话框添加一个WS_VISIBLE的风格.非模态对话框有两个比较重要的函数方法,在动态创建好非模态对话框的对象指针后,如果对象已经生成但末显示,可以调用SetActiveWindow()函数激活.如果对象末生成,可以调用父类的函数:CDialog::Create(ClassName::IDD);//ClassName::IDD为要创建的对话框的ID信息.通常这个方法需要重载
属性页的建立:
属性页有两个部分,一个是Page,一个是Sheet,后者可以说是前者的容器,前者是一个个独立的对话框.对于前者的建立与上无异,不过在添加类的时候要用CPropertyPage作为基类继承.而属性页Sheet并不需要为其建立一个对话框资源,只要在解决方案当中添加一个MFC类,这个类继承自CPropertySheet就可以了,一般情况下在Sheet的构造当中添加属性页面,如:
AddPage(&m_pPropertyPage);//苦中m_mPropertyPage是一个属性页的对象,可以作为Sheet的成员变量然后在view当中对属性页进行初始化显示就可以了:
CMySheet sheet("MySheet");sheet.DoModel();
相关文章推荐
- 在MFC对话框中使用Google地图
- MFC,对话框滚动条使用
- MFC对话框显示图片(使用Picture控件)
- 调用mfc扩展型dll使用对话框
- 回调函数中使用MFC类的成员或对话框控件的简单方法
- MFC之文件选择对话框使用
- MFC学习笔记之多对话框中使用定时器
- MFC文件选择对话框CFileDialog的使用
- 在MFC对话框程序中使用加速键
- mfc 使用jpg图片做对话框背景
- vs2008 MFC 对话框 grid++ report 使用经验总结
- 基于MFC对话框工程如何使用另一工程下的对话框
- MFC中对话框的使用
- VC/MFC如何使用CreateEx()创建自己的对话框资源
- MFC对话框使用标签页控件
- 不使用MFC创建对话框---简单的计算器
- 回调函数中使用MFC类的成员或对话框控件的简单方法
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- MFC学习笔记--将对话框收获的输入在View中使用
- MFC中OnInitDialog()函数的使用和使用SetWindowText()修改对话框的名称