我在主視窗中使用DoModal的方法顯示了一個模態視窗,并且把主視窗屏蔽了,但是在新的視窗中我又做了一個按鍵,想要回傳到主視窗,應該怎么做?

uj5u.com熱心網友回復:
把ShowWindow(SW_HIDE);和最后的OnOK() 注釋掉即可。或者只將OnOK()換成ShowWindow(SW_SHOW);
uj5u.com熱心網友回復:
如果我把ShowWindow(SW_HIDE)和OnOK注釋掉的話,在我進入新的視窗市,主視窗并沒有屏蔽掉,依然在顯示。OnOK注釋掉了,debug會彈出一個視窗,.exe has triggered a breakpointuj5u.com熱心網友回復:
你模態對話框DoModal()回傳以后,你的對話框就銷毀了~uj5u.com熱心網友回復:
在回傳之前,我需要關閉主視窗,在回傳后,需要把主視窗再顯示出來uj5u.com熱心網友回復:
那你DoModal()前后呼叫ShowWindow(SW_HIDE/SW_SHOW);即可。uj5u.com熱心網友回復:
我在回傳主視窗的按鍵函式中,使用的this-〉DestroyWindow,然后在主視窗的DoModal后加SHOW,然后debug,主視窗依然不顯示uj5u.com熱心網友回復:
ShowWindow(SW_HIDE);xxx dlg(this);
dlg.DoModal();
ShowWindow(SW_SHOW);
uj5u.com熱心網友回復:

意思是你在DoModal() 顯示你的NetworkManager類關聯的模塊對話框的前后呼叫ShowWindow來隱藏和顯示主視窗,并不是要去銷毀主視窗。DetroyWindow呼叫是銷毀非模態對話框的,而模態對話框是呼叫EndDialog()來銷毀的,EndDialog對非模態對話框來說只是隱藏了該視窗而已,你可以后續呼叫ShowWindow(SW_SHOW)將其顯示出來。
比如你在主對話框的按鈕BN_CLICKED回應函式中彈出NetworkManager類關聯的模態對話框
C主對話框類Dlg::OnBnClicked()
{
ShowWindow(SW_HIDE);
NetworkManager dlg;
dlg.DoModal();
ShowWindow(SW_SHOW);
}
即可,其它地方不需要額外處理。
uj5u.com熱心網友回復:
謝啦,明白你的意思了
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
https://blog.csdn.net/schlafenhamster/article/details/7212299基于 CDialog 的應用程式一開始便被隱藏的方法"再探
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/35243.html
標籤:界面
上一篇:請大神提供下提取字模的思路
下一篇:圓形分割的問題
