码迷,mamicode.com
首页 > 编程语言 > 详细

11.MFC对话框

时间:2016-08-02 00:49:24      阅读:618      评论:0      收藏:0      [点我收藏+]

标签:

一、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;

    }     

二、控件操作

  

       

11.MFC对话框

标签:

原文地址:http://www.cnblogs.com/csqtech/p/5727563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!