1 / 19

对话框

对话框. 对话框是一个弹出式窗口,是 Windows 应用程序的常见元素之一。 MFC 的 Cdialog 类封装了对话框功能; 对话框分为模态对话框和非模态对话框; 模态对话框是一个有系统菜单、标题栏、边框等界面元素的弹出式窗口。 调用模态对话框时,系统会自动禁止使用这个窗口和它所有的子窗口,直至该模态对话框关闭或销毁;如 Microsoft Word 中的 [ 打开 ] 对话框. 模态对话框的调用. CMyDlg dlg; dlg.DoModal();. 非模态对话框.

rowdy
Download Presentation

对话框

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 对话框 • 对话框是一个弹出式窗口,是Windows应用程序的常见元素之一。 • MFC的Cdialog类封装了对话框功能; • 对话框分为模态对话框和非模态对话框; • 模态对话框是一个有系统菜单、标题栏、边框等界面元素的弹出式窗口。 • 调用模态对话框时,系统会自动禁止使用这个窗口和它所有的子窗口,直至该模态对话框关闭或销毁;如Microsoft Word中的[打开]对话框

  2. 模态对话框的调用 CMyDlg dlg; dlg.DoModal();

  3. 非模态对话框 • 非模态对话框是一个有系统菜单、标题、边框的弹出式窗口,非模态对话框不会禁止使用其父窗口。如Microsoft Word的文档窗口、[查找]对话框。

  4. 非模态对话框的调用 CNoModalDlg *pDlg;//定义对话框指针 pDlg=new CNoModalDlg(this);//分配实例对象空间 pDlg->Create(IDD_NOMODALDLG); //创建非模态对话框 pDlg->ShowWindow(SW_SHOW); //显示非模态对话框

  5. Cdialog中常用成员函数及功能

  6. 通用对话框 • Windows系统提供了一些通用对话框,如文件对话框、颜色对话框、字体对话框。 • MFC分别使用CFileDialog类、CColorDialog类、和CFontDialog类封装其功能。

  7. 通用对话框的使用步骤 • 声名对话框类型的变量; • 显示对话框之前,设置通用对话框的属性; • 调用DoModal函数,显示模态对话框; • 获得DoModal函数的返回值,判断用户是单击了“确定”或“取消”按钮; • 若用户单击了“确定”按钮,则得到用户使用对话框时所做的选择。

  8. 字体对话框 • 字体对话框用于为选定的文字设置字体; • 字体对话框的使用步骤如下: • 定义CFontDialog类型的变量; • 调用DoModal()函数,显示字体对话框; • 调用GetCurrentFont()函数,得到选种的字体信息,并以其构造Cfont类型的变量; • 将Cfont类型的字体选入当前绘图环境; • 应用该字体显示文字; • 恢复老字体;

  9. CFontDialog类常用成员函数

  10. 颜色对话框 颜色对话框的使用步骤: • 定义CColorDialog类型的变量,并用构造函数对其进行初始化; • 调用Do Modal()函数,显示颜色对话框; • 调用CColorDialog::GetColor()函数,获得用户选择的颜色信息。

  11. 文件对话框 文件对话框的构造函数: CFileDialog::CFileDialog( )中参数lpszFilter用于指定可供选择的文件类型及相应的扩展名,格式如下: “Chart Files(*.xls)|*.xls|Worksheet Files(*.xls)|*.xls|All Files(*.*)|*.*||”

  12. CFileDialog类的成员函数

  13. 通用对话框编程举例 • 利用MFC AppWizard新建一个单文档应用程序,工程名为CommonDialog • 利用资源面版的菜单编辑器,在主菜单中添加一列“通用对话框”菜单,并添加三个菜单项,ID号分别为ID_FONT,ID_COLOR,ID_FILE,标题分别为“字体对话框”、“颜色对话框”、“文件对话框”

  14. 通用对话框编程举例 • 定义变量 • 在项目工作区窗口中,选择类面版中的视图类CCommonDialogView,单击右键,在弹出的菜单中选择“Add Member Variable”菜单项,为视图类添加两个成员变量:m_font和m_color,变量的类型分别为:LOGFONT和 COLORREF。

  15. 为视图类CCommonDialogView的以下成员函数添加代码为视图类CCommonDialogView的以下成员函数添加代码 CCommonDialogView::CCommonDialogView() { // TODO: add construction code here m_color=RGB(255,0,0); //初始化颜色变量 memset(&m_font,0,sizeof(m_font)); //将m_font所在内存空间清零 m_font.lfWeight=50; //设置字体宽度为50 m_font.lfHeight=50; //设置字体高度为50 strcpy(m_font.lfFaceName,"黑体"); //设置字体名 }

  16. void CCommonDialogView::OnDraw(CDC* pDC) { CCommonDialogDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CString str="欢迎使用Visual C++6.0"; CRect rect; GetClientRect(rect); CFont newfont,*oldfont; newfont.CreateFontIndirect(&m_font); oldfont=pDC->SelectObject(&newfont); pDC->SetBkColor(RGB(128,128,128)); pDC->SetTextColor(m_color); pDC->TextOut(rect.right/4,rect.bottom/2,str); pDC->SelectObject(oldfont); }

  17. 编写菜单项消息处理函数,调用通用对话框 使用类向导:Class name选择CcommonDialogView,Object Ids选择ID—_FONT,Message选择COMMAND,代码如下: void CCommonDialogView::OnFont() { // TODO: Add your command handler code here CFontDialog font; //定义字体对话框变量 int i=font.DoModal();//调用字体对话框,并返回函数值 if(i==IDOK) //如果选用了OK按钮 { font.GetCurrentFont(&m_font); //得到选用的字体信息,存入m_font变量 Invalidate(); //使窗口重画 } }

  18. 颜色对话框代码如下: void CCommonDialogView::OnColor() { // TODO: Add your command handler code here CColorDialog color; //定义颜色对话框变量 int i=color.DoModal();//调用颜色对话框,并返回值 if(i==IDOK) //如果选择了OK {m_color=color.GetColor(); //得到选中的颜色,存入m_color变量 Invalidate(); //使窗口重画 } }

  19. 文件对话框代码如下: void CCommonDialogView::OnFile() { // TODO: Add your command handler code here CString filter,str; //定义字符串变量 filter="Worksheet Files(*.xls)|*.xls|All Files(*.*)|*.*||"; //定义过滤串 CFileDialog file(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,filter,NULL);//定义文件对话框 int i=file.DoModal();//调用文件对话框,并返回值 if(i==IDOK) //如果选择了OK按钮 { str=file.GetFileName(); //得到选中的文件名 MessageBox(str); //显示文件名 } }

More Related