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

2022-02-10 04:38:41 字數 922 閱讀 8063

可以通過對話方塊編輯器設計對話方塊模板,在資源檢視中選擇新增乙個對話方塊資源。通過屬性頁可以設定對話方塊或控制項的屬性。

通過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時表示從控制項中接收資料到類的成員變數中,否則表示從成員變數中初始化控制項。參考:

深入淺出MFC筆記

深入淺出mfc筆記 一 勿在浮砂築高台 1 並不是擴充套件名為 dll dynamic link library 的才是動態鏈結庫。事實上,exe dll fon mod drv 和.ocx 都是所謂的動態鏈結函式庫。2 windows 程式編譯時需要包含 windows.h 標頭檔案,若需要使用諸...

深入淺出MFC 卷首語

昨晚有點睡不著,想起還有些書還沒看完,於是,起床把 深入淺出mfc 看完了。看這本書斷斷續續也有乙個多月了,我看完之後的第一衝動是找本mfc應用的書來深入熟悉熟悉mfc。因為,看這本書的時候,才發現自己的mfc知識是那麼的貧乏,總有點力不從心的感覺,以至於很多東西都一看而過,根本進入不了思考的階段。...

深入淺出MFC 卷首語

昨晚有點睡不著,想起還有些書還沒看完,於是,起床把 深入淺出mfc 看完了。看這本書斷斷續續也有乙個多月了,我看完之後的第一衝動是找本mfc應用的書來深入熟悉熟悉mfc。因為,看這本書的時候,才發現自己的mfc知識是那麼的貧乏,總有點力不從心的感覺,以至於很多東西都一看而過,根本進入不了思考的階段。...