Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
| Naam | Description |
|---|---|
AFX_EXT_CLASS] |
Exporteert klassen. |
AFX_MANAGE_STATE |
Een geëxporteerde functie beveiligen in een DLL. |
AfxOleInitModule |
Biedt OLE-ondersteuning van een reguliere MFC-DLL die dynamisch is gekoppeld aan MFC. |
AfxNetInitModule |
Biedt ondersteuning voor MFC Sockets van een reguliere MFC DLL die dynamisch is gekoppeld aan MFC. |
AfxGetAmbientActCtx |
Hiermee haalt u de huidige status van de statusvlag per module op. |
AfxGetStaticModuleState |
Hiermee stelt u de modulestatus in vóór de initialisatie en herstelt u de vorige modulestatus na het opschonen. |
AfxInitExtensionModule |
Initialiseert het DLL-bestand. |
AfxSetAmbientActCtx |
stel de statusvlag per module in, die van invloed is op het WinSxS-gedrag van MFC. |
AfxTermExtensionModule |
Hiermee kan MFC de DLL van de MFC-extensie opschonen wanneer elk proces loskoppelt van het DLL-bestand. |
AFX_EXT_CLASS
MFC-extensie-DLL's gebruiken de macro AFX_EXT_CLASS om klassen te exporteren. De uitvoerbare bestanden die zijn gekoppeld aan het DLL-bestand van de MFC-extensie gebruiken de macro om klassen te importeren.
Opmerkingen
Met de AFX_EXT_CLASS macro kunnen dezelfde headerbestand(en) die worden gebruikt om de DLL van de MFC-extensie te bouwen, worden gebruikt met de uitvoerbare bestanden die aan het DLL-bestand zijn gekoppeld.
Voeg in het headerbestand voor uw DLL het AFX_EXT_CLASS trefwoord als volgt toe aan de declaratie van uw klasse:
class AFX_EXT_CLASS CMyClass : public CDocument
{
// <body of class>
};
Zie Exporteren en importeren met behulp van AFX_EXT_CLASSvoor meer informatie.
Requirements
Header:<afxv_dll.h>
AFX_MANAGE_STATE
Roep deze macro aan om een geëxporteerde functie in een DLL te beveiligen.
Syntaxis
AFX_MANAGE_STATE(AFX_MODULE_STATE* pModuleState )
Parameterwaarden
pModuleState
Een aanwijzer naar een AFX_MODULE_STATE structuur.
Opmerkingen
Wanneer deze macro wordt aangeroepen, pModuleState is de effectieve modulestatus voor de rest van het bereik dat direct bevat. Wanneer u het bereik verlaat, wordt de vorige effectieve modulestatus automatisch hersteld.
De AFX_MODULE_STATE structuur bevat globale gegevens voor de module, dat wil gezegd het gedeelte van de modulestatus dat wordt gepusht of popped.
MFC gebruikt standaard de resource-handle van de hoofdtoepassing om de resource-sjabloon te laden. Als u een geëxporteerde functie in een DLL hebt, zoals een functie waarmee een dialoogvenster in het DLL-bestand wordt gestart, wordt de resourcesjabloon opgeslagen in de DLL-module. Zorg ervoor dat u de modulestatus wijzigt voor de juiste ingang die moet worden gebruikt. U kunt de status wijzigen door de volgende code toe te voegen aan het begin van de functie:
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
Met deze macro wordt de huidige modulestatus verwisseld met de status die wordt geretourneerd van AfxGetStaticModuleState tot het einde van het huidige bereik.
Zie De statusgegevens van MFC-modules en Technische notitie 58 beheren voor meer informatie over modulestatussen en MFC.
Opmerking
Wanneer MFC een activeringscontext voor een assembly maakt, wordt deze gebruikt AfxWinInit om de context te maken en AFX_MANAGE_STATE deze te activeren en deactiveren. Houd er ook rekening mee dat AFX_MANAGE_STATE is ingeschakeld voor statische MFC-bibliotheken, evenals MFC-DLL's, zodat MFC-code kan worden uitgevoerd in de juiste activeringscontext die is geselecteerd door het DLL-bestand van de gebruiker. Zie Ondersteuning voor activeringscontexten in de MFC-modulestatus voor meer informatie.
Requirements
Header:<afxstat_.h>
AfxOleInitModule
Voor OLE-ondersteuning van een reguliere MFC DLL die dynamisch is gekoppeld aan MFC, roept u deze functie aan in de functie van CWinApp::InitInstance uw reguliere MFC DLL om de MFC OLE DLL te initialiseren.
Syntaxis
void AFXAPI AfxOleInitModule( );
Opmerkingen
De MFC OLE DLL is een MFC extensie DLL; als u wilt dat een DLL van de MFC-extensie in een CDynLinkLibrary keten wordt bekabeld, moet het een CDynLinkLibrary object maken in de context van elke module die deze gaat gebruiken.
AfxOleInitModule maakt het object in de CDynLinkLibrary context van uw reguliere MFC DLL, zodat het wordt bekabeld in de CDynLinkLibrary objectketen van de reguliere MFC DLL.
Als u een OLE-besturingselement bouwt en gebruikt COleControlModule, moet u niet aanroepen AfxOleInitModule omdat de InitInstance lidfunctie voor COleControlModule aanroepen AfxOleInitModule.
Requirements
Koptekst: <afxdll_.h>
AfxNetInitModule
Voor MFC Sockets-ondersteuning van een reguliere MFC DLL die dynamisch is gekoppeld aan MFC, voegt u een aanroep toe aan deze functie in de reguliere MFC DLL-functie CWinApp::InitInstance om de DLL van MFC Sockets te initialiseren.
Syntaxis
void AFXAPI AfxNetInitModule( );
Opmerkingen
De MFC Sockets DLL is een MFC extensie DLL; als u wilt dat een DLL van de MFC-extensie in een CDynLinkLibrary keten wordt bekabeld, moet het een CDynLinkLibrary object maken in de context van elke module die deze gaat gebruiken.
AfxNetInitModule maakt het object in de CDynLinkLibrary context van uw reguliere MFC DLL, zodat het wordt bekabeld in de CDynLinkLibrary objectketen van de reguliere MFC DLL.
Requirements
Header:<afxdll_.h>
AfxGetAmbientActCtx
Gebruik deze functie om de huidige status van de statusvlag per module op te halen, wat van invloed is op het WinSxS-gedrag van MFC.
Syntaxis
BOOL AFXAPI AfxGetAmbientActCtx();
Retourwaarde
Huidige waarde markeren met de status van de module.
Opmerkingen
Wanneer de vlag is ingesteld (dit is de standaardinstelling) en een thread een MFC-module invoert (zie AFX_MANAGE_STATE), wordt de context van de module geactiveerd.
Als de vlag niet is ingesteld, wordt de context van de module niet geactiveerd bij het invoeren.
De context van een module wordt bepaald op basis van het manifest, vaak ingesloten in modulebronnen.
Requirements
Header:<afxcomctl32.h>
AfxGetStaticModuleState
Roep deze functie aan om de modulestatus in te stellen vóór initialisatie en om de vorige modulestatus na het opschonen te herstellen.
Syntaxis
AFX_MODULE_STATE* AFXAPI AfxGetStaticModuleState( );
Retourwaarde
Een aanwijzer naar een AFX_MODULE_STATE structuur.
Opmerkingen
De AFX_MODULE_STATE structuur bevat globale gegevens voor de module, dat wil gezegd het gedeelte van de modulestatus dat wordt gepusht of popped.
MFC gebruikt standaard de resource-handle van de hoofdtoepassing om de resource-sjabloon te laden. Als u een geëxporteerde functie in een DLL hebt, zoals een functie waarmee een dialoogvenster in het DLL-bestand wordt gestart, wordt de resourcesjabloon opgeslagen in de DLL-module. Zorg ervoor dat u de modulestatus wijzigt voor de juiste ingang die moet worden gebruikt. U kunt de status wijzigen door de volgende code toe te voegen aan het begin van de functie:
AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
Met deze macro wordt de huidige modulestatus verwisseld met de status die wordt geretourneerd van AfxGetStaticModuleState tot het einde van het huidige bereik.
Zie De statusgegevens van MFC-modules en Technische notitie 58 beheren voor meer informatie over modulestatussen en MFC.
Requirements
Header:<afxstat_.h>
AfxInitExtensionModule
Roep deze functie aan in een MFC-extensie-DLL's DllMain om het DLL-bestand te initialiseren.
Syntaxis
BOOL AFXAPI AfxInitExtensionModule( AFX_EXTENSION_MODULE& state, HMODULE hModule );
Parameterwaarden
state
Een verwijzing naar de AFX_EXTENSION_MODULE structuurstructuur die de status van de DLL-module van de MFC-extensie bevat na de initialisatie. De status bevat een kopie van de runtimeklasseobjecten die zijn geïnitialiseerd door de MFC-extensie-DLL als onderdeel van de normale statische objectconstructie die wordt uitgevoerd voordat DllMain wordt ingevoerd.
hModule
Een ingang van de DLL-module voor de MFC-extensie.
Retourwaarde
TRUE als de DLL van de MFC-extensie is geïnitialiseerd; anders, FALSE.
Opmerkingen
Voorbeeld:
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 maakt een kopie van de HMODULE van het DLL-bestand en legt de runtimeklassen (structuren) van het DLL-bestand enCRuntimeClass ook de objectfabrieken (COleObjectFactory objecten) vast voor later gebruik wanneer het CDynLinkLibrary object wordt gemaakt.
MFC-extensie-DLL's moeten twee dingen doen in hun DllMain functie:
Roep
AfxInitExtensionModulede retourwaarde aan en controleer deze.Maak een
CDynLinkLibraryobject als het DLL-bestand structuurobjecten exporteertCRuntimeClassof eigen aangepaste resources heeft.
U kunt aanroepen AfxTermExtensionModule om het DLL-bestand van de MFC-extensie op te schonen wanneer elk proces loskoppelt van het DLL-bestand van de MFC-extensie (wat gebeurt wanneer het proces wordt afgesloten of wanneer het DLL-bestand wordt verwijderd door een AfxFreeLibrary aanroep).
Requirements
Header:<afxdll_.h>
AfxSetAmbientActCtx
Gebruik deze functie om de statusvlag per module in te stellen, wat van invloed is op het WinSxS-gedrag van MFC.
Syntaxis
void AFXAPI AfxSetAmbientActCtx(BOOL bSet);
Parameterwaarden
bSet
Nieuwe waarde van de modulestatusvlag.
Opmerkingen
Wanneer de vlag is ingesteld (dit is de standaardinstelling) en een thread een MFC-module invoert (zie AFX_MANAGE_STATE), wordt de context van de module geactiveerd.
Als de vlag niet is ingesteld, wordt de context van de module niet geactiveerd bij het invoeren.
De context van een module wordt bepaald op basis van het manifest, vaak ingesloten in modulebronnen.
Example
BOOL CMFCListViewApp::InitInstance()
{
AfxSetAmbientActCtx(FALSE);
// Remainder of function definition omitted.
}
Requirements
Header:<afxcomctl32.h>
AfxTermExtensionModule
Roep deze functie aan om MFC toe te staan het DLL-bestand van de MFC-extensie op te schonen wanneer elk proces loskoppelt van het DLL-bestand (wat gebeurt wanneer het proces wordt afgesloten of wanneer het DLL-bestand wordt verwijderd door een AfxFreeLibrary aanroep).
Syntaxis
void AFXAPI AfxTermExtensionModule( AFX_EXTENSION_MODULE& state, BOOL bAll = FALSE );
Parameterwaarden
state
Een verwijzing naar de AFX_EXTENSION_MODULE structuur die de status van de DLL-module van de MFC-extensie bevat.
bAll
Als WAAR is, moet u alle DLL-modules van de MFC-extensie opschonen. Anders schoont u alleen de huidige DLL-module op.
Opmerkingen
AfxTermExtensionModule verwijdert alle lokale opslag die aan de module is gekoppeld en verwijdert alle vermeldingen uit de berichtentoewijzingscache. Voorbeeld:
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
}
Als uw toepassing dynamisch MFC-extensie-DLL's laadt en vrijgeeft, moet u het aanroepen AfxTermExtensionModule. Omdat de meeste MFC-extensie-DLL's niet dynamisch worden geladen (normaal gesproken zijn ze gekoppeld via hun importbibliotheken), is de aanroep naar AfxTermExtensionModule meestal niet nodig.
MFC-extensie-DLL's moeten hun aanroepen AfxInitExtensionModuleDllMain. Als de DLL objecten exporteert CRuntimeClass of eigen aangepaste resources heeft, moet u ook een CDynLinkLibrary object maken in DllMain.
Requirements
Header:<afxdll_.h>
Zie ook
Macro's en globals
AfxMessageBox
De statusgegevens van MFC-modules beheren