非模態視窗

2021-06-01 08:22:08 字數 981 閱讀 5727

開發過程中想實現新執行緒建立子視窗處理子視窗的事情,父視窗仍然可以相應使用者請求的功能。

利用「非模態視窗」實現

非模態對話方塊在工作列上顯示

為什麼dll遠端建立的非模式對話方塊一閃就沒了,而模式對話方塊就不會

vc中建立無模式對話方塊的問題(建立無模式對話方塊,為什麼生成的對話方塊一閃就沒了?)

模式對話方塊和非模式對話方塊的區別

從**上看建立非模式對話方塊很簡單

cmydialog* m_mydlg;

m_mydlg=new cmydialog(pwnd); //堆分配非模態對話方塊記憶體空間, //cmydialog(cwnd* pparent=null)為建構函式

m_mydlg->create(idd_mydialog,pwnd);

m_mydlg->showwindow(sw_show);

但是如果上面的**時在乙個函式或執行緒內部執行的話

建立的類物件是儲存在區域性儲存空間的,函式或執行緒結束後,它的區域性儲存空間被釋放,new出來的物件也就沒了

從而導致對話方塊一閃而過。

解決方案:

1.使用全域性變數,即對話方塊物件使用全域性變數。

2.函式或執行緒中新增訊息迴圈(緊跟在showwindow函式之後即可)

msg msg; 

while(getmessage(&msg,null,0,0))//新增訊息迴圈,防止視窗消失

}

3.

C 模態視窗和非模態視窗

c 視窗對話方塊一般分為兩種型別 模態型別 modal 與非模態型別 modeless 所謂模態對話方塊,就是指除非採取有效的關閉手段,使用者的滑鼠焦點或者輸入游標將一直停留在其上的對話方塊。非模態對話方塊則不會強制此種特性,使用者可以在當前對話方塊以及其他視窗間進行切換下例中的form1使用模態方...

Qt基礎 模態與非模態視窗

設定置頂非模態視窗 在qt中,qdialog是所有對話方塊視窗類的基類,不只是對話方塊有模態與非模態區分,qwidget和qmainwindow視窗也可以設為模態,因此文章不稱模態 非模態對話方塊,而叫做模態 非模態視窗。模態 modal 視窗 視窗彈出後,沒關閉之前,不可以對同一應用程式的其他視窗...

MFC建立非模態子視窗

在第乙個視窗中,建立第二個視窗,如下 include second.h 第二個視窗標頭檔案 void ctestdlg onbnclickedbutton6 如果想在第二個視窗中銷毀子視窗。方法如下 void seconddig postncdestroy void seconddig oncanc...