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.
Wanneer u een toepassing schrijft, maakt u één CWinApp-afgeleide object. Soms wilt u mogelijk informatie over dit object ophalen van buiten het CWinApp-afgeleide object. Of mogelijk hebt u toegang nodig tot andere globale 'manager'-objecten.
De Microsoft Foundation Class Library biedt de volgende globale functies om u te helpen deze taken uit te voeren:
Toepassingsinformatie en beheerfuncties
| Name | Description |
|---|---|
AfxBeginThread |
Hiermee maakt u een nieuwe thread. |
AfxContextMenuManager |
Aanwijzer naar de globale contextmenubeheer. |
AfxEndThread |
Hiermee wordt de huidige thread beëindigd. |
AfxFindResourceHandle |
Hiermee wordt de resourceketen begeleid en wordt een specifieke resource op resource-id en resourcetype gevonden. |
AfxFreeLibrary |
Hiermee wordt het aantal verwijzingen van de geladen DLL-module (Dynamic Link Library) afgetrokken. Wanneer het aantal verwijzingen nul bereikt, wordt de module niet toegewezen. |
AfxGetApp |
Hiermee wordt een aanwijzer geretourneerd naar het enkelvoudige CWinApp object van de toepassing. |
AfxGetAppName |
Retourneert een tekenreeks die de naam van de toepassing bevat. |
AfxGetInstanceHandle |
Retourneert een HINSTANCE weergave van dit exemplaar van de toepassing. |
AfxGetMainWnd |
Retourneert een aanwijzer naar het huidige hoofdvenster van een niet-OLE-toepassing of het in-place framevenster van een servertoepassing. |
AfxGetPerUserRegistration |
Gebruik deze functie om te bepalen of de toepassing registertoegang omleidt tot het HKEY_CURRENT_USER (HKCU) knooppunt. |
AfxGetResourceHandle |
Retourneert een HINSTANCE naar de bron van de standaardbronnen van de toepassing. Gebruik deze functie om rechtstreeks toegang te krijgen tot de resources van de toepassing. |
AfxGetThread |
Retrieves a pointer to the current CWinThread object. |
AfxInitRichEdit |
Initialiseert het uitgebreide besturingselement voor bewerken van versie 1.0 voor de toepassing. |
AfxInitRichEdit2 |
Initialiseert het besturingselement voor bewerken van versie 2.0 en hoger voor de toepassing. |
AfxIsExtendedFrameClass |
Bepaalt of het opgegeven venster een uitgebreid frameobject is. |
AfxIsMFCToolBar |
Bepaalt of het opgegeven venster een werkbalkobject is. |
AfxKeyboardManager |
Pointer to the global keyboard manager. |
AfxLoadLibrary |
Wijst een DLL-module toe en retourneert een ingang die kan worden gebruikt om het adres van een DLL-functie te verkrijgen. |
AfxLoadLibraryEx |
Wijst een DLL-module toe met behulp van de opgegeven opties en retourneert een ingang die kan worden gebruikt om het adres van een DLL-functie te verkrijgen. |
AfxMenuTearOffManager |
Wijs de globale menumanager aan. |
AfxMouseManager |
Pointer to the global mouse manager. |
AfxRegisterClass |
Registreert een vensterklasse in een DLL die gebruikmaakt van MFC. |
AfxRegisterWndClass |
Registreert een Windows-vensterklasse om de vensterklassen die automatisch door MFC zijn geregistreerd, aan te vullen. |
AfxSetPerUserRegistration |
Hiermee stelt u in of de toepassing registertoegang omleidt tot het HKEY_CURRENT_USER (HKCU) knooppunt. |
AfxSetResourceHandle |
Hiermee stelt u de HINSTANCE-ingang in waarbij de standaardbronnen van de toepassing worden geladen. |
AfxShellManager |
Pointer to the global shell manager. |
AfxSocketInit |
Wordt aangeroepen in een CWinApp::InitInstance onderdrukking om Windows Sockets te initialiseren. |
AfxUserToolsManager |
Wijs de globale manager van gebruikershulpprogramma's aan. |
AfxWinInit |
Aangeroepen door de door MFC geleverde WinMain functie, als onderdeel van de CWinApp initialisatie van een op GUI gebaseerde toepassing, om MFC te initialiseren. Moet rechtstreeks worden aangeroepen voor consoletoepassingen die gebruikmaken van MFC. |
AfxBeginThread
Roep deze functie aan om een nieuwe thread te maken.
CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
CWinThread* AfxBeginThread(
CRuntimeClass* pThreadClass,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
Parameters
pfnThreadProc
Verwijst naar de besturingsfunctie voor de werkrolthread. De aanwijzer kan niet zijn NULL. Deze functie moet als volgt worden gedeclareerd:
UINT __cdecl MyControllingFunction( LPVOID pParam );
pThreadClass
Het RUNTIME_CLASS object dat is afgeleid van CWinThread.
pParam
Parameter die moet worden doorgegeven aan de besturingsfunctie.
nPriority
De prioriteit die moet worden ingesteld voor de thread. Zie de Windows SDK voor een volledige lijst en beschrijving van de beschikbare prioriteiten SetThreadPriority .
nStackSize
Hiermee geeft u de grootte in bytes van de stack voor de nieuwe thread. Als 0, wordt de grootte van de stack standaard ingesteld op dezelfde groottestack als de makende thread.
dwCreateFlags
Hiermee geeft u een extra vlag op waarmee het maken van de thread wordt bepaald. Deze vlag kan een van de volgende twee waarden bevatten:
CREATE_SUSPENDEDStart de thread met een onderbrekingsaantal van één. GebruikCREATE_SUSPENDEDdeze optie als u lidgegevens van hetCWinThreadobject, zoalsm_bAutoDeleteof leden van uw afgeleide klasse, wilt initialiseren voordat de thread wordt uitgevoerd. Zodra de initialisatie is voltooid, kuntCWinThread::ResumeThreadu de thread starten die wordt uitgevoerd. De thread wordt pas uitgevoerd alsCWinThread::ResumeThreaddeze wordt aangeroepen.0 Start the thread immediately after creation.
lpSecurityAttrs
Verwijst naar een SECURITY_ATTRIBUTES structuur die de beveiligingskenmerken voor de thread aangeeft. Als NULLdezelfde beveiligingskenmerken als de makende thread worden gebruikt. Zie de Windows SDK voor meer informatie over deze structuur.
Return Value
Wijs het zojuist gemaakte threadobject aan of NULL als er een fout optreedt.
Remarks
De eerste vorm van het maken van AfxBeginThread een werkrolthread. In het tweede formulier wordt een thread gemaakt die kan fungeren als een gebruikersinterfacethread of als werkrolthread.
AfxBeginThread maakt een nieuw CWinThread object, roept CreateThread de bijbehorende functie aan om de thread uit te voeren en retourneert een aanwijzer naar de thread. Tijdens de procedure worden controles uitgevoerd om ervoor te zorgen dat alle objecten correct worden vrijgegeven als een deel van het creëren mislukt. Als u de thread wilt beëindigen, roept AfxEndThread u aan vanuit de thread of keert u terug vanuit de besturingsfunctie van de werkrolthread.
Multithreading moet worden ingeschakeld door de toepassing; anders mislukt deze functie. Zie , ( /MT/LD Runtimebibliotheek gebruiken) voor meer informatie over het inschakelen van multithreading/MD.
Zie de artikelen Multithreading: Worker Threads en Multithreading maken: User-Interface Threads maken voor meer informatieAfxBeginThread.
Example
Zie het voorbeeld voor CSocket::Attach.
Requirements
Headerafxwin.h
AfxContextMenuManager
Aanwijzer naar de globale contextmenubeheer.
Syntax
CContextMenuManager* afxContextMenuManager;
Requirements
Header:afxcontextmenumanager.h
AfxEndThread
Roep deze functie aan om de momenteel uitgevoerde thread te beëindigen.
void AFXAPI AfxEndThread(
UINT nExitCode,
BOOL bDelete = TRUE);
Parameters
nExitCode
Hiermee geeft u de afsluitcode van de thread.
bDelete
Hiermee verwijdert u het threadobject uit het geheugen.
Remarks
Moet worden aangeroepen vanuit de thread om te worden beëindigd.
Zie het artikel Multithreading: Terminating Threads voor meer informatieAfxEndThread.
Requirements
Headerafxwin.h
AfxFindResourceHandle
Gebruik AfxFindResourceHandle dit om de resourceketen te doorlopen en een specifieke resource te zoeken op resource-id en resourcetype.
Syntax
HINSTANCE AFXAPI AfxFindResourceHandle( LPCTSTR lpszName, LPCTSTR lpszType );
Parameters
lpszName
Een aanwijzer naar een tekenreeks die de resource-id bevat.
lpszType
Een aanwijzer naar het type resource. Zie de Windows SDK voor een lijst met resourcetypen FindResource .
Return Value
Een ingang naar de module die de resource bevat.
Remarks
AfxFindResourceHandle zoekt de specifieke resource en retourneert een ingang naar de module die de resource bevat. De resource kan zich in een DLL van de MFC-extensie bevinden die is geladen.
AfxFindResourceHandle geeft aan welke resource de resource heeft.
De modules worden in deze volgorde doorzocht:
De hoofdmodule, als het een MFC-extensie-DLL is.
Non-system modules.
Language-specific modules.
De hoofdmodule, als het een systeem-DLL is.
System modules.
Requirements
Header:afxwin.h
AfxFreeLibrary
Zowel AfxFreeLibrary als AfxLoadLibrary onderhoud van een referentieaantal voor elke geladen bibliotheekmodule.
BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);
Parameters
hInstLib
Een ingang van de geladen bibliotheekmodule.
AfxLoadLibrary retourneert deze ingang.
Return Value
TRUE als de functie slaagt; anders, FALSE.
Remarks
AfxFreeLibrary hiermee wordt het aantal verwijzingen van de geladen DLL-module (Dynamic Link Library) afgetrokken. Wanneer het aantal verwijzingen nul bereikt, wordt de module niet toegewezen vanuit de adresruimte van het aanroepproces en is de ingang niet meer geldig. Dit verwijzingsaantal wordt telkens verhoogd wanneer AfxLoadLibrary deze wordt aangeroepen.
Voordat u een bibliotheekmodule loskoppelt, kan het DLL-bestand loskoppelen van de processen die deze gebruiken. Dit geeft de DLL de mogelijkheid om resources op te schonen die zijn toegewezen voor het huidige proces. Nadat de invoerpuntfunctie is geretourneerd, wordt de bibliotheekmodule verwijderd uit de adresruimte van het huidige proces.
Gebruik AfxLoadLibrary deze module om een DLL-module toe te wijzen.
Zorg ervoor dat u meerdere threads gebruikt AfxFreeLibrary en AfxLoadLibrary (in plaats van de Win32-functies FreeLibrary en LoadLibrary) als uw toepassing meerdere threads gebruikt. Het gebruik AfxLoadLibrary en AfxFreeLibrary zorgt ervoor dat de opstart- en afsluitcode die wordt uitgevoerd wanneer de DLL van de MFC-extensie wordt geladen en verwijderd, de globale MFC-status niet beschadigd.
Example
Zie het voorbeeld voor AfxLoadLibrary.
Requirements
Headerafxdll_.h
AfxGetApp
De aanwijzer die door deze functie wordt geretourneerd, kan worden gebruikt voor toegang tot toepassingsgegevens, zoals de belangrijkste berichtverzendingscode of het bovenste venster.
CWinApp* AFXAPI AfxGetApp();
Return Value
Een aanwijzer naar het object CWinApp voor de toepassing.
Remarks
Als deze methode wordt geretourneerd NULL, kan dit erop wijzen dat het hoofdvenster van de toepassing nog niet volledig is geïnitialiseerd. Het kan ook duiden op een probleem.
Example
// Print the application's executable filename.
TRACE(_T("Executable filename = %s\n"), AfxGetApp()->m_pszExeName);
Requirements
Headerafxwin.h
AfxGetAppName
De geretourneerde tekenreeks kan worden gebruikt voor diagnostische berichten of als hoofdmap voor tijdelijke tekenreeksnamen.
LPCTSTR AFXAPI AfxGetAppName();
Return Value
Een door null beëindigde tekenreeks met de naam van de toepassing.
Example
// Print the application name to the debugger output window.
TRACE(_T("Application name is %s\n"), AfxGetAppName());
Requirements
Headerafxwin.h
AfxGetInstanceHandle
Met deze functie kunt u de exemplaarhandgreep van de huidige toepassing ophalen.
HINSTANCE AFXAPI AfxGetInstanceHandle();
Return Value
Een HINSTANCE naar het huidige exemplaar van de toepassing. Als de aanroepen vanuit een DLL die is gekoppeld aan de USRDLL-versie van MFC, wordt er een HINSTANCE aan de DLL geretourneerd.
Remarks
AfxGetInstanceHandle retourneert altijd het HINSTANCE uitvoerbare bestand (.EXE), tenzij het wordt aangeroepen vanuit een DLL die is gekoppeld aan de USRDLL-versie van MFC. In dit geval wordt er een HINSTANCE geretourneerd naar het DLL-bestand.
Example
// Print the application instance handle to the debugger output window.
TRACE(_T("Application instance handle is 0x%0X\n"), AfxGetInstanceHandle());
Requirements
Headerafxwin.h
AfxGetMainWnd
Als uw toepassing een OLE-server is, roept u deze functie aan om een aanwijzer op te halen naar het actieve hoofdvenster van de toepassing. Gebruik dit resultaat in plaats van rechtstreeks te verwijzen naar het m_pMainWnd lid van het toepassingsobject.
CWnd* AFXAPI AfxGetMainWnd();
Return Value
Retourneert een aanwijzer naar het framevensterobject dat het actieve document in de plaats bevat, als de server een object heeft dat actief is in een actieve container.
Als er geen object is dat in-place actief is binnen een container of als uw toepassing geen OLE-server is, retourneert deze functie het m_pMainWnd toepassingsobject.
Als AfxGetMainWnd deze wordt aangeroepen vanuit de primaire thread van de toepassing, wordt het hoofdvenster van de toepassing geretourneerd volgens de bovenstaande regels. Als de functie wordt aangeroepen vanuit een secundaire thread in de toepassing, retourneert de functie het hoofdvenster dat is gekoppeld aan de thread die de aanroep heeft gedaan.
Remarks
Als uw toepassing geen OLE-server is, is het aanroepen van deze functie gelijk aan het rechtstreeks verwijzen naar het m_pMainWnd lid van uw toepassingsobject.
Example
//The following line send a WM_CLOSE message
// to the Application's main window. This will cause the
// Application to exit.
AfxGetMainWnd()->PostMessage(WM_CLOSE, 0, 0);
Requirements
Headerafxwin.h
AfxGetPerUserRegistration
Gebruik deze functie om te bepalen of de toepassing registertoegang omleidt tot het HKEY_CURRENT_USER (HKCU) knooppunt.
BOOL AFXAPI AfxGetPerUserRegistration();
Return Value
TRUE geeft aan dat de registergegevens naar het HKCU knooppunt worden omgeleid.
FALSE geeft aan dat de toepassing registergegevens naar het standaardknooppunt schrijft. Het standaardknooppunt is HKEY_CLASSES_ROOT (HKCR).
Remarks
Als u registeromleiding inschakelt, wordt de toegang door het framework omgeleid van HKCR naar HKEY_CURRENT_USER\Software\Classes. Alleen de MFC- en ATL-frameworks worden beïnvloed door de omleiding.
Als u wilt wijzigen of de toepassing registertoegang omleidt, gebruikt u AfxSetPerUserRegistration.
Requirements
Headerafxstat_.h
AfxGetResourceHandle
Gebruik de HINSTANCE ingang die door deze functie wordt geretourneerd om rechtstreeks toegang te krijgen tot de resources van de toepassing, bijvoorbeeld in aanroepen naar de Windows-functie FindResource.
extern HINSTANCE AfxGetResourceHandle();
Return Value
Een HINSTANCE ingang waarbij de standaardbronnen van de toepassing worden geladen.
Example
//Load the menu specifying the module handle where resource is to be
//found & resource ID
HMENU hMenu = ::LoadMenu(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
Requirements
Headerafxwin.h
AfxGetThread
Roep deze functie aan om een aanwijzer op te halen naar het CWinThread object dat de momenteel uitgevoerde thread vertegenwoordigt.
CWinThread* AfxGetThread();
Return Value
Aanwijzer naar de thread die momenteel wordt uitgevoerd; anders NULL.
Remarks
Moet worden aangeroepen vanuit de thread.
Note
Als u een MFC-project aanroept AfxGetThread vanuit Visual C++ versie 4.2, 5.0 of 6.0, AfxGetThread roept u AfxGetApp aan als er geen thread wordt gevonden. In recentere versies van de compiler wordt AfxGetThread geretourneerd NULL als er geen thread is gevonden. Als u de toepassingsthread wilt gebruiken, moet u aanroepen AfxGetApp.
Example
//Print the current thread ID in the Debug Window
TRACE(_T("Current Thread ID = 0x%X\n"), AfxGetThread()->m_nThreadID);
Requirements
Headerafxwin.h
AfxInitRichEdit
Roep deze functie aan om het uitgebreide besturingselement voor bewerken (versie 1.0) voor de toepassing te initialiseren.
BOOL AFXAPI AfxInitRichEdit();
Remarks
Deze functie is beschikbaar voor compatibiliteit met eerdere versies. Nieuwe toepassingen moeten worden gebruikt AfxInitRichEdit2.
AfxInitRichEdit wordt geladen RICHED32.DLL om versie 1.0 van het uitgebreide besturingselement voor bewerken te initialiseren. Als u versie 2.0 en 3.0 van het uitgebreide besturingselement voor bewerken wilt gebruiken, RICHED20.DLL moet u laden. Het wordt geladen door een aanroep naar AfxInitRichEdit2.
Als u uitgebreide besturingselementen voor bewerken in bestaande Visual C++-toepassingen wilt bijwerken naar versie 2.0, opent u het . RC-bestand als tekst, wijzig de klassenaam van elk besturingselement voor rtf bewerken van 'RICHEDIT' in 'RichEdit20a'. Vervang vervolgens de aanroep door AfxInitRichEditAfxInitRichEdit2.
Met deze functie wordt ook de algemene besturingsbibliotheek geïnitialiseerd als de bibliotheek nog niet is geïnitialiseerd voor het proces. Als u het uitgebreide bewerkingsbesturingselement rechtstreeks vanuit uw MFC-toepassing gebruikt, roept u deze functie aan om ervoor te zorgen dat MFC de uitgebreide bewerkingsruntime heeft geïnitialiseerd. Als u de Create methode van CRichEditCtrl, CRichEditViewof CRichEditDoc, aanroept, hoeft u deze functie doorgaans niet aan te roepen, maar in sommige gevallen is dit mogelijk noodzakelijk.
Requirements
Headerafxwin.h
AfxInitRichEdit2
Roep deze functie aan om het uitgebreide besturingselement voor bewerken (versie 2.0 en hoger) voor de toepassing te initialiseren.
BOOL AFXAPI AfxInitRichEdit2();
Remarks
Roep deze functie aan om versie RICHED20.DLL 2.0 van het uitgebreide bewerkingsbesturingselement te laden en te initialiseren. Als u de Create methode van CRichEditCtrl, CRichEditViewof CRichEditDoc, aanroept, hoeft u deze functie doorgaans niet aan te roepen, maar in sommige gevallen is dit mogelijk noodzakelijk.
Requirements
Headerafxwin.h
AfxIsExtendedFrameClass
Bepaalt of het opgegeven venster een uitgebreid frameobject is.
Syntax
BOOL AFXAPI AfxIsExtendedFrameClass( CWnd* pWnd );
Parameters
pWnd
[in] Een aanwijzer naar een object dat is afgeleid van CWnd.
Return Value
TRUE als het opgegeven venster een uitgebreid frameobject is; anders FALSE.
Remarks
Deze methode retourneert TRUE als pWnd deze is afgeleid van een van de volgende klassen:
CFrameWndExCMDIFrameWndExCOleIPFrameWndExCOleDocIPFrameWndExCMDIChildWndEx
Deze methode is handig wanneer u moet valideren dat een functie of methodeparameter een uitgebreid framevenster is.
Requirements
Header:afxpriv.h
AfxIsMFCToolBar
Bepaalt of het opgegeven venster een werkbalkobject is.
Syntax
BOOL AFXAPI AfxIsMFCToolBar(CWnd* pWnd);
Parameters
pWnd
[in] Een aanwijzer naar een object dat is afgeleid van CWnd.
Return Value
TRUE als het opgegeven venster een werkbalkobject is; anders FALSE.
Remarks
Deze methode retourneert TRUE als pWnd deze is afgeleid van CMFCToolBar. Deze methode is handig wanneer u moet valideren dat een functie of methodeparameter een CMFCToolBar object is.
Requirements
Header:afxpriv.h
AfxKeyboardManager
Pointer to the global keyboard manager.
Syntax
CKeyboardManager* afxKeyboardManager;
Requirements
Header:afxkeyboardmanager.h
AfxLoadLibrary
Gebruik AfxLoadLibrary deze module om een DLL-module toe te wijzen.
HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);
Parameters
lpszModuleName
Verwijst naar een door null beëindigde tekenreeks die de naam van de module bevat (een .DLL of .EXE bestand). De opgegeven naam is de bestandsnaam van de module.
Als de tekenreeks een pad opgeeft, maar het bestand niet bestaat in de opgegeven map, mislukt de functie.
Als er geen pad is opgegeven en de bestandsnaamextensie wordt weggelaten, wordt de standaardextensie .DLL toegevoegd. De bestandsnaamtekenreeks kan echter een volgteken (.) bevatten om aan te geven dat de modulenaam geen extensie heeft. Wanneer er geen pad is opgegeven, gebruikt de functie de zoekvolgorde voor bureaubladtoepassingen.
Return Value
Als de functie slaagt, is de retourwaarde een ingang voor de module. Bij een fout is NULLde retourwaarde .
Remarks
Het retourneert een ingang die kan worden gebruikt GetProcAddress om het adres van een DLL-functie op te halen.
AfxLoadLibrary kan ook worden gebruikt om andere uitvoerbare modules toe te wijzen.
Elk proces onderhoudt een referentieaantal voor elke geladen bibliotheekmodule. Dit aantal verwijzingen wordt steeds verhoogd wanneer AfxLoadLibrary deze wordt aangeroepen en wordt steeds afgebroken telkens AfxFreeLibrary wanneer deze wordt aangeroepen. Wanneer het aantal verwijzingen nul bereikt, wordt de module niet toegewezen vanuit de adresruimte van het aanroepproces en is de ingang niet meer geldig.
Zorg ervoor dat u AfxLoadLibrary gebruikmaakt van en AfxFreeLibrary (in plaats van de Win32-functies LoadLibrary en FreeLibrary) als uw toepassing meerdere threads gebruikt en als er dynamisch een MFC-extensie-DLL wordt geladen. Het gebruik AfxLoadLibrary en AfxFreeLibrary zorgt ervoor dat de opstart- en afsluitcode die wordt uitgevoerd wanneer de DLL van de MFC-extensie wordt geladen en wordt verwijderd, de globale MFC-status niet beschadigd.
Voor het gebruik AfxLoadLibrary in een toepassing moet u dynamisch verbinding maken met de DLL-versie van MFC. Het headerbestand voor AfxLoadLibrary, Afxdll_.his alleen opgenomen als MFC is gekoppeld aan de toepassing als DLL. Deze vereiste is standaard, omdat u een koppeling moet maken naar de DLL-versie van MFC voor het gebruik of maken van MFC-extensie-DLL's.
Example
// The following shows how to create a MDI based application
// using a generic CView derived class that is implemented in
// a dynamically loaded MFC Extension DLL.
typedef CRuntimeClass *(*GETDLLVIEW)();
BOOL CUserApp::InitInstance()
{
// Standard Application Wizard generated initialization excluded.
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views
//Load MFC Extension DLL based view class.
m_hViewDll = AfxLoadLibrary(szMyViewDllPath);
if (!m_hViewDll)
{
CString str;
str.Format(_T("Error: Cannot find component %s"), szMyViewDllPath);
AfxMessageBox(str);
return FALSE;
}
GETDLLVIEW GetMyView = (GETDLLVIEW)GetProcAddress(m_hViewDll, "GetMyView");
ASSERT(GetMyView != NULL);
CMultiDocTemplate *pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_NVC_MFC_DLLUserTYPE,
RUNTIME_CLASS(CUserDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
GetMyView());
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// Standard Application Wizard generated initialization excluded.
return TRUE;
}
int CUserApp::ExitInstance()
{
if (NULL != m_hViewDll)
{
AfxFreeLibrary(m_hViewDll);
m_hViewDll = NULL;
}
return CWinApp::ExitInstance();
}
Requirements
Headerafxdll_.h
AfxLoadLibraryEx
Gebruik AfxLoadLibraryEx deze module om een DLL-module toe te wijzen.
HINSTANCE AFXAPI AfxLoadLibraryEx(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags);
Parameters
lpFileName
Verwijst naar een door null beëindigde tekenreeks die de naam van de module bevat (een .DLL of .EXE bestand). De opgegeven naam is de bestandsnaam van de module.
Als de tekenreeks een pad opgeeft, maar het bestand niet bestaat in de opgegeven map, mislukt de functie.
Als er geen pad is opgegeven en de bestandsnaamextensie wordt weggelaten, wordt de standaardextensie .DLL toegevoegd. De bestandsnaamtekenreeks kan echter een volgteken (.) bevatten om aan te geven dat de modulenaam geen extensie heeft. Wanneer er geen pad is opgegeven, gebruikt de functie de zoekvolgorde voor bureaubladtoepassingen.
hFile
Deze parameter is gereserveerd voor toekomstig gebruik. Het moet zijn NULL.
dwFlags
De actie die moet worden uitgevoerd bij het laden van de module. Als er geen vlaggen zijn opgegeven, is het gedrag van deze functie identiek aan de AfxLoadLibrary functie. De mogelijke waarden van deze parameter worden beschreven in de LoadLibraryEx documentatie.
Return Value
Als de functie slaagt, is de retourwaarde een ingang voor de module. Bij een fout is NULLde retourwaarde .
Remarks
AfxLoadLibraryEx retourneert een ingang die kan worden gebruikt GetProcAddress om het adres van een DLL-functie op te halen.
AfxLoadLibraryEx kan ook worden gebruikt om andere uitvoerbare modules toe te wijzen.
Elk proces onderhoudt een referentieaantal voor elke geladen bibliotheekmodule. Dit aantal verwijzingen wordt steeds verhoogd wanneer AfxLoadLibraryEx deze wordt aangeroepen en wordt steeds afgebroken telkens AfxFreeLibrary wanneer deze wordt aangeroepen. Wanneer het aantal verwijzingen nul bereikt, wordt de module niet toegewezen vanuit de adresruimte van het aanroepproces en is de ingang niet meer geldig.
Zorg ervoor dat u AfxLoadLibraryEx gebruikmaakt van en AfxFreeLibrary (in plaats van de Win32-functies LoadLibraryEx en FreeLibrary) als uw toepassing meerdere threads gebruikt en als er dynamisch een MFC-extensie-DLL wordt geladen. Het gebruik AfxLoadLibraryEx en AfxFreeLibrary zorgt ervoor dat de opstart- en afsluitcode die wordt uitgevoerd wanneer de DLL van de MFC-extensie wordt geladen en verwijderd, de globale MFC-status niet beschadigd.
Voor het gebruik AfxLoadLibraryEx in een toepassing moet u dynamisch verbinding maken met de DLL-versie van MFC. Het headerbestand voor AfxLoadLibraryEx, Afxdll_.his alleen opgenomen als MFC is gekoppeld aan de toepassing als DLL. Deze vereiste is standaard, omdat u een koppeling moet maken naar de DLL-versie van MFC voor het gebruik of maken van MFC-extensie-DLL's.
Requirements
Headerafxdll_.h
AfxMenuTearOffManager
Wijs de globale menumanager aan.
Syntax
CMenuTearOffManager* g_pTearOffMenuManager;
Requirements
Header:afxmenutearoffmanager.h
AfxMouseManager
Pointer to the global mouse manager.
Syntax
CMouseManager* afxMouseManager;
Requirements
Header:afxmousemanager.h
AfxRegisterClass
Gebruik deze functie om vensterklassen te registreren in een DLL die gebruikmaakt van MFC.
BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
Parameters
lpWndClass
Wijs een WNDCLASS structuur aan met informatie over de vensterklasse die moet worden geregistreerd. Zie de Windows SDK voor meer informatie over deze structuur.
Return Value
TRUE als de klasse is geregistreerd; anders FALSE.
Remarks
Als u deze functie gebruikt, wordt de klasse automatisch uitgeschreven wanneer het DLL-bestand wordt verwijderd.
In niet-DLL-builds wordt de AfxRegisterClass id gedefinieerd als een macro die wordt toegewezen aan de Windows-functie RegisterClass, omdat klassen die zijn geregistreerd in een toepassing, automatisch worden uitgeschakeld. Als u AfxRegisterClass in plaats van RegisterClass, uw code kan worden gebruikt zonder dat u zowel in een toepassing als in een DLL hoeft te wijzigen.
Example
// Register your unique class name that you wish to use
WNDCLASS wndcls;
memset(&wndcls, 0, sizeof(WNDCLASS)); // start with NULL defaults
wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
//you can specify your own window procedure
wndcls.lpfnWndProc = ::DefWindowProc;
wndcls.hInstance = AfxGetInstanceHandle();
wndcls.hIcon = LoadIcon(wndcls.hInstance, MAKEINTRESOURCE(IDI_MYICON));
wndcls.hCursor = LoadCursor(wndcls.hInstance, MAKEINTRESOURCE(IDC_ARROW));
wndcls.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndcls.lpszMenuName = NULL;
// Specify your own class name for using FindWindow later
wndcls.lpszClassName = _T("MyNewClass");
// Register the new class and trace if it fails
if(!AfxRegisterClass(&wndcls))
{
TRACE("Class Registration Failed\n");
}
Requirements
Headerafxwin.h
AfxRegisterWndClass
Hiermee kunt u uw eigen vensterklassen registreren.
LPCTSTR AFXAPI AfxRegisterWndClass(
UINT nClassStyle,
HCURSOR hCursor = 0,
HBRUSH hbrBackground = 0,
HICON hIcon = 0);
Parameters
nClassStyle
Hiermee geeft u de Windows-klassestijl of combinatie van stijlen op, gemaakt met behulp van de operator bitwise-OR (|) voor de vensterklasse. Zie de WNDCLASS structuur in de Windows SDK voor een lijst met klassestijlen. Als NULLde standaardwaarden als volgt zijn ingesteld:
Hiermee stelt u de muisstijl
CS_DBLCLKSin op, waarmee dubbelklikberichten naar de vensterprocedure worden verzonden wanneer de gebruiker dubbelklikt op de muis.Hiermee stelt u de stijl van de pijlcursor in op de Windows-standaard
IDC_ARROW.Hiermee stelt u het achtergrondborstel in op
NULL, zodat het venster de achtergrond niet wist.Hiermee stelt u het pictogram in op het standaardpictogram van het Windows-logo met golvende vlag.
hCursor
Hiermee geeft u een ingang voor de cursorresource die moet worden geïnstalleerd in elk venster dat is gemaakt op basis van de vensterklasse. If you use the default of 0, you'll get the standard IDC_ARROW cursor.
hbrBackground
Hiermee geeft u een ingang voor de kwastresource die moet worden geïnstalleerd in elk venster dat is gemaakt op basis van de vensterklasse. If you use the default of 0, you'll have a NULL background brush, and by default, your window won't erase its background while processing WM_ERASEBKGND.
hIcon
Hiermee geeft u een ingang voor de pictogramresource die moet worden geïnstalleerd in elk venster dat is gemaakt op basis van de vensterklasse. If you use the default of 0, you'll get the standard, waving-flag Windows logo icon.
Return Value
Een door null beëindigde tekenreeks met de klassenaam. U kunt deze klassenaam doorgeven aan de Create lidfunctie in CWnd of andere **CWnd-**afgeleide klassen om een venster te maken. De naam wordt gegenereerd door de Microsoft Foundation Class Library.
Note
De retourwaarde is een aanwijzer naar een statische buffer. Als u deze tekenreeks wilt opslaan, wijst u deze toe aan een CString variabele.
Remarks
De Microsoft Foundation Class Library registreert automatisch verschillende standaardvensterklassen voor u. Roep deze functie aan als u uw eigen vensterklassen wilt registreren.
De naam die voor een klasse is geregistreerd, AfxRegisterWndClass is alleen afhankelijk van de parameters. Als u meerdere keren met identieke parameters aanroept AfxRegisterWndClass , wordt er alleen een klasse bij de eerste aanroep geregistreerd. Latere aanroepen met AfxRegisterWndClass identieke parameters retourneren de reeds geregistreerde klassenaam.
Als u meerdere CWndafgeleide klassen met identieke parameters aanroeptAfxRegisterWndClass, in plaats van een afzonderlijke vensterklasse voor elke klasse op te halen, deelt elke klasse dezelfde vensterklasse. Dit delen kan problemen veroorzaken als de CS_CLASSDC klassestijl wordt gebruikt. In plaats van meerdere CS_CLASSDC vensterklassen krijgt u slechts één CS_CLASSDC vensterklasse. Alle C++-vensters die gebruikmaken van die klasse delen dezelfde DC. Als u dit probleem wilt voorkomen, roept AfxRegisterClass u aan om de klasse te registreren.
Raadpleeg Technical Note TN001: Vensterklasseregistratie voor meer informatie over de registratie van vensterklassen en de AfxRegisterWndClass functie.
Example
CString strMyClass;
// load stock cursor, brush, and icon for
// my own window class
try
{
strMyClass = AfxRegisterWndClass(
CS_VREDRAW | CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW),
(HBRUSH)::GetStockObject(WHITE_BRUSH),
::LoadIcon(NULL, IDI_APPLICATION));
}
catch (CResourceException *pEx)
{
AfxMessageBox(_T("Couldn't register class! (Already registered?)"));
pEx->Delete();
}
Requirements
Headerafxwin.h
AfxSetPerUserRegistration
Hiermee stelt u in of de toepassing registertoegang omleidt tot het HKEY_CURRENT_USER (HKCU) knooppunt.
void AFXAPI AfxSetPerUserRegistration(BOOL bEnable);
Parameters
bEnable
[in] TRUE geeft aan dat de registergegevens naar het HKCU knooppunt worden omgeleid.
FALSE geeft aan dat de toepassing registergegevens naar het standaardknooppunt schrijft. Het standaardknooppunt is HKEY_CLASSES_ROOT (HKCR).
Remarks
Vóór Windows Vista gebruikten toepassingen die toegang hebben tot het register vaak het HKEY_CLASSES_ROOT knooppunt. Met Windows Vista of latere besturingssystemen moet u echter een toepassing uitvoeren in verhoogde modus om naar te HKCRschrijven.
Met deze methode kan uw toepassing lezen en schrijven naar het register zonder in verhoogde modus uit te voeren. Het werkt door registertoegang om te leiden van HKCR naar HKCU. Zie Linker Property Pages voor meer informatie.
Als u registeromleiding inschakelt, wordt de toegang door het framework omgeleid van HKCR naar HKEY_CURRENT_USER\Software\Classes. Alleen de MFC- en ATL-frameworks worden beïnvloed door de omleiding.
De standaard implementatie heeft toegang tot het register onder HKCR.
Requirements
Headerafxstat_.h
AfxSetResourceHandle
Gebruik deze functie om de HINSTANCE ingang in te stellen die bepaalt waar de standaardbronnen van de toepassing worden geladen.
void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
Parameters
hInstResource
Het exemplaar of de module wordt verwerkt in een .EXE- of DLL-bestand waaruit de resources van de toepassing worden geladen.
Example
// This code is taken from CMyApp::InitInstance
HINSTANCE hRes = NULL;
hRes = LoadLibrary(_T("Resource.dll"));
if (hRes)
AfxSetResourceHandle(hRes);
Requirements
Headerafxwin.h
AfxShellManager
Pointer to the global shell manager.
Syntax
CShellManager* afxShellManager;
Requirements
Header:afxshellmanager.h
AfxSocketInit
Roep deze functie aan in uw CWinApp::InitInstance onderdrukking om Windows Sockets te initialiseren.
BOOL AfxSocketInit(WSADATA* lpwsaData = NULL);
Parameters
lpwsaData
Een aanwijzer naar een WSADATA structuur. Als lpwsaData dit niet gelijk is aan NULL, wordt het adres van de WSADATA structuur gevuld door de aanroep naar WSAStartup. Deze functie zorgt er ook voor dat WSACleanup u wordt aangeroepen voordat de toepassing wordt beëindigd.
Return Value
Niet-nul als de functie is geslaagd; anders 0.
Remarks
Wanneer u MFC-sockets gebruikt in secundaire threads in een statisch gekoppelde MFC-toepassing, moet u elke thread aanroepen AfxSocketInit die sockets gebruikt om de socketbibliotheken te initialiseren.
AfxSocketInit Standaard wordt alleen aangeroepen in de primaire thread.
Requirements
Headerafxsock.h
AfxUserToolsManager
Wijs de globale manager van gebruikershulpprogramma's aan.
Syntax
CUserToolsManager* afxUserToolsManager;
Requirements
Header:afxusertoolsmanager.h
AfxWinInit
Deze functie wordt aangeroepen door de door MFC geleverde WinMain functie, als onderdeel van de CWinApp initialisatie van een OP GUI gebaseerde toepassing, om MFC te initialiseren.
BOOL AFXAPI AfxWinInit(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow);
Parameters
hInstance
De ingang van de module die momenteel wordt uitgevoerd.
hPrevInstance
Een ingang naar een eerdere instantie van de toepassing. Voor een Win32-toepassing is deze parameter altijd NULL.
lpCmdLine
Verwijst naar een door null beëindigde tekenreeks die de opdrachtregel voor de toepassing opgeeft.
nCmdShow
Hiermee geeft u op hoe het hoofdvenster van een GUI-toepassing wordt weergegeven.
Remarks
Voor een consoletoepassing die de door MFC geleverde WinMain functie niet gebruikt, moet u rechtstreeks aanroepen AfxWinInit om MFC te initialiseren.
Als u uzelf aanroept AfxWinInit , moet u een exemplaar van een CWinApp klasse declareren. Voor een consoletoepassing kunt u ervoor kiezen om uw eigen klasse niet af te leiden van CWinApp en in plaats daarvan een exemplaar van CWinApp rechtstreeks te gebruiken. Deze techniek is geschikt als u besluit om alle functionaliteit voor uw toepassing in uw implementatie van main.
Note
Wanneer er een activeringscontext voor een assembly wordt gemaakt, maakt MFC gebruik van een manifestresource die wordt geleverd door de gebruikersmodule. De activeringscontext wordt gemaakt in AfxWinInit. Zie Ondersteuning voor activeringscontexten in de MFC-modulestatus voor meer informatie.
Example
#include <afx.h>
#include <afxdb.h>
int _tmain(int /*argc*/, TCHAR * /*argv[]*/, TCHAR * /*envp[]*/)
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
// try to connect to an ODBC database that doesn't exist
// (this wouldn't work at all without initializing MFC)
CDatabase db;
try
{
db.Open(_T("This Databsae Doesn't Exist"));
// we shouldn't realistically get here
_tprintf_s(_T("Successful!\n")
_T("Closing ...\n"));
db.Close();
_tprintf_s(_T("Closed!"));
}
catch (CDBException *pEx)
{
// we got an exception! print an error message
// (this wouldn't work without initializing MFC)
TCHAR sz[1024];
_tprintf_s(_T("Error: "));
if (pEx->GetErrorMessage(sz, 1024))
_tprintf_s(sz);
else
_tprintf_s(_T("No error message was available"));
_tprintf_s(_T("\n"));
pEx->Delete();
nRetCode = 1;
}
}
return nRetCode;
}
Requirements
Headerafxwin.h
See also
macro's en globale
CWinApp klasse
CContextMenuManager klasse
CWnd klasse
CFrameWndEx klasse
CMFCToolBar klasse
CKeyboardManager klasse
CMenuTearOffManager klasse
CMouseManager klasse
CShellManager klasse
CUserToolsManager klasse