11.MFC对话框

一、MFC对话框

  1.对话框的分类

    模式和非模式

  2.相关类

    CDialog类 - 父类CWnd类

    CCommonDialog - 父类是CDialog类,称为通用对话框类,包括颜色对话框、文件对话框、字体对话框、

             查找对话框、页面设置对话框、打印对话框。

    CPropertyPage类 - 父类是CDialog类,称为属性页对话框。

  3.CDialog类的使用类

   3.1 创建基于模式对话框的应用程序

    (1)添加对话框资源,与对话框类关联

    (2)在应用程序类的InitInstance函数中创建和显示对话框窗口

       CDialog::DoModal( )

    (3)对话框的关闭

       不要做任何处理,点击OK或关闭的时,会自动调用相关函数

       CDialog::OnOk

       CDialog::OnOk 

   3.2 创建基于非模式对话框的应用程序

    (1)添加对话框资源,与对话框类关联

    (2)窗口的创建和显示与一般的框架窗口类似

    (3)处理对话框的关闭(销毁对话框)

       重写CDialog::OnOk( )和CDialog::OnOk( )函数,在函数中调用DestroyWindow销毁对话框窗口

       重写CWnd::PostNcDestroy( )函数,在函数中完成对象的自我销毁,delete  this;

  4. DoModal函数的执行过程

    4.1 查找并加载资源

    4.2 将父窗口设置为不可用状态

    4.3 创建对话框,进入对话框的消息循环

    4.4 点击OK、Cancel或者关闭按钮时,跳出循环,并且隐藏对话框窗口

    4.5 将父窗口设置为可用和活动状态

    4.6 销毁对话框窗口

    4.7 释放对话框资源

    4.8 返回

    dlg.DoModal( )

    {      

      //1 查找加载资源

      HRSRC hResource  =  ::FindResource( hInst, m_lpszTemplateName,   RT_DIALOG );

      hDialogTemplate  =  LoadResource( hInst,  hResource );

      //2 将父窗口设置为不可用状态

      HWND hWndParent  =  PreModal( );

      ::EnableWindow( hWndParent, FALSE );

      //3 创建对话框,进入对话框的消息循环

      CreateRunDlgIndirect( lpDialogTemplate,  CWnd::FromHandle(hWndParent), hInst )

      {

        BOOL  bRet  =  CreateDlgIndirect( lpDialogTemplate,  pParentWnd,  hInst )

        {

          RunModalLoop( dwFlags ) ==  m_nModalResult; 

          //4 点击OK、Cancel或者关闭按钮时,跳出循环,并且隐藏对话框窗口      

          SetWindowPos( NULL, 0, 0, 0, 0,  SWP_HIDEWINDOW |

            SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER );

        }

      }

      //5 将父窗口设置为可用和活动状态

      ::EnableWindow( hWndParent,  TRUE );

      ::SetActiveWindow( hWndParent );

      //6 销毁对话框窗口

      DestroyWindow( );

      //7 释放对话框资源

      FreeResource( hDialogTemplate );

      return  m_nModalResult;

    }     

二、控件操作

  

       

时间: 2024-12-08 20:28:06

11.MFC对话框的相关文章

MFC——对话框(一)

创建对话框主要分两大步: 1.创建对话框资源,主要包括创建新的对话框模板.设置对话框属性和为对话框添加各种控件: 2.生成对话框类,主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 一.对话框类的数据交换和检验 在程序运行界面中,用户往往会改变控件的属性,例如,在编辑框中输入字符串,或者改变组合框的选中项,又或者改变复选框的选中状态等.控件的属性改变后MFC会相应的修改控件关联变量的值.这种同步的改变是通过MFC对话框类自动生成的成员函数DoDataExchange()来实现的,这也叫

MFC对话框显示BMP图片

1.MFC对话框显示BMP图片我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基于对话框的工程,名为Ttest. 对话框类为CTestDlg (一)    非动态载入图片. 方法1.先从最简单的开始,用picture 控件来实现. 步骤: 先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点

VS2010的MFC对话框程序中添加菜单栏的过程

VS2010的MFC对话框程序中添加菜单栏的过程 最近在看一个用MFC写的界面的项目的代码,在代码和界面中一直没有看到关于菜单控件是如何添加进对话框的,于是就百度了下.结果,与其它控件(Button等)添加的方式不一样: VS2010的MFC对话框程序中添加菜单栏的过程大致分了这五步. 一.将Menu加入Resource视图中 在WorkSpace中的Resource视图下,在左边目录的任意位置上,先右键-->选择Insert Resource(插入资源)选项,在弹出的对话框中选择Menu以后,

在MFC对话框程序中使用加速键

新建一个基于对话框的工程,添加一个按钮,修改按钮ID,这里为ID_BTN_OPENFILE,为按钮添加消息响应事件,这里我打开文件保存对话框: void CAccelDlg::OnBtnOpenfile() { // TODO: Add your control notification handler code here CFileDialog dlg (TRUE); dlg.DoModal (); } 为工程添加一个加速键资源,添加一条,注意ID要和按钮的ID相同,只有这样才能产生关联 为主

MFC对话框中显示背景图片

在MFC对话框中显示图片,四个步骤. 1.首先得在VC6.0或者VS2008(其他版本也是一样)中导入GDI文件.(网上下载:) GDI含义是图形设备接口,主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出. 分别将include文件夹和lib中的头文件全部添加到你的开发环境中的include或lib文件夹中.如:F:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include. 将gdiplus.dll导入

MFC对话框美化使其具有xp/win7风格(转载)

首先在RES目录下建一个文件,命名 windows.manifest 后缀为:.manifest 然后用记事本打开放入 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <

MFC对话框上添加PNG格式的图片的方法

使用CImage类 1.在stdafx.h中加入#include <atlimage.h> 2.在xxxdlg.h中添加CImage m_Img 3.在OnInitDialog中添加m_Img.Load(_T("res\\1.png")); 4.在OnPaint()添加显示png的代码: m_Img.Draw(GetDC()->m_hDC, 0,0); MFC对话框上添加PNG格式的图片的方法

201506022 CEF嵌入MFC对话框程序

最近在学习CEF,发现自己的编程能力实在太弱,看不懂应该怎么使用这个库,也不知道可以向谁请教,尽管官方说提供的cefclient示例程序已经很清楚了啊,但是我看不懂啊,自己一个人慢慢磨真的十分痛苦.最近结合网上的资料,学习了一些些吧,写下这篇日志,希望可以帮到后来的人(不过后来的人应该不会像我这么弱了的吧). 这是一个将CEF嵌入MFC对话框的程序,说来惭愧,到现在我都还不会怎么写一个好看的界面,只会在MFC上堆砌各种控件,唉. 这篇日志主要参考了以下资料: https://bitbucket.

MFC对话框

MFC的对话框 1 相关类 CDialog类-父类是CWnd,本质上也是一个窗口.是对话框类的顶层父类. CCommonDialog类-父类是CDialog类.称为通用对话框.MFC提供了6个通用对话框类,都是CCommonDialog类的子类, 包括: 文件对话框.颜色对话框.字体对话框.查找替换对话框.打印对话框和打印设置对话框. CPropertyPage-父类是CDialog类,属性页对话框. 2 分类 模式对话框和非模式对话框 3 使用MFC的类创建基于模式对话框的应用程序 3.1 插