您的位置:首页 > 其它

MFC中弹出对话框,父窗口消失不见的实现

2013-10-06 11:46 246 查看

MFC中弹出对话框,父窗口消失不见的实现

.
.
        

        
在某一次做一个图书管理系统的时候,在“注册”、“用户登陆”、“管理员登陆”之间的转换令我头疼了半天,其实就是想要实现的功能大致上是,比如在“用户登陆”窗口点击了“注册”,然后就跳转到了“注册窗口”,而且原来的窗口消失不见了,类似的实现三个窗口之间的转换。

        

        
说到窗口的消失不见,其实实现的方式有两种思路:

        
(1)窗口关闭

(2)窗口隐藏

对于第(1)种,我们通常使用以下函数就可以将一个窗口结束了、关闭了:

CDialogEx::OnOK();         

CDialogEx::OnCancel();  

        
对于第(2)种,我们需要调用函数使之隐藏:

                   GetParent()->ShowWindow(SW_HIDE); //得到当前窗口的父窗口(这个时候我们在当前显示的窗口的处理函数中,所以要得到当前窗口的父窗口的指针,然后HIDE)

 

        
大体的思路是这样的,但是具体的实现,还是要在程序中认真的斟酌,而且关系窗口退出的返回值问题也向大家简单说一下(对于初学者,包括我自己^_^):

        
一个对话框窗口的显示要调用Domodal()函数,返回值为一个ID,MSDN Library中的介绍如下:

         An int value that specifies the value of the nResult parameter that was passed to the CDialog::EndDialog member function,
which is used to close the dialog box. The return value is –1 if the function could not create the dialog box, or IDABORT if some other error occurred, in which case the Output window will contain error information from GetLastError.

        
简单的说,返回值为触发窗口关闭的ID,如ID_OK、ID_CANCEL等控件ID,或者是窗口右上角的关闭按钮(ID_CANCEL),根据这个ID,我们可以进行相应的处理,比如:

         INT_PTR nRes = userloadDlg.Domodal();

         if(ID_OK == nRes)

{

                   MessageBox(_T(“通过ID_OK关闭窗口”));

}

……

 

希望对MFC对话框窗口的学习有帮助。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐