VC中,使用dlg.DoModal()打開一個(gè)窗口,除了使用IDOK或者IDCANCEL可以關(guān)閉當(dāng)前窗口外,如何關(guān)閉當(dāng)前窗口 假如,我在主窗體上做三個(gè)按鈕,分別打開三個(gè)新的窗體,但是我想打開新窗體的時(shí)候要關(guān)閉當(dāng)前窗體,不然使用dlg.DoModal()可以重復(fù)打開同一個(gè)窗體,哪位大哥可以具體點(diǎn)給我說明下嗎,謝謝
1 回答

藍(lán)山帝景
TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
你描述的內(nèi)容相互矛盾。
如果你的DoModal只在同一個(gè)窗口中調(diào)用,那么是不可能反復(fù)點(diǎn)擊打開多個(gè)的,這是模態(tài)對話框的特征。如果是要求按鈕只允許按一次,那么DoModal返回IDOK后Enable函數(shù)禁止按鈕就可以了。
DoModal存在父子窗口關(guān)系,你不可能關(guān)閉了父窗口而保留子窗口。因此如果你要“關(guān)閉”的是主窗口,那么只能是隱藏,不能使關(guān)閉。
無論OnOK還是OnCancel,最終都是通過EndDialog結(jié)束的對話框,這個(gè)函數(shù)在對話框中隨時(shí)可以調(diào)用。而正確使用時(shí),不是只有兩個(gè)ID的按鈕才可以結(jié)束對話框,任何自定義按鈕中調(diào)用基類的CDialog::OnOK();這個(gè)語句,都可以結(jié)束對話框并將DoModal返回IDOK消息。
- 1 回答
- 0 關(guān)注
- 237 瀏覽
添加回答
舉報(bào)
0/150
提交
取消