Aracılığıyla paylaş


MFC Modüllerinin Durum Verisini Yönetme

Bu makalede MFC modüllerinin durum verileri ve yürütme akışı (yürütülürken uygulamadan geçen yol kodu) bir modüle girip ayrıldığında bu durumun nasıl güncelleştiriltiği açıklanır. Modül durumlarının AFX_MANAGE_STATE ve METHOD_PROLOGUE makrolarla değiştirilmesi de ele alınacaktır.

Dekont

Buradaki "modül" terimi, yürütülebilir bir programı veya uygulamanın geri kalanından bağımsız olarak çalışan ancak MFC DLL'sinin paylaşılan bir kopyasını kullanan bir DLL'ye (veya DLL kümesine) başvurur. ActiveX denetimi, bir modülün tipik bir örneğidir.

Aşağıdaki şekilde gösterildiği gibi, MFC bir uygulamada kullanılan her modül için durum verilerine sahiptir. Bu verilere örnek olarak Windows örnek tanıtıcıları (kaynakları yüklemek için kullanılır), bir uygulamanın geçerli CWinApp ve CWinThread nesnelerine yönelik işaretçiler, OLE modülü başvuru sayıları ve Windows nesne tanıtıcıları ile MFC nesnelerinin karşılık gelen örnekleri arasındaki bağlantıları koruyan çeşitli haritalar verilebilir. Ancak, bir uygulama birden çok modül kullandığında, her modülün durum verileri uygulama genelinde değildir. Bunun yerine, her modülün MFC'nin durum verilerinin kendi özel kopyası vardır.

Diagram showing the state data of a single module.
Tek Bir Modülün Durum Verileri (Uygulama)

Modülün durum verileri bir yapıda bulunur ve her zaman bu yapıya bir işaretçi aracılığıyla kullanılabilir. Aşağıdaki şekilde gösterildiği gibi yürütme akışı belirli bir modüle girdiğinde, bu modülün durumu "geçerli" veya "etkili" durum olmalıdır. Bu nedenle, her iş parçacığı nesnesinin bu uygulamanın etkin durum yapısına yönelik bir işaretçisi vardır. Bu işaretçiyi sürekli güncel tutmak, uygulamanın genel durumunu yönetmek ve her modülün durumunun bütünlüğünü korumak için çok önemlidir. Genel durumun yanlış yönetilmesi, öngörülemeyen uygulama davranışına yol açabilir.

State data of multiple modules.
Birden Çok Modülün Durum Verileri

Başka bir deyişle her modül, tüm giriş noktalarında modül durumları arasında doğru geçiş yapmakla sorumludur. "Giriş noktası", yürütme akışının modülün kodunu girebileceği herhangi bir yerdir. Giriş noktaları şunlardır:

Ayrıca bkz.

Genel MFC Konuları