Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Microsoft Foundation Sınıfları (MFC) kitaplığına destek verilmeye devam ediliyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
| Veri Akışı Adı | Açıklama |
|---|---|
AFX_EXT_CLASS] |
Sınıfları dışarı aktarır. |
AFX_MANAGE_STATE |
DLL'de dışarı aktarılan bir işlevi koruma. |
AfxOleInitModule |
MFC'ye dinamik olarak bağlı normal bir MFC DLL'sinden OLE desteği sağlar. |
AfxNetInitModule |
MFC'ye dinamik olarak bağlı normal bir MFC DLL'sinden MFC Yuvaları desteği sağlar. |
AfxGetAmbientActCtx |
Modül başına durum bayrağının geçerli durumunu alır. |
AfxGetStaticModuleState |
Başlatmadan önce modül durumunu ayarlar ve temizleme işleminden sonra önceki modül durumunu geri yükler. |
AfxInitExtensionModule |
DLL'yi başlatır. |
AfxSetAmbientActCtx |
MFC'nin WinSxS davranışını etkileyen modül başına durum bayrağını ayarlayın. |
AfxTermExtensionModule |
Her işlem DLL'den ayrılırken MFC'nin MFC uzantı DLL'sini temizlemesine izin verir. |
AFX_EXT_CLASS
MFC uzantısı DLL'leri sınıfları dışarı aktarmak için makroyu AFX_EXT_CLASS kullanır; MFC uzantısı DLL'sine bağlanan yürütülebilir dosyalar, sınıfları içeri aktarmak için makroyu kullanır.
Açıklamalar
Makroyla AFX_EXT_CLASS , MFC uzantısı DLL'sini oluşturmak için kullanılan üst bilgi dosyaları DLL'ye bağlanan yürütülebilir dosyalarla kullanılabilir.
DLL'nizin üst bilgi dosyasında, sınıfınızın bildirimine aşağıdaki gibi anahtar sözcüğünü ekleyin AFX_EXT_CLASS :
class AFX_EXT_CLASS CMyClass : public CDocument
{
// <body of class>
};
Daha fazla bilgi için bkz . kullanarak AFX_EXT_CLASSdışarı ve içeri aktarma.
Gereksinimler
Üst Bilgi:<afxv_dll.h>
AFX_MANAGE_STATE
DLL'de dışarı aktarılan bir işlevi korumak için bu makroya çağrıda bulunur.
Sözdizimi
AFX_MANAGE_STATE(AFX_MODULE_STATE* pModuleState )
Parametreler
pModuleState
Bir yapı işaretçisi AFX_MODULE_STATE .
Açıklamalar
Bu makro çağrıldığında, pModuleState hemen içeren kapsamın geri kalanı için etkili modül durumudur. Kapsam dışına çıktıktan sonra önceki geçerli modül durumu otomatik olarak geri yüklenir.
Yapı AFX_MODULE_STATE , modülün genel verilerini, yani modül durumunun gönderilen veya alınan bölümünü içerir.
Varsayılan olarak MFC, kaynak şablonunu yüklemek için ana uygulamanın kaynak tutamacını kullanır. DLL'de, DLL'de bir iletişim kutusu başlatan işlev gibi dışarı aktarılan bir işleviniz varsa, kaynak şablonu DLL modülünde depolanır. Kullanılacak doğru tanıtıcı için modül durumunu değiştirmeyi unutmayın. aşağıdaki kodu işlevin başına ekleyerek durumu değiştirebilirsiniz:
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
Bu makro geçerli modül durumunu, geçerli kapsamın sonuna kadar döndürülen AfxGetStaticModuleState durumla değiştirir.
Modül durumları ve MFC hakkında daha fazla bilgi için bkz . MFC modüllerinin durum verilerini yönetme ve Teknik Not 58.
Not
MFC bir derleme için bir etkinleştirme bağlamı oluşturduğunda, bağlamı oluşturmak ve AfxWinInit etkinleştirmek ve devre dışı bırakmak için kullanırAFX_MANAGE_STATE. MFC kodunun AFX_MANAGE_STATE Kullanıcı DLL'sinin seçtiği uygun etkinleştirme bağlamında yürütülmesine izin vermek için statik MFC kitaplıklarının yanı sıra MFC DLL'leri için de etkinleştirildiğini unutmayın. Daha fazla bilgi için bkz . MFC Modülü Durumunda Etkinleştirme Bağlamları Desteği.
Gereksinimler
Üst Bilgi:<afxstat_.h>
AfxOleInitModule
MFC'ye dinamik olarak bağlı normal bir MFC DLL'sinden OLE desteği için, MFC OLE DLL'sini CWinApp::InitInstance başlatmak için normal MFC DLL'nizin işlevinde bu işlevi çağırın.
Sözdizimi
void AFXAPI AfxOleInitModule( );
Açıklamalar
MFC OLE DLL bir MFC uzantısı DLL'dir; MFC uzantı DLL'sinin zincire CDynLinkLibrary bağlanabilmesi için, onu kullanacak olan her modül bağlamında bir CDynLinkLibrary nesne oluşturması gerekir.
AfxOleInitModule
CDynLinkLibrary, normal MFC DLL'sinin nesne zincirine CDynLinkLibrary bağlanabilmesi için nesneyi normal MFC DLL'nizin bağlamında oluşturur.
OLE denetimi oluşturuyorsanız ve kullanıyorsanızCOleControlModule, için üye işlevi AfxOleInitModule çağrıları için InitInstance çağrısı COleControlModuleAfxOleInitModuleyapmamalısınız.
Gereksinimler
Üst bilgi: <afxdll_.h>
AfxNetInitModule
MFC'ye dinamik olarak bağlı normal bir MFC DLL'sinden MFC Yuvaları desteği için, MFC YuvaLARı DLL'sini CWinApp::InitInstance başlatmak için normal MFC DLL'nizin işlevinde bu işleve bir çağrı ekleyin.
Sözdizimi
void AFXAPI AfxNetInitModule( );
Açıklamalar
MFC Yuva DLL'i bir MFC uzantısı DLL'dir; MFC uzantı DLL'sinin zincire CDynLinkLibrary bağlanabilmesi için, onu kullanacak olan her modül bağlamında bir CDynLinkLibrary nesne oluşturması gerekir.
AfxNetInitModule
CDynLinkLibrary, normal MFC DLL'sinin nesne zincirine CDynLinkLibrary bağlanabilmesi için nesneyi normal MFC DLL'nizin bağlamında oluşturur.
Gereksinimler
Üst Bilgi:<afxdll_.h>
AfxGetAmbientActCtx
MFC'nin WinSxS davranışını etkileyen modül başına durum bayrağının geçerli durumunu almak için bu işlevi kullanın.
Sözdizimi
BOOL AFXAPI AfxGetAmbientActCtx();
Dönüş Değeri
Modül durumu bayrağı geçerli değer.
Açıklamalar
Bayrak ayarlandığında (varsayılan olan) ve bir iş parçacığı bir MFC modülüne girdiğinde (bkz AFX_MANAGE_STATE. ), modülün bağlamı etkinleştirilir.
Bayrak ayarlı değilse, girişte modülün bağlamı etkinleştirilmez.
Modülün bağlamı, genellikle modül kaynaklarına eklenmiş bildiriminden belirlenir.
Gereksinimler
Üst Bilgi:<afxcomctl32.h>
AfxGetStaticModuleState
Başlatmadan önce modül durumunu ayarlamak ve temizlemeden sonra önceki modül durumunu geri yüklemek için bu işlevi çağırın.
Sözdizimi
AFX_MODULE_STATE* AFXAPI AfxGetStaticModuleState( );
Dönüş Değeri
Bir yapı işaretçisi AFX_MODULE_STATE .
Açıklamalar
Yapı AFX_MODULE_STATE , modülün genel verilerini, yani modül durumunun gönderilen veya alınan bölümünü içerir.
Varsayılan olarak MFC, kaynak şablonunu yüklemek için ana uygulamanın kaynak tutamacını kullanır. DLL'de, DLL'de bir iletişim kutusu başlatan işlev gibi dışarı aktarılan bir işleviniz varsa, kaynak şablonu DLL modülünde depolanır. Kullanılacak doğru tanıtıcı için modül durumunu değiştirmeyi unutmayın. aşağıdaki kodu işlevin başına ekleyerek durumu değiştirebilirsiniz:
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
Bu makro geçerli modül durumunu, geçerli kapsamın sonuna kadar döndürülen AfxGetStaticModuleState durumla değiştirir.
Modül durumları ve MFC hakkında daha fazla bilgi için bkz . MFC modüllerinin durum verilerini yönetme ve Teknik Not 58.
Gereksinimler
Üst Bilgi:<afxstat_.h>
AfxInitExtensionModule
DLL'yi başlatmak için MFC uzantısı DLL'lerinde DllMain bu işlevi çağırın.
Sözdizimi
BOOL AFXAPI AfxInitExtensionModule( AFX_EXTENSION_MODULE& state, HMODULE hModule );
Parametreler
state
Başlatmadan AFX_EXTENSION_MODULE sonra MFC uzantısı DLL modülünün durumunu içerecek Yapı yapısına başvuru. Durum, daha önce girilmeden önce DllMain yürütülen normal statik nesne oluşturma işleminin bir parçası olarak MFC uzantı DLL'sinin başlatıldığı çalışma zamanı sınıfı nesnelerinin bir kopyasını içerir.
hModule
MFC uzantısı DLL modülünün tanıtıcısı.
Dönüş Değeri
TRUE MFC uzantısı DLL başarıyla başlatılırsa; aksi takdirde , FALSE.
Açıklamalar
Örneğin:
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
// MFC extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
...
AfxInitExtensionModule DLL'nin HMODULE dosyasının bir kopyasını oluşturur ve DLL'nin çalışma zamanı sınıflarını (CRuntimeClass yapıları) ve nesne fabrikalarını (COleObjectFactory nesneleri) daha sonra CDynLinkLibrary nesne oluşturulduğunda kullanmak üzere yakalar.
MFC uzantısı DLL'lerinin DllMain işlevlerinde iki şey yapması gerekir:
Çağırın
AfxInitExtensionModuleve dönüş değerini denetleyin.DLL, Yapı
CRuntimeClassveya kendi özel kaynaklarına sahipse bir nesne oluşturun.
Her işlem MFC uzantı DLL'sinden ayrılırken (işlem çıktığında veya DLL bir AfxTermExtensionModule çağrı tarafından kaldırıldığında gerçekleşir) MFC uzantısı DLL'sini temizlemek için çağırabilirsinizAfxFreeLibrary.
Gereksinimler
Üst Bilgi:<afxdll_.h>
AfxSetAmbientActCtx
MFC'nin WinSxS davranışını etkileyen modül başına durum bayrağını ayarlamak için bu işlevi kullanın.
Sözdizimi
void AFXAPI AfxSetAmbientActCtx(BOOL bSet);
Parametreler
bSet
Modül durumu bayrağının yeni değeri.
Açıklamalar
Bayrak ayarlandığında (varsayılan olan) ve bir iş parçacığı bir MFC modülüne girdiğinde (bkz AFX_MANAGE_STATE. ), modülün bağlamı etkinleştirilir.
Bayrak ayarlı değilse, girişte modülün bağlamı etkinleştirilmez.
Modülün bağlamı, genellikle modül kaynaklarına eklenmiş bildiriminden belirlenir.
Örnek
BOOL CMFCListViewApp::InitInstance()
{
AfxSetAmbientActCtx(FALSE);
// Remainder of function definition omitted.
}
Gereksinimler
Üst Bilgi:<afxcomctl32.h>
AfxTermExtensionModule
Her işlem DLL'den ayrılırken MFC uzantısı DLL'sini temizlemesine izin vermek için bu işlevi çağırın (işlem çıktığında veya DLL bir AfxFreeLibrary çağrı tarafından kaldırıldığında gerçekleşir).
Sözdizimi
void AFXAPI AfxTermExtensionModule( AFX_EXTENSION_MODULE& state, BOOL bAll = FALSE );
Parametreler
state
MFC uzantı DLL modülünün durumunu içeren yapıya başvuru AFX_EXTENSION_MODULE .
bAll
TRUE ise, tüm MFC uzantısı DLL modüllerini temizleyin. Aksi takdirde, yalnızca geçerli DLL modülünü temizleyin.
Açıklamalar
AfxTermExtensionModule modüle bağlı tüm yerel depolamayı siler ve ileti eşleme önbelleğinden tüm girdileri kaldırır. Örneğin:
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
// MFC extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
new CMyDynLinkLibrary(NVC_MFC_DLLDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("NVC_MFC_DLL.DLL Terminating!\n");
// Terminate the library before destructors are called
AfxTermExtensionModule(NVC_MFC_DLLDLL);
}
return 1; // ok
}
Uygulamanız MFC uzantısı DLL'lerini dinamik olarak yükler ve serbest bırakırsa, öğesini çağırıp çağırmayı AfxTermExtensionModuleunutmayın. MFC uzantı DLL'lerinin çoğu dinamik olarak yüklenmediğinden (normalde, içeri aktarma kitaplıkları aracılığıyla bağlandığı için), çağrısı AfxTermExtensionModule genellikle gerekli değildir.
MFC uzantısı DLL'lerinin içinde AfxInitExtensionModuleçağrısı DllMain gerekir. DLL nesneleri dışarı aktarıyorsa CRuntimeClass veya kendi özel kaynakları varsa, içinde CDynLinkLibrarybir DllMain nesne de oluşturmanız gerekir.
Gereksinimler
Üst Bilgi:<afxdll_.h>
Ayrıca bkz.
Makrolar ve genel ayarlar
AfxMessageBox
MFC modüllerinin durum verilerini yönetme