建立無模式對話方塊

2022-12-21 02:48:03 字數 2011 閱讀 4158

5.3建立無模式對話方塊

無模式對話方塊與有模式對話方塊不同的是在建立後其他視窗都可以繼續接收使用者輸入,因此無模式對話方塊有些類似乙個彈出視窗。建立無模式對話方塊需要呼叫

bool cdialog::create( uint nidtemplate, cwnd* pparentwnd = null );之後還需要呼叫bool cdialog::showwindow( sw_show);進行顯示,否則無模式對話方塊將是不可見的。

相關**如下:

void cyourview::onopendlg(void)

在上面的**中我們新生成了乙個對話方塊物件,而且在退出函式時並沒有銷毀該物件。因為如果此時銷毀該物件(物件被銷毀時視窗同時被銷毀),而此時對話方塊還在顯示就會出現錯誤。那麼這就提出了乙個問題:

什麼時候銷毀該物件。我時常使用的方法有兩個:

在對話方塊退出時銷毀自己:在對話方塊中過載onok與oncancel在函式中呼叫父類的同名函式,然後呼叫destroywindow()強制銷毀視窗,在對話方塊中對映wm_destroy訊息,在訊息處理函式中呼叫delete this;強行刪除自身物件。相關**如下:

void ctestdlg1::onok()

void ctestdlg1::oncancel()

void ctestdlg1::ondestroy()

這種方法的要點是在視窗被銷毀的時候,刪除自身物件。所以你可以在任何時候呼叫destroywindow()以達到徹底銷毀自身物件的作用。(destroywindow()的呼叫會引起ondestroy()的呼叫)

通過向父親視窗傳送訊息,要求其他視窗對其進行銷毀:首先需要定義乙個訊息用於進行通知,然後在對話方塊中對映wm_destroy訊息,在訊息處理函式中呼叫訊息傳送函式通知其他視窗。在接收訊息的視窗中利用on_message對映處理訊息的函式,並在訊息處理函式中刪除對話方塊物件。

相關**如下:

/*更改對話方塊的有關檔案*/

ctestdlg2::ctestdlg2(cwnd* pparent /*=null*/): cdialog(ctestdlg2::idd, pparent)

}afx_data_init}

void ctestdlg2::onok()

void ctestdlg2::oncancel()

void ctestdlg2::ondestroy()

/*在訊息接收視窗中新增訊息對映*//*在標頭檔案中新增函式定義*/afx_msg long ondeldlgmsg(wparam wp,lparam lp);

/*新增訊息對映***/on_message(wm_delete_dlg,ondeldlgmsg)end_message_map()/*實現訊息處理函式*/

long cmy53_s1view::ondeldlgmsg(wparam wp,lparam lp)

/*建立對話方塊*/

void cmy53_s1view::ontest2()

在這種方法中我們利用訊息來進行通知,在window系統中利用訊息進行通知和傳遞資料的用法是很多的。

同樣無模式對話方塊的另乙個作用還可以用來在使用者在對話方塊中的輸入改變時可以及時的反映到其他視窗。下面的**演示了在對話方塊中輸入一段文字,然後將其更新到檢視的顯示區域中,這同樣也是利用了訊息進行通知和資料傳遞。

/*在對話方塊中取出資料,並向其他視窗傳送訊息和資料,將資料指標作為乙個引數傳送*/

void ctestdlg2::oncommbtn()

/*在訊息接收視窗中*//*對映訊息處理函式*/on_message(wm_dlg_notify,ondlgnotifymsg)

/*在檢視中繪製出字串m_szout*/void cmy53_s1view::ondraw(cdc* pdc)

/*處理通知訊息,儲存資訊並更新顯示*/

long cmy53_s1view::ondlgnotifymsg(wparam wp,lparam lp)

此外這種用法利用訊息傳遞資料的方法對有模式對話方塊和其他的視窗間通訊也一樣有效。**本節例子

《visual c++開發指南》聞怡洋/文

﹣相關報道

英語對話課教學模式

一 預習文字,匯入示標3 4分鐘 1 預習自測 可採用小組內互查的方式來檢查詞彙的背寫及運用 2 用多種方式創設學習情境,營造課堂氣氛,激發學生興趣,匯入新課。3 讓學生明確本節課的學習要求,激發求知慾望。學習目標應包括知識 情感和能力目標。課堂教學應在共性基礎上進行個性化拓展。以上環節及建議僅供教...

小學英語對話教學模式分析

作者 羅海蓉 新課程 上旬 2015年第08期 摘要 小學教育對人的一生都能產生重大影響,自從小學教學中加入了英語教學,教育專家一直在摸索適合小學生的英語教學模式,其中對話教學模式符合小學生發展特點,也符合英語教育要求的教學模式,從概念界定 對話教學模式的優勢 對話教學模式的實踐形式三個方面分析了小...

小學語文對話教學模式探索

對話 理念變革著傳統的小學語文教學的課堂。對話意味著教師對學生學習過程中主體地位的重視,但是教育教學實踐中有教師對此認識存在著一些偏差。如將 對話 僅僅看成是一種形式,忽視了對 對話 本質的思考,缺乏對學生思想情感的真正重視,縮小了 對話 構成者的範圍,將對話僅僅理解為 師生 之間的互動,忽視了 生...