2 非模態對話方塊的建立

2021-07-24 21:38:58 字數 1773 閱讀 9971

模態對話方塊和非模態對話方塊在建立對話方塊資源和生成對話方塊類上是沒有區別的,

所以上一講中建立的 

idd_tip_dialog

對話方塊資源和 

ctipdlg 

類都不需要修改。

step 1: .

在additiondlg.h

中包含ctipdlg

標頭檔案並定義

ctipdlg

型別的指標成員變數。詳細

操作方法是,在

additiondlg.cpp

中刪除之前新增的

#include "tipdlg.h"

,而在additiondlg.

h 中新增

#include "tipdlg.h"

,這是因為我們需要在

additiondlg.h

中定義ctipdlg

型別的指

針變數,所以要先包含它的標頭檔案;然後在

additiondlg.h

中為cadditiondlg

類新增privat

e 成員變數

ctipdlg *m_ptipdlg;。

step2:

在cadditiondlg

類的建構函式

中初始化成員變數

m_ptipdlg

。如果cpp

檔案中函式

太多,我們可以在

class view

上半個檢視中找到

cadditiondlg

類,再在下半個檢視中找到

其建構函式雙擊,中間客戶區域即可馬上切到建構函式的實現處。在建構函式體中新增

m_ptipdlg = null;

step3:

將上一講中新增的模態對話方塊顯示**注釋或刪除掉,新增非模態對話方塊的建立和顯

示**。 

void cadditiondlg::onbnclickedaddbutton()

2. 18. // 顯示非模態對話方塊

19. m_ptipdlg->showwindow(sw_show);

20.21. // 將各控制項中的資料儲存到相應的變數

22. updatedata(true);

23.24. // 將被加數和加數的加和賦值給 m_editsum

25. m_editsum = m_editsummand + m_editaddend;

26.27. // 根據各變數的值更新相應的控制項。和的編輯框會顯示 m_editsum 的值

28. updatedata(false);

29. }

step4:

因為此非模態對話方塊例項是動態建立的,所以需要手動刪除此動態物件來銷毀對話方塊。

我們在

cadditiondlg

類的析構函式

中新增刪除**,但是

mfc並沒有自動給出析構函式,

cadditiondlg::~cadditiondlg()

2. 9. }

這時需要我們手動新增,在對話方塊物件析構時就會呼叫我們自定義的析構函式了。在

addit

iondlg.h

檔案中為

cadditiondlg

新增析構函式宣告:

~cadditiondlg();

,然後在

additiondl

g.cpp

檔案中新增析構函式的實現,函式體如下:

模態對話方塊和非模態對話方塊的建立彈出

一 模態對話方塊的建立及顯示 1 windows對話方塊分為兩類 模態對話方塊和非模態對話方塊。模態對話方塊 當它彈出後,本應用程式其他視窗將不再接受使用者輸入,只有該對話方塊響應使用者輸入,在對它進行相應操作退出後,其他視窗才能繼續與使用者互動。非模態對話方塊 它彈出後,本程式其他視窗仍能響應使用...

模態對話方塊與非模態對話方塊

1.對話方塊分類 按工作方式不同,可將對話方塊分成兩類 模態對話方塊 modal 在關閉模態對話方塊之前,程式不能進行其他工作 如一般的 開啟檔案 對話方塊 非模態對話方塊 modeless 非模態對話方塊開啟後,程式仍然能夠進行其他工作 如一般的 查詢與替換 對話方塊 2.對話方塊建立 模態對話方...

模態對話方塊和非模態對話方塊

模態對話方塊和非模態對話方塊的區別 在這裡我就說的比較通俗易懂了,就是當你開啟乙個模態對話方塊時,你的焦點不能轉移到程式的其他視窗上,也就是你只能先響應模態對話方塊,才能進行成下面的操作。而非模態對話方塊則相反,你可以不用管它,照常能夠將其他視窗啟用。建立模態對話方塊,主要是應用對話方塊的domod...