标  题: 如何创建和使用无模式对话框                       
发信人: Pacific (无情~~~Nolove), 信区: VisualC
发信站: BBS 水木清华站 (Fri Oct 16 17:10:49 1998)


    MFC将模式和无模式对话封装在同一个类中,但是使用无模式对话需要几              
个对话需要几个额处的步骤。首先,使用资源编辑器建立对话资源并使用                 
ClassWizard创建一个CDialog的派生类。模式和无模式对话的中止是不一样的:           
模式对话通过调用CDialog : : EndDialog 来中止,无模式对话则是调用                 
CWnd: : DestroyWindow来中止的,函数CDialog : : OnOK和CDialog : : OnCancel        
调用EndDialog ,所以需要调用DestroyWindow并重置无模式对话的函数。                 
void CSampleDialog : : OnOK ( )                                                  
{                                                                                
    // Retrieve and validate dialog data .                                       
    if (! UpdateData (TRUE) )                                                    
    {                                                                            
        // the UpdateData rountine will set focus to correct item                
        TRACEO (" UpdateData failed during dialog termination .\n") ;            
        return ;                                                                 
    }                                                                            
                                                                                 
    //Call DestroyWindow instead of EndDialog .                                  
    DestroyWindow ( ) ;                                                          
}                                                                                
                                                                                 
void CSampleDialog : : OnCancel ( )                                              
{                                                                                
    //Call DestroyWindow instead of EndDialog .                                  
    DestroyWindow ( ) ;                                                          
}                                                                                
    其次,需要正确删除表示对话的C++对象。对于模式对来说,这很容易,需要创        
建函数返回后即可删除C++对象;无模式对话不是同步的,创建函数调用后立即返回,      
                                                                                 
因而用户不知道何时删除C++对象。撤销窗口时工作框调用CWnd : : PostNcDestroy,      
                                                                                 
可以重置该函数并执行清除操作,诸如删除this指针。                                 
void CSampleDialog : : PostNcDestroy ( )                                         
  {                                                                              
    // Declete the C++ object that represents this dialog .                      
    delete this ;                                                                
}                                                                                
    最后,要创建无模式对话。可以调用CDialog : : DoModal创建一个模式对放,        
要创建一个无模式对话则要调用CDialog: : Create。下面的例子说明 了应用程序         
是如何创建无模式对话的:                                                         

--
        老鸟有交待,中鸟要等待,菜鸟要忍耐。
        老鸟级功夫:吹牛、聊天、玩MUD 、发呆。
        中鸟级功夫:睡觉、灌水、玩游戏、NT&VC。
        菜鸟级功夫:学习、泡妞、玩篮球、And so on

        My E-Mail: Nolove@263.net

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: yazhou.bbs@bbs.net.t]
※ 修改:.fzx 于 Aug  9 16:51:04 修改本文.[FROM: heart.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.225毫秒