環境: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控件纔可操作;