1. 程式人生 > >《深入淺出MFC》第十章 MFC與對話框

《深入淺出MFC》第十章 MFC與對話框

按鈕 找到 格式 必須 接收 派生 類的創建 資源 false

可以通過對話框編輯器設計對話框模板,在資源視圖中選擇添加一個對話框資源。通過屬性頁可以設置對話框或控件的屬性。

通過VS環境中的格式,tab順序可以設置控件的tab順序,只需按指定的順序依次點擊控件即可。

在VS開發環境中選擇“格式”菜單中的測試對話框可以直接測試對話框。

對話框調整完成並保存後會在RC文件中保存相應的數據。

通過編輯對話框模板來完成對話框的外貌設計,通過設計對話框的專用類來完成對話框的行為。通過派生MFC的CDialog類來產生對話框的專用類。

不需要手動為對話框創建專有類,通過ClassWizard完成對話框類的創建,並將對話框上的控件映射到類的成員變量上,這也就是所謂的DDX(Dialog Data eXchange),並且可以為這些變量設置允許值的規則,這就是所謂的DDV(Dialog Data Validate)。

派生的對話框類的構造函數首先調用基類的構造函數,並把對話框模板的ID以及父窗口指針傳遞給構造函數,這樣才有辦法在創建對話框時能從RC文件中找到對話框資源。

在對話框的Class Wizard中可以快速的為控件添加消息處理函數,在Object IDs中找到要添加消息的控件ID,然後選中要處理的消息並點擊按鈕“添加處理函數”即可,並且也可以通過不同的標簽頁添加對話框消息,重寫對話框虛函數,添加控件成員變量和方法等。

對話框的Data Map不同於其它的Map,每筆Data Map都有兩筆記錄,一個負責DDX,一個負責DDV。Data Map放在.cpp文件中的DoDataExchange函數中。若手動完成Data Map,需要先寫DDX,在寫DDV,這是規定,必須遵守。當數據“有必要”在控件與成員變量之間搬移時,Framework會自動調用DoDataExchange。當需要手動引發DoDataExchange函數時,只需調用UpdateData(false),其中參數為true時表示從控件中接收數據到類的成員變量中,否則表示從成員變量中初始化控件。參考:https://msdn.microsoft.com/zh-cn/library/t9fb9hww.aspx,https://msdn.microsoft.com/zh-cn/library/cc485513(v=vs.71).aspx

《深入淺出MFC》第十章 MFC與對話框