MFC menu 事件 dialog 對話框 傳遞 傳值

環境:VS2010

視圖部分:

1.  新建一個MFC 基於對話框的 應用程序,工程名爲 menu_status

2. 添加menu

右擊,添加資源

直接輸入


默認id


設置主對話框的Menu屬性爲剛纔新建的menu的ID,即IDR_MENU1



此時運行程序,即可看到預期的視圖。


下面是控制部分:

事件處理:





“關於”的點擊事件的函數名爲 OnAbout



新建 點擊“關於”時 彈出的對話框


新建的對話框如下,增加一個編輯框,刪除“取消”,重命名“確認”爲“關於”



子類化 新建的dialog,注意這裏繼承的基類選的是CDialog,不是CDialogEx;也可以選擇CDialogEx,它們的區別在重載OnInitDialog時體現,後面會詳細說明;

 


在主應用程序中聲明,txtedit1變量用於 主對話框和點擊“關於”彈出的對話框 之間的傳值



在AboutMe.h中,手動添加OnInitDialog



在AboutMe.cpp中,將edit控件的值設置爲theApp.txtedit1;

如果CAboutMe繼承自CDialogEx,則此處換爲 CDialog::OnInitDialog();





“關於”按鈕的點擊事件, 將edit控件的值保存到theApp.txtedit1中


在主對話框中,點擊 菜單-關於的處理如下


解釋: 執行完 CAboutMe am後,關於對話框的edit控件尚未實例化,不可操作它;

當執行完am.DoModal()後,關於對話框的edit控件尚未實例化,不可操作它;

緊接着在AboutMe中執行我們手動添加的OnInitDialog,當執行完 CDialog::OnInitDialog()後,edit控件纔可操作;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章