共用方式為


管理 MFC 模組的狀態資料

本文討論 MFC 模組的狀態資料,以及當執行 (執行時路徑程式碼會經過應用程式) 流程進入而模組離開時,這個狀態如何更新。 也會討論使用AFX_MANAGE_STATE和METHOD_PROLOGUE宏切換模組狀態。

注意

「模組」一詞在這裡指的是可執行的程式,或者獨立於應用程式的其他部分運作的 DLL (或一組 DLL),不過使用的是 MFC DLL 的共用複本。 ActiveX 控制項是模組的典型例子。

如下圖所示,MFC 具有應用程式中所使用每個模組的狀態資料。 這個資料的範例包含 Windows 執行個體控制代碼 (用於載入資源)、應用程式目前 CWinAppCWinThread 物件的指標、OLE 模組參考計數以及維護 Windows 物件控制代碼和相對應 MFC 物件的執行個體之間的連線的各種對應。 不過,當應用程式使用多個模組時,各個模組的狀態資料就不會涵蓋整個應用程式。 相反地,每個模組都有自己的 MFC 狀態資料私用複本。

Diagram showing the state data of a single module.
單一模組 (應用程式) 的狀態資料

模組的狀態資料是包含在結構中,並且隨時可透過指向該結構的指標取得。 如下圖所示,當執行流程進入特定模組時,模組的狀態必須是「目前的」或「有效的」。 因此,每個執行緒物件都具有指向該應用程式有效狀態結構的指標。 隨時更新此指標對於管理應用程式的全域狀態,以及維護每個模組狀態的完整性很重要。 全域狀態的管理不正確可能會導致無法預期的應用程式行為。

State data of multiple modules.
多個模組的狀態資料

換句話說,每個模組皆須負責正確地在其所有進入點的不同模組狀態間切換。 「進入點」是可供執行流程進入模組的程式碼的任何位置。 進入點包括:

另請參閱

一般 MFC 主題