單擊對話方塊中某個按鈕,就動態建立乙個新按鈕。
首先將程式**恢復到建立模態對話方塊那個時候的**。非模態對話方塊實現起來比較困難。
為該對話方塊新增乙個按鈕:
滑鼠雙擊resourceview->idd_dialog,開啟資源編輯視窗。
用滑鼠單擊控制面板上面的按鈕控制項,在對話方塊適當位置上拖出乙個適當大小的按鈕;用滑鼠右鍵單擊該按鈕,選擇屬性對話方塊,將按鈕的id改為idc_btn_add,caption改為add。
現在實現單擊add,就動態建立乙個按鈕的功能。
1、為add按鈕單擊訊息新增訊息響應函式:
滑鼠右鍵單擊add按鈕->classwizard->選擇bn_clicked訊息,類名ctestdlg,成員函式名預設onbtnadd->add function,edit code。
就定義到該訊息響應函式。按鈕的單擊屬於通告訊息。
現在在按鈕單擊訊息響應函式中實現建立乙個按鈕的功能:
為ctestdlg類新增乙個私有的cbutton成員變數:m_btn。建立按鈕由cbutton類成員函式create函式來實現。
如果沒有ws_visible,一定要呼叫該按鈕物件的showwindow函式。執行如下圖。
但是當我們再次單擊add按鈕時,就會出現乙個非法操作對話方塊。
原因:再次單擊時,由於m_btn物件已經和乙個按鈕視窗繫結了,不能重複繫結另乙個按鈕視窗。
因此為ctestdlg類新增乙個私有bool型別成員變數:m_biscreated,用來表示是否建立了按鈕視窗。在該類的建構函式中初始化為false。
void ctestdlg::
onbtnadd()
else
}
如果繫結了,就銷毀這個按鈕視窗,解除繫結。
void ctestdlg::
onbtnadd()
else
}
同樣能實現上述功能。
現在在對話方塊上面放置3個靜態文字控制項和3個編輯框控制項。
將靜態文字框控制項的文字設定為:「numer1」,「numer2」,「numer3」。
為了調整對話方塊上多個控制項的位置,或者設定它們大小和間距,可以利用layout選單或者用dialog工具欄上相應的按鈕來調整。
1、利用control鍵選中三個靜態文字控制項,單擊dialog工具欄上面align left,使三個控制項按照左邊框對齊;單擊dialog工具欄上面make same size,使三個控制項具有相同的大小;單擊dialog工具欄上面space down,使三個控制項之間有相同的間距。
2、利用同樣的方法對三個編輯框控制項進行操作。
3、只有當前編輯視窗為對話方塊編輯視窗時,layout選單和dialog工具欄才會出現,dialog工具欄在視窗的底部。
下面實現:當單擊number1這個靜態文字時,將其文字變成「數值1」。
1、在此控制項上滑鼠右鍵單擊,屬性id是idc_static;在此控制項上滑鼠右鍵單擊,選擇classwizard,然後發現object ids列表中根本沒有這個id;其他兩個靜態文字框屬性id也是idc_static。
2、因為靜態文字框主要是起到標籤作用,不來響應滑鼠單擊這類訊息,所以他們id都是一樣。
3、所以要想讓靜態文字框響應滑鼠單擊訊息,需要修改其id,才能為它新增滑鼠單擊訊息響應函式。
4、將number1的id改為idc_number1,然後開啟classwizard,就可以在object ids列表中看到這個id了。
5、message列表中選擇bn_clicked訊息->add function->edit code。
6、控制項也是視窗,要想獲得靜態文字控制項上面的文字,需要利用cwnd類成員函式:getwindowtext。但是首先得獲得這個靜態控制項物件,利用cwnd類成員函式:getdlgitem。設定靜態物件的文字,利用cwnd類成員函式:setwindowtext。
cwnd* getdlgitem( int nid ) const;
void ctestdlg::
onnumber1()
else
}
if語句是乙個逗號表示式,表示式的結果是返回最後乙個表示式的返回值。
執行,發現沒有達到預期效果。
原因:靜態文字控制項在預設狀態下是不傳送通告訊息的。(控制項一般都是傳送通告訊息)。
解決方法:開啟number1靜態文字控制項屬性->style->勾選notify(通告)
執行,就能正常執行了。
VC 動態建立按鈕
vc 如何建動態按鈕 在類的定義中,定義如下變數 那麼在類的成員函式中就可以使用了如下來建立按鈕。注,建立第二次的時候會出錯。所以要用。來釋放再進行建立。藉由這個動態建立,弄清了一些mfc的構架,mfc是基於所有的類而得出的成果,乙個類派生與另乙個基類,從cwnd到cdialog就是乙個很好的例子。...
VC 動態建立按鈕
vc 如何建動態按鈕 在類的定義中,定義如下變數 那麼在類的成員函式中就可以使用了如下來建立按鈕。注,建立第二次的時候會出錯。所以要用。來釋放再進行建立。藉由這個動態建立,弄清了一些mfc的構架,mfc是基於所有的類而得出的成果,乙個類派生與另乙個基類,從cwnd到cdialog就是乙個很好的例子。...
02 動態建立按鈕
在viewcontroller.m檔案中 viewdidload 被系統呼叫,呼叫時機 載入view controll完畢之後 1 這是控制器的乙個方法 當控制器的view建立完畢的時候呼叫一次 2 void viewdidload 5354 void didreceivememorywarning...