Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous écrivez une application, vous créez un objet dérivé unique CWinApp. Parfois, vous souhaiterez peut-être obtenir des informations sur cet objet en dehors de l’objet CWinAppdérivé. Vous pouvez également avoir besoin d’accéder à d’autres objets « manager » globaux.
La bibliothèque de classes Microsoft Foundation fournit les fonctions globales suivantes pour vous aider à accomplir ces tâches :
Fonctions d’information et de gestion des applications
| Name | Description |
|---|---|
AfxBeginThread |
Crée un nouveau thread. |
AfxContextMenuManager |
Pointeur vers le gestionnaire de menu contextuel global. |
AfxEndThread |
Met fin au thread actuel. |
AfxFindResourceHandle |
Guide la chaîne de ressources et localise une ressource spécifique par ID de ressource et type de ressource. |
AfxFreeLibrary |
Décrémente le nombre de références du module DLL (Dynamic-Link Library) chargé. Lorsque le nombre de références atteint zéro, le module n’est pas mappé. |
AfxGetApp |
Retourne un pointeur vers l’objet unique CWinApp de l’application. |
AfxGetAppName |
Retourne une chaîne qui contient le nom de l’application. |
AfxGetInstanceHandle |
Retourne une HINSTANCE valeur représentant cette instance de l’application. |
AfxGetMainWnd |
Retourne un pointeur vers la fenêtre « principale » actuelle d’une application non OLE ou la fenêtre frame sur place d’une application serveur. |
AfxGetPerUserRegistration |
Utilisez cette fonction pour déterminer si l’application redirige l’accès au Registre vers le HKEY_CURRENT_USER nœud (HKCU). |
AfxGetResourceHandle |
Retourne une HINSTANCE valeur à la source des ressources par défaut de l’application. Permet d’accéder directement aux ressources de l’application. |
AfxGetThread |
Retrieves a pointer to the current CWinThread object. |
AfxInitRichEdit |
Initialise le contrôle d’édition enrichi version 1.0 pour l’application. |
AfxInitRichEdit2 |
Initialise la version 2.0 et les versions ultérieures du contrôle d’édition enrichi pour l’application. |
AfxIsExtendedFrameClass |
Détermine si la fenêtre donnée est un objet frame étendu. |
AfxIsMFCToolBar |
Détermine si la fenêtre donnée est un objet de barre d’outils. |
AfxKeyboardManager |
Pointer to the global keyboard manager. |
AfxLoadLibrary |
Mappe un module DLL et retourne un handle qui peut être utilisé pour obtenir l’adresse d’une fonction DLL. |
AfxLoadLibraryEx |
Mappe un module DLL à l’aide des options spécifiées et retourne un handle qui peut être utilisé pour obtenir l’adresse d’une fonction DLL. |
AfxMenuTearOffManager |
Pointeur vers le gestionnaire de menus déchirurant global. |
AfxMouseManager |
Pointer to the global mouse manager. |
AfxRegisterClass |
Inscrit une classe de fenêtre dans une DLL qui utilise MFC. |
AfxRegisterWndClass |
Inscrit une classe de fenêtre Windows pour compléter celles inscrites automatiquement par MFC. |
AfxSetPerUserRegistration |
Définit si l’application redirige l’accès au Registre vers le HKEY_CURRENT_USER nœud (HKCU). |
AfxSetResourceHandle |
Définit le handle HINSTANCE où les ressources par défaut de l’application sont chargées. |
AfxShellManager |
Pointer to the global shell manager. |
AfxSocketInit |
Appelé dans un CWinApp::InitInstance remplacement pour initialiser les sockets Windows. |
AfxUserToolsManager |
Pointeur vers le gestionnaire d’outils utilisateur global. |
AfxWinInit |
Appelé par la fonction fournie WinMain par MFC, dans le cadre de l’initialisation CWinApp d’une application basée sur l’interface graphique utilisateur, pour initialiser MFC. Doit être appelé directement pour les applications console qui utilisent MFC. |
AfxBeginThread
Appelez cette fonction pour créer un thread.
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
Pointe vers la fonction de contrôle du thread de travail. Le pointeur ne peut pas être NULL. Cette fonction doit être déclarée comme suit :
UINT __cdecl MyControllingFunction( LPVOID pParam );
pThreadClass
D’un RUNTIME_CLASS objet dérivé de CWinThread.
pParam
Paramètre à passer à la fonction de contrôle.
nPriority
Priorité à définir pour le thread. Pour obtenir la liste complète et la description des priorités disponibles, consultez SetThreadPriority le Kit de développement logiciel (SDK) Windows.
nStackSize
Spécifie la taille en octets de la pile pour le nouveau thread. Si 0, la taille de la pile est par défaut de la même taille que celle du thread de création.
dwCreateFlags
Spécifie un indicateur supplémentaire qui contrôle la création du thread. Cet indicateur peut contenir l’une des deux valeurs suivantes :
CREATE_SUSPENDEDDémarrez le thread avec un nombre d’interruptions d’un. Utilisez cette optionCREATE_SUSPENDEDsi vous souhaitez initialiser des données membres de l’objetCWinThread, telles quem_bAutoDeleteou des membres de votre classe dérivée, avant que le thread ne commence à s’exécuter. Une fois votre initialisation terminée, utilisezCWinThread::ResumeThreadcette option pour démarrer le thread en cours d’exécution. Le thread ne s’exécute pas tant qu’ilCWinThread::ResumeThreadn’est pas appelé.0 Start the thread immediately after creation.
lpSecurityAttrs
Pointe vers une SECURITY_ATTRIBUTES structure qui spécifie les attributs de sécurité du thread. Si NULL, les mêmes attributs de sécurité que le thread de création sont utilisés. Pour plus d’informations sur cette structure, consultez le Kit de développement logiciel (SDK) Windows.
Return Value
Pointeur vers l’objet thread nouvellement créé ou NULL en cas d’échec.
Remarks
La première forme de création d’un thread de AfxBeginThread travail. Le deuxième formulaire crée un thread qui peut servir de thread d’interface utilisateur ou de thread de travail.
AfxBeginThread crée un CWinThread objet, appelle sa CreateThread fonction pour commencer à exécuter le thread et retourne un pointeur vers le thread. Les vérifications sont effectuées tout au long de la procédure pour s’assurer que tous les objets sont désalloués correctement si une partie de la création échoue. Pour mettre fin au thread, appelez AfxEndThread à partir du thread ou revenez de la fonction de contrôle du thread de travail.
Le multithreading doit être activé par l’application ; sinon, cette fonction échoue. Pour plus d’informations sur l’activation de multithreading, consultez /MD, /MT( /LD Utiliser la bibliothèque d’exécution) .
Pour plus d’informations sur AfxBeginThread, consultez les articles Multithreading : Création de threads de travail et de multithreading : création de threads d’interface utilisateur.
Example
Consultez l’exemple pour CSocket::Attach.
Requirements
Headerafxwin.h
AfxContextMenuManager
Pointeur vers le gestionnaire de menu contextuel global.
Syntax
CContextMenuManager* afxContextMenuManager;
Requirements
Header:afxcontextmenumanager.h
AfxEndThread
Appelez cette fonction pour terminer le thread en cours d’exécution.
void AFXAPI AfxEndThread(
UINT nExitCode,
BOOL bDelete = TRUE);
Parameters
nExitCode
Spécifie le code de sortie du thread.
bDelete
Supprime l’objet thread de la mémoire.
Remarks
Doit être appelé à partir du thread pour être arrêté.
Pour plus d’informations sur AfxEndThread, consultez l’article Multithreading : Fin des threads.
Requirements
Headerafxwin.h
AfxFindResourceHandle
Permet AfxFindResourceHandle de parcourir la chaîne de ressources et de localiser une ressource spécifique par ID de ressource et type de ressource.
Syntax
HINSTANCE AFXAPI AfxFindResourceHandle( LPCTSTR lpszName, LPCTSTR lpszType );
Parameters
lpszName
Pointeur vers une chaîne contenant l’ID de ressource.
lpszType
Pointeur vers le type de ressource. Pour obtenir la liste des types de ressources, consultez FindResource le Kit de développement logiciel (SDK) Windows.
Return Value
Handle du module qui contient la ressource.
Remarks
AfxFindResourceHandle recherche la ressource spécifique et retourne un handle au module qui contient la ressource. La ressource peut se trouver dans n’importe quelle DLL d’extension MFC chargée.
AfxFindResourceHandle indique quelle ressource est présente.
Les modules sont recherchés dans cet ordre :
Le module principal, s’il s’agit d’une DLL d’extension MFC.
Non-system modules.
Language-specific modules.
Le module principal, s’il s’agit d’une DLL système.
System modules.
Requirements
Header:afxwin.h
AfxFreeLibrary
Les deux AfxFreeLibrary et AfxLoadLibrary conservent un nombre de références pour chaque module de bibliothèque chargé.
BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);
Parameters
hInstLib
Handle du module de bibliothèque chargé.
AfxLoadLibrary retourne ce handle.
Return Value
TRUE si la fonction réussit ; sinon, FALSE.
Remarks
AfxFreeLibrary décrémente le nombre de références du module DLL (Dynamic-Link Library) chargé. Lorsque le nombre de références atteint zéro, le module n’est pas mappé à partir de l’espace d’adressage du processus appelant et le handle n’est plus valide. Ce nombre de références est incrémenté chaque fois AfxLoadLibrary qu’il est appelé.
Avant de démapper un module de bibliothèque, le système permet à la DLL de se détacher des processus qui l’utilisent. Cela donne à la DLL la possibilité de nettoyer les ressources allouées pour le processus actuel. Une fois la fonction de point d’entrée retournée, le module de bibliothèque est supprimé de l’espace d’adressage du processus actuel.
Permet AfxLoadLibrary de mapper un module DLL.
Veillez à utiliser AfxFreeLibrary et AfxLoadLibrary (au lieu des fonctions FreeLibrary Win32 et LoadLibrary) si votre application utilise plusieurs threads. L’utilisation AfxLoadLibrary et AfxFreeLibrary la garantie que le code de démarrage et d’arrêt qui s’exécute lorsque la DLL d’extension MFC est chargée et déchargée n’endommage pas l’état MFC global.
Example
Consultez l’exemple pour AfxLoadLibrary.
Requirements
Headerafxdll_.h
AfxGetApp
Le pointeur retourné par cette fonction peut être utilisé pour accéder aux informations d’application telles que le code de distribution de messages principal ou la fenêtre la plus haute.
CWinApp* AFXAPI AfxGetApp();
Return Value
Pointeur vers l’objet unique CWinApp de l’application.
Remarks
Si cette méthode retourne NULL, il peut indiquer que la fenêtre principale de l’application n’a pas encore été entièrement initialisée. Il peut également indiquer un problème.
Example
// Print the application's executable filename.
TRACE(_T("Executable filename = %s\n"), AfxGetApp()->m_pszExeName);
Requirements
Headerafxwin.h
AfxGetAppName
La chaîne retournée peut être utilisée pour les messages de diagnostic ou comme racine pour les noms de chaînes temporaires.
LPCTSTR AFXAPI AfxGetAppName();
Return Value
Chaîne terminée par null contenant le nom de l’application.
Example
// Print the application name to the debugger output window.
TRACE(_T("Application name is %s\n"), AfxGetAppName());
Requirements
Headerafxwin.h
AfxGetInstanceHandle
Cette fonction vous permet de récupérer le handle d’instance de l’application actuelle.
HINSTANCE AFXAPI AfxGetInstanceHandle();
Return Value
À HINSTANCE l’instance actuelle de l’application. Si elle est appelée à partir d’une DLL liée à la version USRDLL de MFC, une HINSTANCE DLL est retournée.
Remarks
AfxGetInstanceHandle retourne toujours le HINSTANCE fichier exécutable (.EXE), sauf s’il est appelé à partir d’une DLL liée à la version USRDLL de MFC. Dans ce cas, elle retourne une HINSTANCE dll.
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
Si votre application est un serveur OLE, appelez cette fonction pour récupérer un pointeur vers la fenêtre principale active de l’application. Utilisez ce résultat au lieu de faire directement référence au m_pMainWnd membre de l’objet d’application.
CWnd* AFXAPI AfxGetMainWnd();
Return Value
Retourne un pointeur vers l’objet de fenêtre frame qui contient le document actif sur place, si le serveur possède un objet actif à l’intérieur d’un conteneur actif.
S’il n’existe aucun objet actif sur place dans un conteneur ou si votre application n’est pas un serveur OLE, cette fonction retourne l’objet m_pMainWnd de votre application.
Si AfxGetMainWnd elle est appelée à partir du thread principal de l’application, elle retourne la fenêtre principale de l’application en fonction des règles ci-dessus. Si la fonction est appelée à partir d’un thread secondaire dans l’application, la fonction retourne la fenêtre principale associée au thread qui a effectué l’appel.
Remarks
Si votre application n’est pas un serveur OLE, l’appel de cette fonction équivaut directement à faire référence au m_pMainWnd membre de votre objet d’application.
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
Utilisez cette fonction pour déterminer si l’application redirige l’accès au Registre vers le HKEY_CURRENT_USER nœud (HKCU).
BOOL AFXAPI AfxGetPerUserRegistration();
Return Value
TRUE indique que les informations de Registre sont dirigées vers le HKCU nœud.
FALSE indique que l’application écrit des informations de Registre dans le nœud par défaut. Le nœud par défaut est HKEY_CLASSES_ROOT (HKCR).
Remarks
Si vous activez la redirection de Registre, l’infrastructure redirige l’accès vers HKCRHKEY_CURRENT_USER\Software\Classes. Seuls les frameworks MFC et ATL sont affectés par la redirection.
Pour modifier si l’application redirige l’accès au Registre, utilisez AfxSetPerUserRegistration.
Requirements
Headerafxstat_.h
AfxGetResourceHandle
Utilisez le HINSTANCE handle retourné par cette fonction pour accéder directement aux ressources de l’application, par exemple dans les appels à la fonction FindResourceWindows.
extern HINSTANCE AfxGetResourceHandle();
Return Value
Handle HINSTANCE où les ressources par défaut de l’application sont chargées.
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
Appelez cette fonction pour obtenir un pointeur vers l’objet CWinThread représentant le thread en cours d’exécution.
CWinThread* AfxGetThread();
Return Value
Pointeur vers le thread en cours d’exécution ; sinon NULL.
Remarks
Doit être appelé à partir du thread.
Note
Si vous transférez un projet MFC appelant AfxGetThread à partir de Visual C++ versions 4.2, 5.0 ou 6.0, AfxGetThread appelle AfxGetApp si aucun thread n’est trouvé. Dans les versions plus récentes du compilateur, AfxGetThread retourne NULL si aucun thread n’a été trouvé. Si vous souhaitez que le thread d’application, vous devez appeler 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
Appelez cette fonction pour initialiser le contrôle d’édition enrichi (version 1.0) de l’application.
BOOL AFXAPI AfxInitRichEdit();
Remarks
Cette fonction est fournie pour la compatibilité descendante. Les nouvelles applications doivent utiliser AfxInitRichEdit2.
AfxInitRichEdit charge RICHED32.DLL pour initialiser la version 1.0 du contrôle d’édition enrichi. Pour utiliser la version 2.0 et 3.0 du contrôle d’édition enrichi, RICHED20.DLL vous devez être chargé. Il est chargé en effectuant un appel à AfxInitRichEdit2.
Pour mettre à jour des contrôles de modification enrichis dans les applications Visual C++ existantes vers la version 2.0, ouvrez le fichier . Fichier RC sous forme de texte, remplacez le nom de classe de chaque contrôle d’édition enrichi par «RICHEDIT » par «RichEdit20a ». Remplacez ensuite l’appel par AfxInitRichEditAfxInitRichEdit2.
Cette fonction initialise également la bibliothèque de contrôles communs, si la bibliothèque n’a pas déjà été initialisée pour le processus. Si vous utilisez le contrôle de modification enrichi directement à partir de votre application MFC, appelez cette fonction pour vous assurer que MFC a correctement initialisé le runtime de contrôle d’édition enrichi. Si vous appelez la Create méthode de CRichEditCtrl, CRichEditViewou CRichEditDoc, vous n’avez généralement pas besoin d’appeler cette fonction, mais dans certains cas, il peut être nécessaire.
Requirements
Headerafxwin.h
AfxInitRichEdit2
Appelez cette fonction pour initialiser le contrôle d’édition enrichi (version 2.0 et ultérieure) de l’application.
BOOL AFXAPI AfxInitRichEdit2();
Remarks
Appelez cette fonction pour charger et initialiser la RICHED20.DLL version 2.0 du contrôle d’édition enrichi. Si vous appelez la Create méthode de CRichEditCtrl, CRichEditViewou CRichEditDoc, vous n’avez généralement pas besoin d’appeler cette fonction, mais dans certains cas, il peut être nécessaire.
Requirements
Headerafxwin.h
AfxIsExtendedFrameClass
Détermine si la fenêtre donnée est un objet frame étendu.
Syntax
BOOL AFXAPI AfxIsExtendedFrameClass( CWnd* pWnd );
Parameters
pWnd
[in] Pointeur vers un objet dérivé de CWnd.
Return Value
TRUE si la fenêtre fournie est un objet frame étendu ; sinon FALSE.
Remarks
Cette méthode retourne TRUE si pWnd dérive de l’une des classes suivantes :
CFrameWndExCMDIFrameWndExCOleIPFrameWndExCOleDocIPFrameWndExCMDIChildWndEx
Cette méthode est utile quand vous devez valider le fait qu’un paramètre de fonction ou de méthode est une fenêtre frame étendue.
Requirements
Header:afxpriv.h
AfxIsMFCToolBar
Détermine si la fenêtre donnée est un objet de barre d’outils.
Syntax
BOOL AFXAPI AfxIsMFCToolBar(CWnd* pWnd);
Parameters
pWnd
[in] Pointeur vers un objet dérivé de CWnd.
Return Value
TRUE si la fenêtre fournie est un objet de barre d’outils ; sinon FALSE.
Remarks
Cette méthode retourne TRUE si pWnd elle dérive de CMFCToolBar. Cette méthode est utile lorsque vous devez valider qu’une fonction ou un paramètre de méthode est un CMFCToolBar objet.
Requirements
Header:afxpriv.h
AfxKeyboardManager
Pointer to the global keyboard manager.
Syntax
CKeyboardManager* afxKeyboardManager;
Requirements
Header:afxkeyboardmanager.h
AfxLoadLibrary
Permet AfxLoadLibrary de mapper un module DLL.
HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);
Parameters
lpszModuleName
Pointe vers une chaîne terminée par null qui contient le nom du module (un fichier .DLL ou .EXE). Le nom spécifié est le nom du fichier du module.
Si la chaîne spécifie un chemin d’accès, mais que le fichier n’existe pas dans le répertoire spécifié, la fonction échoue.
Si un chemin d’accès n’est pas spécifié et que l’extension de nom de fichier est omise, l’extension par défaut .DLL est ajoutée. Toutefois, la chaîne de nom de fichier peut inclure un caractère de point de fin (.) pour indiquer que le nom du module n’a pas d’extension. Quand aucun chemin d’accès n’est spécifié, la fonction utilise l’ordre de recherche pour les applications de bureau.
Return Value
Si la fonction réussit, la valeur de retour est un handle pour le module. En cas d’échec, la valeur de retour est NULL.
Remarks
Elle retourne un handle qui peut être utilisé pour GetProcAddress obtenir l’adresse d’une fonction DLL.
AfxLoadLibrary peut également être utilisé pour mapper d’autres modules exécutables.
Chaque processus conserve un nombre de références pour chaque module de bibliothèque chargé. Ce nombre de références est incrémenté chaque fois AfxLoadLibrary qu’il est appelé et décrémenté chaque fois AfxFreeLibrary qu’il est appelé. Lorsque le nombre de références atteint zéro, le module n’est pas mappé à partir de l’espace d’adressage du processus appelant et le handle n’est plus valide.
Veillez à utiliser AfxLoadLibrary et AfxFreeLibrary (au lieu des fonctions LoadLibrary Win32 et FreeLibrary) si votre application utilise plusieurs threads et s’il charge dynamiquement une DLL d’extension MFC. L’utilisation AfxLoadLibrary et AfxFreeLibrary l’insures que le code de démarrage et d’arrêt qui s’exécute lorsque la DLL d’extension MFC est chargée et déchargée n’endommage pas l’état MFC global.
L’utilisation AfxLoadLibrary dans une application vous oblige à lier dynamiquement la version DLL de MFC. Le fichier d’en-tête pour AfxLoadLibrary, Afxdll_.hest inclus uniquement si MFC est lié à l’application en tant que DLL. Cette exigence est par conception, car vous devez établir un lien vers la version DLL de MFC pour utiliser ou créer des DLL d’extension MFC.
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
Permet AfxLoadLibraryEx de mapper un module DLL.
HINSTANCE AFXAPI AfxLoadLibraryEx(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags);
Parameters
lpFileName
Pointe vers une chaîne terminée par null qui contient le nom du module (un fichier .DLL ou .EXE). Le nom spécifié est le nom du fichier du module.
Si la chaîne spécifie un chemin d’accès, mais que le fichier n’existe pas dans le répertoire spécifié, la fonction échoue.
Si un chemin d’accès n’est pas spécifié et que l’extension de nom de fichier est omise, l’extension par défaut .DLL est ajoutée. Toutefois, la chaîne de nom de fichier peut inclure un caractère de point de fin (.) pour indiquer que le nom du module n’a pas d’extension. Quand aucun chemin d’accès n’est spécifié, la fonction utilise l’ordre de recherche pour les applications de bureau.
hFile
Ce paramètre est réservé à un usage futur. Cela doit être NULL.
dwFlags
Action à entreprendre lors du chargement du module. Si aucun indicateur n’est spécifié, le comportement de cette fonction est identique à la AfxLoadLibrary fonction. Les valeurs possibles de ce paramètre sont décrites dans la LoadLibraryEx documentation.
Return Value
Si la fonction réussit, la valeur de retour est un handle pour le module. En cas d’échec, la valeur de retour est NULL.
Remarks
AfxLoadLibraryEx retourne un handle qui peut être utilisé pour GetProcAddress obtenir l’adresse d’une fonction DLL.
AfxLoadLibraryEx peut également être utilisé pour mapper d’autres modules exécutables.
Chaque processus conserve un nombre de références pour chaque module de bibliothèque chargé. Ce nombre de références est incrémenté chaque fois AfxLoadLibraryEx qu’il est appelé et décrémenté chaque fois AfxFreeLibrary qu’il est appelé. Lorsque le nombre de références atteint zéro, le module n’est pas mappé à partir de l’espace d’adressage du processus appelant et le handle n’est plus valide.
Veillez à utiliser AfxLoadLibraryEx et AfxFreeLibrary (au lieu des fonctions LoadLibraryEx Win32 et FreeLibrary) si votre application utilise plusieurs threads et s’il charge dynamiquement une DLL d’extension MFC. L’utilisation AfxLoadLibraryEx et AfxFreeLibrary la garantie que le code de démarrage et d’arrêt qui s’exécute lorsque la DLL d’extension MFC est chargée et déchargée n’endommage pas l’état MFC global.
L’utilisation AfxLoadLibraryEx dans une application vous oblige à lier dynamiquement la version DLL de MFC. Le fichier d’en-tête pour AfxLoadLibraryEx, Afxdll_.hest inclus uniquement si MFC est lié à l’application en tant que DLL. Cette exigence est par conception, car vous devez établir un lien vers la version DLL de MFC pour utiliser ou créer des DLL d’extension MFC.
Requirements
Headerafxdll_.h
AfxMenuTearOffManager
Pointeur vers le gestionnaire de menus déchirurant global.
Syntax
CMenuTearOffManager* g_pTearOffMenuManager;
Requirements
Header:afxmenutearoffmanager.h
AfxMouseManager
Pointer to the global mouse manager.
Syntax
CMouseManager* afxMouseManager;
Requirements
Header:afxmousemanager.h
AfxRegisterClass
Utilisez cette fonction pour inscrire des classes de fenêtre dans une DLL qui utilise MFC.
BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);
Parameters
lpWndClass
Pointeur vers une WNDCLASS structure contenant des informations sur la classe de fenêtre à inscrire. Pour plus d’informations sur cette structure, consultez le Kit de développement logiciel (SDK) Windows.
Return Value
TRUE si la classe est correctement inscrite ; sinon FALSE.
Remarks
Si vous utilisez cette fonction, la classe est automatiquement annulée lorsque la DLL est déchargée.
Dans les builds non DLL, l’identificateur AfxRegisterClass est défini en tant que macro qui est mappée à la fonction RegisterClassWindows, car les classes inscrites dans une application sont automatiquement annulées. Si vous utilisez AfxRegisterClass au lieu de RegisterClass, votre code peut être utilisé sans modifier à la fois dans une application et dans une DLL.
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
Permet d'enregistrer vos propres classes de fenêtre.
LPCTSTR AFXAPI AfxRegisterWndClass(
UINT nClassStyle,
HCURSOR hCursor = 0,
HBRUSH hbrBackground = 0,
HICON hIcon = 0);
Parameters
nClassStyle
Spécifie le style de classe Windows ou la combinaison de styles, créé à l’aide de l’opérateur bitwise-OR (|) pour la classe de fenêtre. Pour obtenir la liste des styles de classe, consultez la WNDCLASS structure dans le Kit de développement logiciel (SDK) Windows. Si NULL, les valeurs par défaut sont définies comme suit :
Définit le style
CS_DBLCLKSde la souris sur , qui envoie des messages en double-clic à la procédure de fenêtre lorsque l’utilisateur double-clique sur la souris.Définit le style de curseur de flèche sur la norme
IDC_ARROWWindows .Définit le pinceau
NULLd’arrière-plan sur , de sorte que la fenêtre n’efface pas son arrière-plan.Définit l'icône du logo Windows standard en forme de drapeau flottant.
hCursor
Spécifie un handle pour la ressource curseur à installer dans chaque fenêtre créée à partir de la classe de fenêtre. If you use the default of 0, you'll get the standard IDC_ARROW cursor.
hbrBackground
Spécifie un handle de la ressource pinceau à installer dans chaque fenêtre créée à partir de la classe de fenêtre. 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
Spécifie un handle de la ressource icône à installer dans chaque fenêtre créée à partir de la classe de fenêtre. If you use the default of 0, you'll get the standard, waving-flag Windows logo icon.
Return Value
Chaîne de caractères se terminant par null et contenant le nom de la classe. Vous pouvez passer ce nom de classe à la Create fonction membre dans CWnd ou à d’autres classes dérivées **CWnd-*** pour créer une fenêtre. Le nom est généré par la bibliothèque MFC.
Note
La valeur de retour est un pointeur vers une mémoire tampon statique. Pour enregistrer cette chaîne, attribuez-lui une variable CString.
Remarks
La bibliothèque MFC stocke automatiquement plusieurs classes de fenêtre standard pour vous. Appelez cette fonction si vous souhaitez stocker vos propres classes de fenêtre.
Le nom enregistré pour une classe par AfxRegisterWndClass dépend uniquement des paramètres. Si vous appelez AfxRegisterWndClass plusieurs fois avec des paramètres identiques, seule une classe lors du premier appel est enregistrée. Les appels ultérieurs vers des AfxRegisterWndClass paramètres identiques retournent le nom de classe déjà inscrit.
Si vous appelez AfxRegisterWndClass plusieurs CWndclasses dérivées avec des paramètres identiques, au lieu d’obtenir une classe de fenêtre distincte pour chaque classe, chaque classe partage la même classe de fenêtre. Ce partage peut entraîner des problèmes si le style de CS_CLASSDC classe est utilisé. Au lieu de plusieurs CS_CLASSDC classes de fenêtre, vous ne trouverez qu’une CS_CLASSDC seule classe de fenêtre. Toutes les fenêtres C++ qui utilisent cette classe partagent le même contrôleur de domaine. Pour éviter ce problème, appelez AfxRegisterClass pour inscrire la classe.
Reportez-vous à la note technique TN001 : Inscription de classe de fenêtre pour plus d’informations sur l’inscription de classe de fenêtre et la AfxRegisterWndClass fonction.
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
Définit si l’application redirige l’accès au Registre vers le HKEY_CURRENT_USER nœud (HKCU).
void AFXAPI AfxSetPerUserRegistration(BOOL bEnable);
Parameters
bEnable
[in] TRUE indique que les informations de Registre sont dirigées vers le HKCU nœud.
FALSE indique que l’application écrit des informations de Registre dans le nœud par défaut. Le nœud par défaut est HKEY_CLASSES_ROOT (HKCR).
Remarks
Avant Windows Vista, les applications qui ont accédé au Registre utilisent couramment le HKEY_CLASSES_ROOT nœud. Toutefois, avec les systèmes d’exploitation Windows Vista ou ultérieurs, vous devez exécuter une application en mode avec élévation de privilèges pour écrire HKCRdans .
Cette méthode permet à votre application de lire et d’écrire dans le Registre sans s’exécuter en mode avec élévation de privilèges. Il fonctionne en redirigeant l’accès au Registre à partir de HKCRHKCU. Pour plus d'informations, consultez Linker Property Pages.
Si vous activez la redirection de Registre, l’infrastructure redirige l’accès vers HKCRHKEY_CURRENT_USER\Software\Classes. Seuls les frameworks MFC et ATL sont affectés par la redirection.
L’implémentation par défaut accède au Registre sous HKCR.
Requirements
Headerafxstat_.h
AfxSetResourceHandle
Utilisez cette fonction pour définir le HINSTANCE handle qui détermine où les ressources par défaut de l’application sont chargées.
void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);
Parameters
hInstResource
Instance ou handle de module vers un fichier .EXE ou DLL à partir duquel les ressources de l’application sont chargées.
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
Appelez cette fonction dans votre CWinApp::InitInstance remplacement pour initialiser les sockets Windows.
BOOL AfxSocketInit(WSADATA* lpwsaData = NULL);
Parameters
lpwsaData
Pointeur vers une WSADATA structure. Si lpwsaData ce n’est pas le NULLcas, l’adresse de la WSADATA structure est remplie par l’appel à WSAStartup. Cette fonction garantit également qu’elle WSACleanup est appelée pour vous avant la fin de l’application.
Return Value
Une valeur différente de zéro si la fonction réussit ; sinon, 0.
Remarks
Lorsque vous utilisez des sockets MFC dans des threads secondaires dans une application MFC liée statiquement, vous devez appeler AfxSocketInit chaque thread qui utilise des sockets pour initialiser les bibliothèques de sockets. Par défaut, AfxSocketInit il est appelé uniquement dans le thread principal.
Requirements
Headerafxsock.h
AfxUserToolsManager
Pointeur vers le gestionnaire d’outils utilisateur global.
Syntax
CUserToolsManager* afxUserToolsManager;
Requirements
Header:afxusertoolsmanager.h
AfxWinInit
Cette fonction est appelée par la fonction fournie WinMain par MFC, dans le cadre de l’initialisation CWinApp d’une application basée sur l’interface utilisateur graphique, pour initialiser MFC.
BOOL AFXAPI AfxWinInit(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow);
Parameters
hInstance
Handle du module en cours d’exécution.
hPrevInstance
Handle vers une instance précédente de l’application. Pour une application Win32, ce paramètre est toujours NULL.
lpCmdLine
Pointe vers une chaîne terminée par null spécifiant la ligne de commande de l’application.
nCmdShow
Spécifie la façon dont la fenêtre principale d’une application GUI s’affiche.
Remarks
Pour une application console, qui n’utilise pas la fonction fournie par WinMain MFC, vous devez appeler AfxWinInit directement pour initialiser MFC.
Si vous vous appelez AfxWinInit vous-même, vous devez déclarer une instance d’une CWinApp classe. Pour une application console, vous pouvez choisir de ne pas dériver votre propre classe CWinApp et utiliser plutôt une instance de CWinApp directement. Cette technique est appropriée si vous décidez de laisser toutes les fonctionnalités de votre application dans votre implémentation de main.
Note
Lorsqu’il crée un contexte d’activation pour un assembly, MFC utilise une ressource manifeste fournie par le module utilisateur. Le contexte d’activation est créé dans AfxWinInit. Pour plus d’informations, consultez Prise en charge des contextes d’activation dans l’état du module MFC.
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
Macros et globals
CWinApp Classe
CContextMenuManager Classe
CWnd Classe
CFrameWndEx Classe
CMFCToolBar Classe
CKeyboardManager Classe
CMenuTearOffManager Classe
CMouseManager Classe
CShellManager Classe
CUserToolsManager Classe