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

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

.

.

        

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

        

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

         1)窗口关闭

2)窗口隐藏

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

CDialogEx::OnOK();         

CDialogEx::OnCancel();  

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

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

 

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

         一个对话框窗口的显示要调用Domodal()函数,返回值为一个IDMSDN 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_OKID_CANCEL等控件ID,或者是窗口右上角的关闭按钮(ID_CANCEL),根据这个ID,我们可以进行相应的处理,比如:

         INT_PTR nRes = userloadDlg.Domodal();

         if(ID_OK == nRes)

{

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

}

……

 

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值