Informacje o aplikacji i zarządzanie niąApplication Information and Management

Podczas pisania aplikacji utworzysz pojedynczy obiekt pochodny CWinApp.When you write an application, you create a single CWinApp-derived object. Czasami możesz chcieć uzyskać informacje o tym obiekcie spoza CWinApp obiektu pochodnego.At times, you may want to get information about this object from outside the CWinApp-derived object. Lub może być konieczne uzyskanie dostępu do innych globalnych obiektów "Manager".Or you may need access to other global "manager" objects.

Biblioteka MFC udostępnia następujące funkcje globalne, które ułatwiają wykonywanie następujących zadań:The Microsoft Foundation Class Library provides the following global functions to help you accomplish these tasks:

Informacje o aplikacji i funkcje zarządzaniaApplication Information and Management Functions

NazwaName OpisDescription
AfxBeginThreadAfxBeginThread Tworzy nowy wątek.Creates a new thread.
AfxContextMenuManagerAfxContextMenuManager Wskaźnik do globalnego Menedżera menu kontekstowego.Pointer to the global context menu manager.
AfxEndThreadAfxEndThread Kończy bieżący wątek.Terminates the current thread.
AfxFindResourceHandleAfxFindResourceHandle Wyszukuje łańcuch zasobów i lokalizuje określony zasób według identyfikatora zasobu i typu zasobu.Walks the resource chain and locate a specific resource by resource ID and resource type.
AfxFreeLibraryAfxFreeLibrary Zmniejsza liczbę odwołań do załadowanego modułu biblioteki dołączanej dynamicznie (DLL).Decrements the reference count of the loaded dynamic-link library (DLL) module. Gdy liczba odwołań osiągnie zero, moduł jest niezamapowany.When the reference count reaches zero, the module is unmapped.
AfxGetAppAfxGetApp Zwraca wskaźnik do pojedynczego CWinApp obiektu aplikacji.Returns a pointer to the application's single CWinApp object.
AfxGetAppNameAfxGetAppName Zwraca ciąg, który zawiera nazwę aplikacji.Returns a string that contains the application's name.
AfxGetInstanceHandleAfxGetInstanceHandle Zwraca HINSTANCE reprezentujący to wystąpienie aplikacji.Returns an HINSTANCE representing this instance of the application.
AfxGetMainWndAfxGetMainWnd Zwraca wskaźnik do bieżącego okna "głównego" aplikacji innej niż OLE lub okna ramki w miejscu aplikacji serwera.Returns a pointer to the current "main" window of a non-OLE application, or the in-place frame window of a server application.
AfxGetPerUserRegistrationAfxGetPerUserRegistration Użyj tej funkcji, aby określić, czy aplikacja przekierowuje dostęp do rejestru do węzła HKEY_CURRENT_USER (HKCU).Use this function to determine whether the application redirects registry access to the HKEY_CURRENT_USER (HKCU) node.
AfxGetResourceHandleAfxGetResourceHandle Zwraca HINSTANCE do źródła domyślnych zasobów aplikacji.Returns an HINSTANCE to the source of the application's default resources. Użyj, aby bezpośrednio uzyskać dostęp do zasobów aplikacji.Use to access the application's resources directly.
AfxGetThreadAfxGetThread Pobiera wskaźnik do bieżącego obiektu CWinThread .Retrieves a pointer to the current CWinThread object.
AfxInitRichEditAfxInitRichEdit Inicjuje kontrolkę edycji wzbogaconej w wersji 1,0 dla aplikacji.Initializes the version 1.0 rich edit control for the application.
Funkcja afxinitrichedit2AfxInitRichEdit2 Inicjuje w wersji 2,0 i nowszej kontrolkę edycji wzbogaconej dla aplikacji.Initializes the version 2.0 and later rich edit control for the application.
AfxIsExtendedFrameClassAfxIsExtendedFrameClass Określa, czy dane okno jest obiektem ramki rozszerzonej.Determines whether the given window is an extended frame object.
AfxIsMFCToolBarAfxIsMFCToolBar Określa, czy dany okno jest obiektem paska narzędzi.Determines whether the given window is a toolbar object.
AfxKeyboardManagerAfxKeyboardManager Wskaźnik do globalnego Menedżera klawiatury.Pointer to the global keyboard manager.
AfxLoadLibraryAfxLoadLibrary Mapuje moduł DLL i zwraca dojście, którego można użyć do uzyskania adresu funkcji DLL.Maps a DLL module and returns a handle that can be used to obtain the address of a DLL function.
AfxLoadLibraryExAfxLoadLibraryEx Mapuje moduł DLL przy użyciu określonych opcji i zwraca dojście, którego można użyć do uzyskania adresu funkcji DLL.Maps a DLL module using the specified options, and returns a handle that can be used to obtain the address of a DLL function.
AfxMenuTearOffManagerAfxMenuTearOffManager Wskaźnik do Menedżera menu odrywaniaglobalnego.Pointer to the global tear-off menu manager.
AfxMouseManagerAfxMouseManager Wskaźnik do globalnego Menedżera myszy.Pointer to the global mouse manager.
AfxRegisterClassAfxRegisterClass Rejestruje klasę okna w bibliotece DLL korzystającej z MFC.Registers a window class in a DLL that uses MFC.
AfxRegisterWndClass —AfxRegisterWndClass Rejestruje klasę okna systemu Windows, aby uzupełnić te zarejestrowane automatycznie przez MFC.Registers a Windows window class to supplement the ones registered automatically by MFC.
AfxSetPerUserRegistrationAfxSetPerUserRegistration Określa, czy aplikacja przekierowuje dostęp do rejestru do węzła HKEY_CURRENT_USER (HKCU).Sets whether the application redirects registry access to the HKEY_CURRENT_USER (HKCU) node.
AfxSetResourceHandleAfxSetResourceHandle Ustawia dojście HINSTANCE, w którym są ładowane domyślne zasoby aplikacji.Sets the HINSTANCE handle where the default resources of the application are loaded.
AfxShellManagerAfxShellManager Wskaźnik do Menedżera powłokiglobalnego.Pointer to the global shell manager.
AfxSocketInitAfxSocketInit Wywołuje się, CWinApp::InitInstance by można było zainicjować Windows Sockets.Called in a CWinApp::InitInstance override to initialize Windows Sockets.
AfxUserToolsManagerAfxUserToolsManager Wskaźnik do globalnego Menedżera narzędzi użytkownika.Pointer to the global user tools manager.
AfxWinInitAfxWinInit Wywoływane przez funkcję podaną przez MFC w WinMain ramach inicjalizacji CWinApp aplikacji opartej na graficznym interfejsie użytkownika, aby zainicjować MFC.Called by the MFC-supplied WinMain function, as part of the CWinApp initialization of a GUI-based application, to initialize MFC. Musi być wywoływana bezpośrednio dla aplikacji konsolowych używających MFC.Must be called directly for console applications that use MFC.

AfxBeginThreadAfxBeginThread

Wywołaj tę funkcję, aby utworzyć nowy wątek.Call this function to create a new 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);

ParametryParameters

pfnThreadProcpfnThreadProc
Wskazuje funkcję kontroli dla wątku roboczego.Points to the controlling function for the worker thread. Wskaźnik nie może mieć wartości NULL.The pointer can't be NULL. Ta funkcja musi być zadeklarowana w następujący sposób:This function must be declared as follows:

UINT __cdecl MyControllingFunction( LPVOID pParam );

pThreadClasspThreadClass
RUNTIME_CLASS obiektu pochodnego od CWinThread.The RUNTIME_CLASS of an object derived from CWinThread.

pParampParam
Parametr do przekazania do funkcji kontrolującej.Parameter to pass to the controlling function.

nPrioritynPriority
Priorytet ustawiony dla wątku.The priority to set for the thread. Aby uzyskać pełną listę i opis dostępnych priorytetów, zobacz SetThreadPriority w Windows SDK.For a full list and description of the available priorities, see SetThreadPriority in the Windows SDK.

nStackSizenStackSize
Określa rozmiar w bajtach stosu dla nowego wątku.Specifies the size in bytes of the stack for the new thread. Jeśli wartość jest równa 0, rozmiar stosu jest domyślnie taki sam jak stos tworzenia wątku.If 0, the stack size defaults to the same size stack as the creating thread.

dwCreateFlagsdwCreateFlags
Określa dodatkową flagę, która kontroluje tworzenie wątku.Specifies an additional flag that controls the creation of the thread. Ta flaga może zawierać jedną z dwóch wartości:This flag can contain one of two values:

  • CREATE_SUSPENDED uruchomić wątek z liczbą wstrzymania jednego.CREATE_SUSPENDED Start the thread with a suspend count of one. Użyj CREATE_SUSPENDED, jeśli chcesz zainicjować jakiekolwiek dane elementu członkowskiego CWinThread obiektu, takie jak m_bAutoDelete lub dowolnych elementów członkowskich klasy pochodnej, zanim wątek zacznie działać.Use CREATE_SUSPENDED if you want to initialize any member data of the CWinThread object, such as m_bAutoDelete or any members of your derived class, before the thread starts running. Po zakończeniu inicjowania Użyj CWinThread:: ResumeThread , aby uruchomić wątek uruchomiony.Once your initialization is complete, use CWinThread::ResumeThread to start the thread running. Wątek nie zostanie wykonany do momentu CWinThread::ResumeThread wywołania.The thread won't execute until CWinThread::ResumeThread is called.

  • 0 Rozpocznij wątek natychmiast po utworzeniu.0 Start the thread immediately after creation.

lpSecurityAttrslpSecurityAttrs
Wskazuje strukturę SECURITY_ATTRIBUTES , która określa atrybuty zabezpieczeń wątku.Points to a SECURITY_ATTRIBUTES structure that specifies the security attributes for the thread. Jeśli wartość jest równa NULL, używane są te same atrybuty zabezpieczeń co wątek tworzenia.If NULL, the same security attributes as the creating thread are used. Aby uzyskać więcej informacji na temat tej struktury, zobacz Windows SDK.For more information on this structure, see the Windows SDK.

Wartość zwracanaReturn Value

Wskaźnik do nowo utworzonego obiektu wątku lub wartość NULL, jeśli wystąpi awaria.Pointer to the newly created thread object, or NULL if a failure occurs.

UwagiRemarks

Pierwszy formularz AfxBeginThread tworzy wątek roboczy.The first form of AfxBeginThread creates a worker thread. Drugi formularz tworzy wątek, który może być używany jako wątek interfejsu użytkownika lub wątku roboczego.The second form creates a thread that may serve as a user-interface thread or as a worker thread.

AfxBeginThreadTworzy nowy CWinThread obiekt, wywołuje jego funkcję CreateThread myFunction, aby rozpocząć wykonywanie wątku, i zwraca wskaźnik do wątku.AfxBeginThread creates a new CWinThread object, calls its CreateThread function to start executing the thread, and returns a pointer to the thread. Kontrole są wykonywane w ramach procedury, aby upewnić się, że wszystkie obiekty są prawidłowo nieprzypisane, jeśli jakakolwiek część procesu tworzenia nie powiedzie się.Checks are made throughout the procedure to make sure all objects are deallocated properly should any part of the creation fail. Aby zakończyć wątek, wywołaj AfxEndThread z wewnątrz wątku lub Wróć z funkcji kontrolującej wątku roboczego.To end the thread, call AfxEndThread from within the thread, or return from the controlling function of the worker thread.

Wielowątkowość musi być włączona przez aplikację; w przeciwnym razie ta funkcja zakończy się niepowodzeniem.Multithreading must be enabled by the application; otherwise, this function will fail. Aby uzyskać więcej informacji na temat włączania wielowątkowości, zobacz /MD,/MT,/LD (Korzystanie z biblioteki wykonawczej).For more information on enabling multithreading, see /MD, /MT, /LD (Use run-time library).

Aby uzyskać więcej informacji na temat AfxBeginThread , zobacz artykuł wielowątkowość: Tworzenie wątków roboczych i wielowątkowość: Tworzenie wątków interfejsu użytkownika.For more information on AfxBeginThread, see the articles Multithreading: Creating Worker Threads and Multithreading: Creating User-Interface Threads.

PrzykładExample

Zobacz przykład dla CSocket:: Attach.See the example for CSocket::Attach.

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxContextMenuManagerAfxContextMenuManager

Wskaźnik do globalnego Menedżera menu kontekstowego.Pointer to the global context menu manager.

SkładniaSyntax

CContextMenuManager* afxContextMenuManager;

WymaganiaRequirements

Nagłówek: afxcontextmenumanager. hHeader: afxcontextmenumanager.h

AfxEndThreadAfxEndThread

Wywołaj tę funkcję, aby zakończyć aktualnie wykonywany wątek.Call this function to terminate the currently executing thread.

void AFXAPI AfxEndThread(
    UINT nExitCode,
    BOOL bDelete  = TRUE);

ParametryParameters

nExitCodenExitCode
Określa kod zakończenia wątku.Specifies the exit code of the thread.

bUsunięciebDelete
Usuwa obiekt wątku z pamięci.Deletes the thread object from memory.

UwagiRemarks

Musi być wywołana z poziomu wątku, aby zakończyć.Must be called from within the thread to be terminated.

Aby uzyskać więcej informacji na temat AfxEndThread , zobacz wielowątkowość artykułu: kończenie wątków.For more information on AfxEndThread, see the article Multithreading: Terminating Threads.

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxFindResourceHandleAfxFindResourceHandle

Służy AfxFindResourceHandle do przeszukiwania łańcucha zasobów i lokalizowania określonego zasobu według identyfikatora zasobu i typu zasobu.Use AfxFindResourceHandle to walk the resource chain and locate a specific resource by resource ID and resource type.

SkładniaSyntax

HINSTANCE AFXAPI AfxFindResourceHandle( LPCTSTR lpszName,  LPCTSTR lpszType );

ParametryParameters

lpszNamelpszName
Wskaźnik do ciągu zawierającego identyfikator zasobu.A pointer to a string containing the resource ID. lpszTypelpszType
Wskaźnik do typu zasobu.A pointer to the type of resource. Aby uzyskać listę typów zasobów, zobacz FindResource w Windows SDK.For a list of resource types, see FindResource in the Windows SDK.

Wartość zwracanaReturn Value

Dojście do modułu zawierającego zasób.A handle to the module that contains the resource.

UwagiRemarks

AfxFindResourceHandle znajduje określony zasób i zwraca dojście do modułu, który zawiera zasób.AfxFindResourceHandle finds the specific resource, and returns a handle to the module that contains the resource. Zasób może znajdować się we wszystkich załadowanych bibliotekach DLL rozszerzenia MFC.The resource might be in any MFC extension DLL that's loaded. AfxFindResourceHandle informuje o tym, który z nich ma zasób.AfxFindResourceHandle tells you which one has the resource.

Moduły są przeszukiwane w następującej kolejności:The modules are searched in this order:

  1. Moduł główny, jeśli jest to biblioteka DLL rozszerzenia MFC.The main module, if it's an MFC extension DLL.

  2. Moduły inne niż systemowe.Non-system modules.

  3. Moduły specyficzne dla języka.Language-specific modules.

  4. Moduł główny, jeśli jest to systemowa biblioteka DLL.The main module, if it's a system DLL.

  5. Moduły systemowe.System modules.

WymaganiaRequirements

Nagłówek: afxwin. hHeader: afxwin.h

AfxFreeLibraryAfxFreeLibrary

Obie AfxFreeLibrary i AfxLoadLibrary utrzymują liczbę odwołań dla każdego załadowanego modułu biblioteki.Both AfxFreeLibrary and AfxLoadLibrary maintain a reference count for each loaded library module.

BOOL AFXAPI AfxFreeLibrary(HINSTANCE hInstLib);

ParametryParameters

hInstLibhInstLib
Dojście załadowanego modułu biblioteki.A handle of the loaded library module. AfxLoadLibrary zwraca ten uchwyt.AfxLoadLibrary returns this handle.

Wartość zwracanaReturn Value

PRAWDA, jeśli funkcja się powiedzie; w przeciwnym razie FALSE.TRUE if the function succeeds; otherwise, FALSE.

UwagiRemarks

AfxFreeLibrary zmniejsza liczbę odwołań do załadowanego modułu biblioteki dołączanej dynamicznie (DLL).AfxFreeLibrary decrements the reference count of the loaded dynamic-link library (DLL) module. Gdy liczba odwołań osiągnie wartość zero, moduł zostanie odmapowany z przestrzeni adresowej procesu wywołującego, a dojście nie jest już prawidłowe.When the reference count reaches zero, the module is unmapped from the address space of the calling process and the handle is no longer valid. Ta liczba odwołań jest zwiększana za każdym razem, gdy AfxLoadLibrary jest wywoływana.This reference count is incremented each time AfxLoadLibrary is called.

Przed odmapowaniem modułu biblioteki, system umożliwia odłączenie biblioteki DLL od procesów, z których korzysta.Before unmapping a library module, the system enables the DLL to detach from the processes using it. Dzięki temu Biblioteka DLL umożliwia wyczyszczenie zasobów przyznanych dla bieżącego procesu.Doing so gives the DLL an opportunity to clean up resources allocated for the current process. Po powrocie funkcji punktu wejścia moduł biblioteki zostanie usunięty z przestrzeni adresowej bieżącego procesu.After the entry-point function returns, the library module is removed from the address space of the current process.

Służy AfxLoadLibrary do mapowania modułu dll.Use AfxLoadLibrary to map a DLL module.

Upewnij się, że używasz AfxFreeLibrary i AfxLoadLibrary (zamiast funkcji Win32 FreeLibrary i), LoadLibrary Jeśli aplikacja używa wielu wątków.Be sure to use AfxFreeLibrary and AfxLoadLibrary (instead of the Win32 functions FreeLibrary and LoadLibrary) if your application uses multiple threads. Przy użyciu AfxLoadLibrary i AfxFreeLibrary zapewnia, że kod uruchamiania i zamykania, który jest wykonywany, gdy biblioteka DLL rozszerzenia MFC jest załadowana i zwolniona, nie powoduje uszkodzenia globalnego stanu MFC.Using AfxLoadLibrary and AfxFreeLibrary ensures that the startup and shutdown code that executes when the MFC extension DLL is loaded and unloaded doesn't corrupt the global MFC state.

PrzykładExample

Zobacz przykład dla AfxLoadLibrary.See the example for AfxLoadLibrary.

WymaganiaRequirements

Nagłówek AFXDLL_. hHeader afxdll_.h

AfxGetAppAfxGetApp

Wskaźnik zwracany przez tę funkcję może być używany w celu uzyskania dostępu do informacji o aplikacji, takich jak główny kod wysyłania komunikatów lub okno z góry.The pointer returned by this function can be used to access application information such as the main message-dispatch code or the topmost window.

CWinApp* AFXAPI AfxGetApp();

Wartość zwracanaReturn Value

Wskaźnik do pojedynczego CWinApp obiektu dla aplikacji.A pointer to the single CWinApp object for the application.

UwagiRemarks

Jeśli ta metoda zwróci wartość NULL, może to oznaczać, że okno główne aplikacji nie zostało jeszcze w pełni zainicjowane.If this method returns NULL, it might indicate that the application main window hasn't been fully initialized yet. Może również wskazywać na problem.It might also indicate a problem.

PrzykładExample

// Print the application's executable filename.
TRACE(_T("Executable filename = %s\n"), AfxGetApp()->m_pszExeName);

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxGetAppNameAfxGetAppName

Zwracany ciąg może być używany w przypadku komunikatów diagnostycznych lub jako element główny dla nazw ciągów tymczasowych.The string returned can be used for diagnostic messages, or as a root for temporary string names.

LPCTSTR AFXAPI AfxGetAppName();

Wartość zwracanaReturn Value

Ciąg zakończony znakiem null zawierający nazwę aplikacji.A null-terminated string containing the application's name.

PrzykładExample

// Print the application name to the debugger output window.
TRACE(_T("Application name is %s\n"), AfxGetAppName());

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxGetInstanceHandleAfxGetInstanceHandle

Ta funkcja umożliwia pobranie dojścia do wystąpienia bieżącej aplikacji.This function allows you to retrieve the instance handle of the current application.

HINSTANCE  AFXAPI AfxGetInstanceHandle();

Wartość zwracanaReturn Value

HINSTANCE do bieżącego wystąpienia aplikacji.An HINSTANCE to the current instance of the application. Jeśli wywoływana z poziomu biblioteki DLL połączonej z wersją USRDLL MFC, zwracany jest HINSTANCE do biblioteki DLL.If called from within a DLL linked with the USRDLL version of MFC, an HINSTANCE to the DLL is returned.

UwagiRemarks

AfxGetInstanceHandle zawsze zwraca HINSTANCE pliku wykonywalnego (. EXE), chyba że jest wywoływana z poziomu biblioteki DLL połączonej z wersją USRDLL MFC.AfxGetInstanceHandle always returns the HINSTANCE of your executable file (.EXE) unless it's called from within a DLL linked with the USRDLL version of MFC. W tym przypadku zwraca HINSTANCE do biblioteki DLL.In this case, it returns an HINSTANCE to the DLL.

PrzykładExample

// Print the application instance handle to the debugger output window.
TRACE(_T("Application instance handle is 0x%0X\n"), AfxGetInstanceHandle());

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxGetMainWndAfxGetMainWnd

Jeśli aplikacja jest serwerem OLE, Wywołaj tę funkcję, aby pobrać wskaźnik do aktywnego głównego okna aplikacji.If your application is an OLE server, call this function to retrieve a pointer to the active main window of the application. Użyj tego wyniku zamiast bezpośrednio odwoływać się do m_pMainWnd elementu członkowskiego obiektu aplikacji.Use this result instead of directly referring to the m_pMainWnd member of the application object.

CWnd* AFXAPI AfxGetMainWnd();

Wartość zwracanaReturn Value

Zwraca wskaźnik do obiektu okna ramki, który zawiera aktywny dokument w miejscu, jeśli serwer ma obiekt, który jest aktywny w miejscu wewnątrz aktywnego kontenera.Returns a pointer to the frame window object that contains the in-place active document, if the server has an object that's in-place active inside an active container.

Jeśli nie ma obiektu, który jest aktywny w obrębie kontenera lub aplikacja nie jest serwerem OLE, ta funkcja zwraca m_pMainWnd obiektu aplikacji.If there's no object that is in-place active within a container, or your application isn't an OLE server, this function returns the m_pMainWnd of your application object.

Jeśli AfxGetMainWnd jest wywoływana z wątku podstawowego aplikacji, zwraca okno główne aplikacji zgodnie z powyższymi regułami.If AfxGetMainWnd is called from the application's primary thread, it returns the application's main window according to the above rules. Jeśli funkcja jest wywoływana z wątku pomocniczego w aplikacji, funkcja zwraca okno główne skojarzone z wątkiem, który wykonał wywołanie.If the function is called from a secondary thread in the application, the function returns the main window associated with the thread that made the call.

UwagiRemarks

Jeśli aplikacja nie jest serwerem OLE, wywołanie tej funkcji jest równoważne bezpośrednio odniesieniu się do m_pMainWnd elementu członkowskiego obiektu aplikacji.If your application isn't an OLE server, then calling this function is equivalent to directly referring to the m_pMainWnd member of your application object.

PrzykładExample

//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);

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxGetPerUserRegistrationAfxGetPerUserRegistration

Użyj tej funkcji, aby określić, czy aplikacja przekierowuje dostęp do rejestru do węzła HKEY_CURRENT_USER (HKCU).Use this function to determine whether the application redirects registry access to the HKEY_CURRENT_USER (HKCU) node.

BOOL AFXAPI AfxGetPerUserRegistration();

Wartość zwracanaReturn Value

Wartość TRUE wskazuje, że informacje rejestru są kierowane do węzła HKCU.TRUE indicates the registry information is directed to the HKCU node. Wartość FALSE oznacza, że aplikacja zapisuje informacje rejestru w domyślnym węźle.FALSE indicates the application writes registry information to the default node. Domyślnym węzłem jest HKEY_CLASSES_ROOT (HKCR).The default node is HKEY_CLASSES_ROOT (HKCR).

UwagiRemarks

Po włączeniu przekierowania rejestru platforma przekierowuje dostęp z HKCR do HKEY_CURRENT_USER \software\classes.If you enable registry redirection, the framework redirects access from HKCR to HKEY_CURRENT_USER\Software\Classes. Przekierowanie ma wpływ tylko na platformy MFC i ATL.Only the MFC and ATL frameworks are affected by the redirection.

Aby zmienić, czy aplikacja przekierowuje dostęp do rejestru, użyj AfxSetPerUserRegistration.To change whether the application redirects registry access, use AfxSetPerUserRegistration.

WymaganiaRequirements

Nagłówek afxstat_. hHeader afxstat_.h

AfxGetResourceHandleAfxGetResourceHandle

Użyj uchwytu HINSTANCE zwróconego przez tę funkcję, aby uzyskać dostęp do zasobów aplikacji bezpośrednio, na przykład w wywołaniach funkcji systemu Windows FindResource .Use the HINSTANCE handle returned by this function to access the application's resources directly, for example, in calls to the Windows function FindResource.

extern HINSTANCE  AfxGetResourceHandle();

Wartość zwracanaReturn Value

Dojście HINSTANCE, w którym są ładowane domyślne zasoby aplikacji.An HINSTANCE handle where the default resources of the application are loaded.

PrzykładExample

//Load the menu specifying the module handle where resource is to be
//found & resource ID
HMENU hMenu = ::LoadMenu(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxGetThreadAfxGetThread

Wywołaj tę funkcję, aby uzyskać wskaźnik do obiektu CWinThread reprezentującego aktualnie wykonywany wątek.Call this function to get a pointer to the CWinThread object representing the currently executing thread.

CWinThread* AfxGetThread();

Wartość zwracanaReturn Value

Wskaźnik do aktualnie wykonywanego wątku; w przeciwnym razie wartość NULL.Pointer to the currently executing thread; otherwise NULL.

UwagiRemarks

Musi być wywołana z poziomu wątku.Must be called from within the thread.

Uwaga

W przypadku przenoszenia projektu MFC wywołującego AfxGetThread z Visual C++ wersje 4,2, 5,0 lub 6,0 program AfxGetThread wywołuje AfxGetApp , jeśli nie zostanie znaleziony żaden wątek.If you are porting an MFC project calling AfxGetThread from Visual C++ versions 4.2, 5.0, or 6.0, AfxGetThread calls AfxGetApp if no thread is found. W nowszych wersjach kompilatora AfxGetThread zwraca wartość null, jeśli nie znaleziono wątku.In more recent versions of the compiler, AfxGetThread returns NULL if no thread was found. Jeśli potrzebujesz wątku aplikacji, musisz wywołać metodę AfxGetApp .If you want the application thread, you must call AfxGetApp.

PrzykładExample

//Print the current thread ID in the Debug Window
TRACE(_T("Current Thread ID = 0x%X\n"), AfxGetThread()->m_nThreadID);

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxInitRichEditAfxInitRichEdit

Wywołaj tę funkcję, aby zainicjować kontrolkę edycji wzbogaconej (wersja 1,0) dla aplikacji.Call this function to initialize the rich edit control (version 1.0) for the application.

BOOL AFXAPI AfxInitRichEdit();

UwagiRemarks

Ta funkcja jest dostępna w celu zapewnienia zgodności z poprzednimi wersjami.This function is provided for backward compatibility. Nowe aplikacje powinny używać Funkcja afxinitrichedit2.New applications should use AfxInitRichEdit2.

AfxInitRichEdit ładuje RICHED32.DLL w celu zainicjowania wersji 1,0 kontrolki edycji wzbogaconej.AfxInitRichEdit loads RICHED32.DLL to initialize version 1.0 of the rich edit control. Aby użyć wersji 2,0 i 3,0 kontrolki edycji wzbogaconej, należy załadować RICHED20.DLL.To use version 2.0 and 3.0 of the rich edit control, RICHED20.DLL needs to be loaded. Jest ona ładowana przez wywołanie Funkcja afxinitrichedit2.It's loaded by making a call to AfxInitRichEdit2.

Aby zaktualizować kontrolki edycji wzbogaconej w istniejących aplikacjach Visual C++ do wersji 2,0, Otwórz. Plik RC jako tekst, Zmień nazwę klasy każdej kontrolki edycji wzbogaconej z "RICHEDIT" na "RichEdit20a".To update rich edit controls in existing Visual C++ applications to version 2.0, open the .RC file as text, change the class name of each rich edit control from "RICHEDIT" to "RichEdit20a". Następnie zastąp wywołanie do AfxInitRichEdit AfxInitRichEdit2 .Then replace the call to AfxInitRichEdit with AfxInitRichEdit2.

Ta funkcja inicjuje również bibliotekę formantów wspólnych, jeśli biblioteka nie została jeszcze zainicjowana dla tego procesu.This function also initializes the common controls library, if the library hasn't already been initialized for the process. Jeśli używasz kontrolki edycji wzbogaconej bezpośrednio z poziomu aplikacji MFC, Wywołaj tę funkcję, aby upewnić się, że MFC prawidłowo zainicjowało środowisko uruchomieniowe kontrolki edycji wzbogaconej.If you use the rich edit control directly from your MFC application, call this function to assure that MFC has properly initialized the rich edit control runtime. Jeśli wywołasz Create metodę CRichEditCtrl, CRichEditViewlub CRichEditDoc, zazwyczaj nie musisz wywoływać tej funkcji, ale w niektórych przypadkach może to być konieczne.If you call the Create method of CRichEditCtrl, CRichEditView, or CRichEditDoc, you typically don't need to call this function, but in some cases it might be necessary.

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

Funkcja afxinitrichedit2AfxInitRichEdit2

Wywołaj tę funkcję, aby zainicjować kontrolkę edycji wzbogaconej (w wersji 2,0 i nowszej) dla aplikacji.Call this function to initialize the rich edit control (version 2.0 and later) for the application.

BOOL AFXAPI AfxInitRichEdit2();

UwagiRemarks

Wywołaj tę funkcję, aby załadować RICHED20.DLL i zainicjować wersję 2,0 kontrolki edycji wzbogaconej.Call this function to load the RICHED20.DLL and initialize version 2.0 of the rich edit control. Jeśli wywołasz Create metodę CRichEditCtrl, CRichEditViewlub CRichEditDoc, zazwyczaj nie musisz wywoływać tej funkcji, ale w niektórych przypadkach może to być konieczne.If you call the Create method of CRichEditCtrl, CRichEditView, or CRichEditDoc, you typically don't need to call this function, but in some cases it might be necessary.

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxIsExtendedFrameClassAfxIsExtendedFrameClass

Określa, czy dane okno jest obiektem ramki rozszerzonej.Determines whether the given window is an extended frame object.

SkładniaSyntax

BOOL AFXAPI AfxIsExtendedFrameClass( CWnd* pWnd );

ParametryParameters

pWndpWnd
podczas Wskaźnik do obiektu, który jest wyprowadzany z CWnd .[in] A pointer to an object that is derived from CWnd.

Wartość zwracanaReturn Value

PRAWDA, jeśli podane okno jest obiektem ramki rozszerzonej; w przeciwnym razie FALSE.TRUE if the provided window is an extended frame object; otherwise FALSE.

UwagiRemarks

Ta metoda zwraca wartość TRUE, jeśli pWnd dziedziczy z jednej z następujących klas:This method returns TRUE if pWnd derives from one of the following classes:

  • CFrameWndEx

  • CMDIFrameWndEx

  • COleIPFrameWndEx

  • COleDocIPFrameWndEx

  • CMDIChildWndEx

Ta metoda jest przydatna, gdy trzeba sprawdzić, czy parametr funkcji lub metody jest oknem ramki rozszerzonej.This method is useful when you have to validate that a function or method parameter is an extended frame window.

WymaganiaRequirements

Nagłówek: AFXPRIV. hHeader: afxpriv.h

AfxIsMFCToolBarAfxIsMFCToolBar

Określa, czy dany okno jest obiektem paska narzędzi.Determines whether the given window is a toolbar object.

SkładniaSyntax

BOOL AFXAPI AfxIsMFCToolBar(CWnd* pWnd);

ParametryParameters

pWndpWnd
podczas Wskaźnik do obiektu, który jest wyprowadzany z CWnd .[in] A pointer to an object that is derived from CWnd.

Wartość zwracanaReturn Value

PRAWDA, jeśli podane okno jest obiektem Toolbar; w przeciwnym razie FALSE.TRUE if the provided window is a toolbar object; otherwise FALSE.

UwagiRemarks

Ta metoda zwraca wartość, TRUE Jeśli pWnd dziedziczy z CMFCToolBar .This method returns TRUE if pWnd derives from CMFCToolBar. Ta metoda jest przydatna, gdy trzeba sprawdzić, czy parametr funkcji lub metody jest CMFCToolBar obiektem.This method is useful when you have to validate that a function or method parameter is a CMFCToolBar object.

WymaganiaRequirements

Nagłówek: AFXPRIV. hHeader: afxpriv.h

AfxKeyboardManagerAfxKeyboardManager

Wskaźnik do globalnego Menedżera klawiatury.Pointer to the global keyboard manager.

SkładniaSyntax

CKeyboardManager* afxKeyboardManager;

WymaganiaRequirements

Nagłówek: afxkeyboardmanager. hHeader: afxkeyboardmanager.h

AfxLoadLibraryAfxLoadLibrary

Służy AfxLoadLibrary do mapowania modułu dll.Use AfxLoadLibrary to map a DLL module.

HINSTANCE AFXAPI AfxLoadLibrary(LPCTSTR lpszModuleName);

ParametryParameters

lpszModuleNamelpszModuleName
Wskazuje ciąg zakończony znakiem null, który zawiera nazwę modułu (a. DLL lub. Plik EXE).Points to a null-terminated string that contains the name of the module (either a .DLL or .EXE file). Określona nazwa jest nazwą pliku modułu.The name specified is the filename of the module.

Jeśli ciąg Określa ścieżkę, ale plik nie istnieje w określonym katalogu, funkcja kończy się niepowodzeniem.If the string specifies a path but the file doesn't exist in the specified directory, the function fails.

Jeśli ścieżka nie zostanie określona i rozszerzenie nazwy pliku zostanie pominięte, domyślne rozszerzenie. Biblioteka DLL jest dołączana.If a path isn't specified and the filename extension is omitted, the default extension .DLL is appended. Jednak ciąg filename może zawierać znak końcowy (.), aby wskazać, że nazwa modułu nie ma rozszerzenia.However, the filename string can include a trailing point character (.) to indicate that the module name has no extension. Jeśli ścieżka nie zostanie określona, funkcja używa kolejności wyszukiwania dla aplikacji klasycznych.When no path is specified, the function uses the Search Order for Desktop Applications.

Wartość zwracanaReturn Value

Jeśli funkcja się powiedzie, wartość zwracana jest dojściem do modułu.If the function succeeds, the return value is a handle to the module. W przypadku niepowodzenia wartość zwracana jest RÓWNa NULL.On failure, the return value is NULL.

UwagiRemarks

Zwraca dojście, które może być używane w GetProcAddress w celu uzyskania adresu funkcji DLL.It returns a handle that can be used in GetProcAddress to get the address of a DLL function. AfxLoadLibrary może również służyć do mapowania innych modułów wykonywalnych.AfxLoadLibrary can also be used to map other executable modules.

Każdy proces zachowuje liczbę odwołań dla każdego załadowanego modułu biblioteki.Each process maintains a reference count for each loaded library module. Ta liczba odwołań jest zwiększana za każdym razem, gdy jest AfxLoadLibrary wywoływana i jest zmniejszana za każdym razem, gdy AfxFreeLibrary jest wywoływana.This reference count is incremented each time AfxLoadLibrary is called and is decremented each time AfxFreeLibrary is called. Gdy liczba odwołań osiągnie wartość zero, moduł zostanie odmapowany z przestrzeni adresowej procesu wywołującego, a dojście nie jest już prawidłowe.When the reference count reaches zero, the module is unmapped from the address space of the calling process and the handle is no longer valid.

Upewnij się, że używasz AfxLoadLibrary i AfxFreeLibrary (zamiast funkcji Win32 LoadLibrary i FreeLibrary ), jeśli aplikacja używa wielu wątków, a jeśli dynamicznie ŁADUJE bibliotekę DLL rozszerzenia MFC.Be sure to use AfxLoadLibrary and AfxFreeLibrary (instead of the Win32 functions LoadLibrary and FreeLibrary) if your application uses multiple threads, and if it dynamically loads an MFC extension DLL. Za pomocą AfxLoadLibrary i AfxFreeLibrary upewnij się, że kod uruchamiania i zamykania, który jest wykonywany, gdy biblioteka DLL rozszerzenia MFC jest załadowana i zwolniona, nie powoduje uszkodzenia globalnego stanu MFC.Using AfxLoadLibrary and AfxFreeLibrary insures that the startup and shutdown code that executes when the MFC extension DLL is loaded and unloaded doesn't corrupt the global MFC state.

Używanie AfxLoadLibrary w aplikacji wymaga dynamicznego łączenia z biblioteką DLL MFC.Using AfxLoadLibrary in an application requires you to dynamically link to the DLL version of MFC. Plik nagłówkowy dla AfxLoadLibrary , Afxdll_. h, jest uwzględniany tylko wtedy, gdy MFC jest połączone z aplikacją jako biblioteka DLL.The header file for AfxLoadLibrary, Afxdll_.h, is only included if MFC is linked to the application as a DLL. Ten wymóg jest zaprojektowany, ponieważ należy połączyć się z biblioteką DLL MFC w celu użycia lub utworzenia bibliotek DLL rozszerzenia MFC.This requirement is by design, because you have to link to the DLL version of MFC to use or create MFC extension DLLs.

PrzykładExample

// 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();
}

WymaganiaRequirements

Nagłówek AFXDLL_. hHeader afxdll_.h

AfxLoadLibraryExAfxLoadLibraryEx

Służy AfxLoadLibraryEx do mapowania modułu dll.Use AfxLoadLibraryEx to map a DLL module.

HINSTANCE AFXAPI AfxLoadLibraryEx(LPCTSTR lpFileName, HANDLE hFile, DWORD dwFlags);

ParametryParameters

lpFileNamelpFileName
Wskazuje ciąg zakończony znakiem null, który zawiera nazwę modułu (a. DLL lub. Plik EXE).Points to a null-terminated string that contains the name of the module (either a .DLL or .EXE file). Określona nazwa jest nazwą pliku modułu.The name specified is the filename of the module.

Jeśli ciąg Określa ścieżkę, ale plik nie istnieje w określonym katalogu, funkcja kończy się niepowodzeniem.If the string specifies a path but the file doesn't exist in the specified directory, the function fails.

Jeśli ścieżka nie zostanie określona i rozszerzenie nazwy pliku zostanie pominięte, domyślne rozszerzenie. Biblioteka DLL jest dołączana.If a path isn't specified and the filename extension is omitted, the default extension .DLL is appended. Jednak ciąg filename może zawierać znak końcowy (.), aby wskazać, że nazwa modułu nie ma rozszerzenia.However, the filename string can include a trailing point character (.) to indicate that the module name has no extension. Jeśli ścieżka nie zostanie określona, funkcja używa kolejności wyszukiwania dla aplikacji klasycznych.When no path is specified, the function uses the Search Order for Desktop Applications.

hFilehFile
Ten parametr jest zarezerwowany do użytku w przyszłości.This parameter is reserved for future use. Musi mieć wartość NULL.It must be NULL.

flagiDWdwFlags
Akcja, która ma zostać wykonana podczas ładowania modułu.The action to be taken when loading the module. Jeśli nie określono żadnych flag, zachowanie tej funkcji jest identyczne z AfxLoadLibrary funkcją.If no flags are specified, the behavior of this function is identical to the AfxLoadLibrary function. Możliwe wartości tego parametru są opisane w dokumentacji LoadLibraryEx .The possible values of this parameter are described in the LoadLibraryEx documentation.

Wartość zwracanaReturn Value

Jeśli funkcja się powiedzie, wartość zwracana jest dojściem do modułu.If the function succeeds, the return value is a handle to the module. W przypadku niepowodzenia wartość zwracana jest RÓWNa NULL.On failure, the return value is NULL.

UwagiRemarks

AfxLoadLibraryEx zwraca dojście, które może być używane w funkcji GetProcAddress w celu uzyskania adresu programu dll.AfxLoadLibraryEx returns a handle that can be used in GetProcAddress to get the address of a DLL function. AfxLoadLibraryEx może również służyć do mapowania innych modułów wykonywalnych.AfxLoadLibraryEx can also be used to map other executable modules.

Każdy proces zachowuje liczbę odwołań dla każdego załadowanego modułu biblioteki.Each process maintains a reference count for each loaded library module. Ta liczba odwołań jest zwiększana za każdym razem, gdy jest AfxLoadLibraryEx wywoływana i jest zmniejszana za każdym razem, gdy AfxFreeLibrary jest wywoływana.This reference count is incremented each time AfxLoadLibraryEx is called and is decremented each time AfxFreeLibrary is called. Gdy liczba odwołań osiągnie wartość zero, moduł zostanie odmapowany z przestrzeni adresowej procesu wywołującego, a dojście nie jest już prawidłowe.When the reference count reaches zero, the module is unmapped from the address space of the calling process and the handle is no longer valid.

Upewnij się, że używane są AfxLoadLibraryEx AfxFreeLibrary funkcje i (zamiast funkcji Win32 LoadLibraryEx i), FreeLibrary Jeśli aplikacja używa wielu wątków i w przypadku dynamicznego ładowania biblioteki DLL rozszerzenia MFC.Be sure to use AfxLoadLibraryEx and AfxFreeLibrary (instead of the Win32 functions LoadLibraryEx and FreeLibrary) if your application uses multiple threads and if it dynamically loads an MFC extension DLL. Przy użyciu AfxLoadLibraryEx i AfxFreeLibrary zapewnia, że kod uruchamiania i zamykania, który jest wykonywany, gdy biblioteka DLL rozszerzenia MFC jest załadowana i zwolniona, nie powoduje uszkodzenia globalnego stanu MFC.Using AfxLoadLibraryEx and AfxFreeLibrary ensures that the startup and shutdown code that executes when the MFC extension DLL is loaded and unloaded doesn't corrupt the global MFC state.

Używanie AfxLoadLibraryEx w aplikacji wymaga dynamicznego łączenia z biblioteką DLL MFC.Using AfxLoadLibraryEx in an application requires you to dynamically link to the DLL version of MFC. Plik nagłówkowy dla AfxLoadLibraryEx , Afxdll_. h, jest uwzględniany tylko wtedy, gdy MFC jest połączone z aplikacją jako biblioteka DLL.The header file for AfxLoadLibraryEx, Afxdll_.h, is only included if MFC is linked to the application as a DLL. Ten wymóg jest zaprojektowany, ponieważ należy połączyć się z biblioteką DLL MFC w celu użycia lub utworzenia bibliotek DLL rozszerzenia MFC.This requirement is by design, because you have to link to the DLL version of MFC to use or create MFC extension DLLs.

WymaganiaRequirements

Nagłówek AFXDLL_. hHeader afxdll_.h

AfxMenuTearOffManagerAfxMenuTearOffManager

Wskaźnik do Menedżera menu odrywaniaglobalnego.Pointer to the global tear-off menu manager.

SkładniaSyntax

CMenuTearOffManager* g_pTearOffMenuManager;

WymaganiaRequirements

Nagłówek: afxmenutearoffmanager. hHeader: afxmenutearoffmanager.h

AfxMouseManagerAfxMouseManager

Wskaźnik do globalnego Menedżera myszy.Pointer to the global mouse manager.

SkładniaSyntax

CMouseManager* afxMouseManager;

WymaganiaRequirements

Nagłówek: afxmousemanager. hHeader: afxmousemanager.h

AfxRegisterClassAfxRegisterClass

Ta funkcja służy do rejestrowania klas okien w bibliotece DLL korzystającej z MFC.Use this function to register window classes in a DLL that uses MFC.

BOOL AFXAPI AfxRegisterClass(WNDCLASS* lpWndClass);

ParametryParameters

lpWndClasslpWndClass
Wskaźnik do struktury WNDCLASS zawierającej informacje o klasie okna, która ma zostać zarejestrowana.Pointer to a WNDCLASS structure containing information about the window class to be registered. Aby uzyskać więcej informacji na temat tej struktury, zobacz Windows SDK.For more information on this structure, see the Windows SDK.

Wartość zwracanaReturn Value

Ma wartość TRUE, jeśli klasa została pomyślnie zarejestrowana; w przeciwnym razie FALSE.TRUE if the class is successfully registered; otherwise FALSE.

UwagiRemarks

Jeśli używasz tej funkcji, Klasa zostanie automatycznie wyrejestrowana, gdy biblioteka DLL zostanie zwolniona.If you use this function, the class is automatically unregistered when the DLL is unloaded.

W kompilacjach, które nie są oparte na bibliotece DLL, AfxRegisterClass Identyfikator jest definiowany jako makro mapowane na funkcję systemu Windows RegisterClass , ponieważ klasy zarejestrowane w aplikacji są automatycznie wyrejestrowane.In non-DLL builds, the AfxRegisterClass identifier is defined as a macro that maps to the Windows function RegisterClass, since classes registered in an application are automatically unregistered. Jeśli używasz AfxRegisterClass zamiast RegisterClass , kod może być używany bez zmiany zarówno w aplikacji, jak i w bibliotece DLL.If you use AfxRegisterClass instead of RegisterClass, your code can be used without change both in an application and in a DLL.

PrzykładExample

// 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");
}

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxRegisterWndClass —AfxRegisterWndClass

Umożliwia zarejestrowanie własnych klas okien.Allows you to register your own window classes.

LPCTSTR AFXAPI AfxRegisterWndClass(
    UINT nClassStyle,
    HCURSOR hCursor = 0,
    HBRUSH hbrBackground = 0,
    HICON hIcon = 0);

ParametryParameters

nClassStylenClassStyle
Określa styl klasy systemu Windows lub kombinację stylów utworzonych przy użyciu operatora bitowego lub (|) dla klasy Window.Specifies the Windows class style or combination of styles, created by using the bitwise-OR (|) operator, for the window class. Aby zapoznać się z listą stylów klasy, zapoznaj się ze strukturą WNDCLASS w Windows SDK.For a list of class styles, see the WNDCLASS structure in the Windows SDK. Jeśli wartość jest równa NULL, ustawienia domyślne są ustawiane w następujący sposób:If NULL, the defaults are set as follows:

  • Ustawia styl myszy na CS_DBLCLKS, który wysyła wiadomości dwukrotnego kliknięcia do procedury okna, gdy użytkownik kliknie dwukrotnie mysz.Sets the mouse style to CS_DBLCLKS, which sends double-click messages to the window procedure when the user double-clicks the mouse.

  • Ustawia styl kursora strzałki w standardowym IDC_ARROW systemu Windows.Sets the arrow cursor style to the Windows standard IDC_ARROW.

  • Ustawia dla pędzla tła wartość NULL, więc okno nie będzie wymazywać jego tła.Sets the background brush to NULL, so the window won't erase its background.

  • Ustawia ikonę na ikonę standardowego, Waving flagi logo systemu Windows.Sets the icon to the standard, waving-flag Windows logo icon.

hCursorhCursor
Określa dojście do zasobu kursora, który ma zostać zainstalowany w każdym oknie utworzonym z klasy Window.Specifies a handle to the cursor resource to be installed in each window created from the window class. Jeśli używasz domyślnej wartości 0, uzyskasz standardowy kursor IDC_ARROW.If you use the default of 0, you'll get the standard IDC_ARROW cursor.

hbrBackgroundhbrBackground
Określa dojście do zasobu pędzla, który ma zostać zainstalowany w każdym oknie utworzonym z klasy Window.Specifies a handle to the brush resource to be installed in each window created from the window class. Jeśli używasz domyślnej wartości 0, będziesz mieć pusty pędzel w tle, a domyślnie okno nie wymaże jego tła podczas przetwarzania WM_ERASEBKGND.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.

hIconhIcon
Określa dojście do zasobu ikony, który ma zostać zainstalowany w każdym oknie utworzonym z klasy Window.Specifies a handle to the icon resource to be installed in each window created from the window class. Jeśli zostanie użyta wartość domyślna 0, otrzymasz standardową ikonę logo systemu Windows z flagą Waving.If you use the default of 0, you'll get the standard, waving-flag Windows logo icon.

Wartość zwracanaReturn Value

Ciąg zakończony znakiem null zawierający nazwę klasy.A null-terminated string containing the class name. Tę nazwę klasy można przekazać do Create funkcji składowej w CWnd lub innych klasach pochodnych CWnd, aby utworzyć okno.You can pass this class name to the Create member function in CWnd or other CWnd- derived classes to create a window. Nazwa jest generowana przez biblioteka MFC.The name is generated by the Microsoft Foundation Class Library.

Uwaga

Wartość zwracana jest wskaźnikiem do bufora statycznego.The return value is a pointer to a static buffer. Aby zapisać ten ciąg, przypisz go do CString zmiennej.To save this string, assign it to a CString variable.

UwagiRemarks

Biblioteka MFC automatycznie rejestruje kilka klas standardowego okna.The Microsoft Foundation Class Library automatically registers several standard window classes for you. Wywołaj tę funkcję, jeśli chcesz zarejestrować własne klasy okien.Call this function if you want to register your own window classes.

Nazwa zarejestrowana dla klasy jest AfxRegisterWndClass zależna wyłącznie od parametrów.The name registered for a class by AfxRegisterWndClass depends solely on the parameters. Jeśli wywołasz AfxRegisterWndClass wiele razy z identycznymi parametrami, rejestruje klasy tylko przy pierwszym wywołaniu.If you call AfxRegisterWndClass multiple times with identical parameters, it only registers a class on the first call. Późniejsze wywołania AfxRegisterWndClass z identycznymi parametrami zwracają już zarejestrowaną metodę ClassName.Later calls to AfxRegisterWndClass with identical parameters return the already-registered classname.

Jeśli wywołasz AfxRegisterWndClass wiele klas pochodnych CWnd z identycznymi parametrami, zamiast uzyskać osobną klasę okna dla każdej klasy, każda klasa współużytkuje tę samą klasę okna.If you call AfxRegisterWndClass for multiple CWnd-derived classes with identical parameters, instead of getting a separate window class for each class, each class shares the same window class. Takie udostępnianie może spowodować problemy, jeśli używany jest styl klasy CS_CLASSDC.This sharing can cause problems if the CS_CLASSDC class style is used. Zamiast wielu CS_CLASSDC klas okien, można kończyć się tylko jedną klasą CS_CLASSDC Window.Instead of multiple CS_CLASSDC window classes, you end up with only one CS_CLASSDC window class. Wszystkie okna języka C++, które używają tej klasy, współużytkują ten sam kontroler domeny.All C++ windows that use that class share the same DC. Aby uniknąć tego problemu, zadzwoń do AfxRegisterClass w celu zarejestrowania klasy.To avoid this problem, call AfxRegisterClass to register the class.

Zapoznaj się z uwagami technicznymi TN001: Rejestracja klasy okna , aby uzyskać więcej informacji na temat rejestracji klas okien i AfxRegisterWndClass funkcji.Refer to Technical Note TN001: Window Class Registration for more information on window class registration and the AfxRegisterWndClass function.

PrzykładExample

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();
}

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxSetPerUserRegistrationAfxSetPerUserRegistration

Określa, czy aplikacja przekierowuje dostęp do rejestru do węzła HKEY_CURRENT_USER (HKCU).Sets whether the application redirects registry access to the HKEY_CURRENT_USER (HKCU) node.

void AFXAPI AfxSetPerUserRegistration(BOOL bEnable);

ParametryParameters

bEnablebEnable
podczas Wartość TRUE wskazuje, że informacje rejestru są kierowane do węzła HKCU.[in] TRUE indicates the registry information is directed to the HKCU node. Wartość FALSE oznacza, że aplikacja zapisuje informacje rejestru w domyślnym węźle.FALSE indicates the application writes registry information to the default node. Domyślnym węzłem jest HKEY_CLASSES_ROOT (HKCR).The default node is HKEY_CLASSES_ROOT (HKCR).

UwagiRemarks

Przed systemem Windows Vista aplikacje, które uzyskały dostęp do rejestru, często używają węzła HKEY_CLASSES_ROOT .Before Windows Vista, applications that accessed the registry commonly used the HKEY_CLASSES_ROOT node. Jednak w systemach operacyjnych Windows Vista i nowszych należy uruchomić aplikację w trybie podniesionych uprawnień, aby zapisać w HKCR.However, with Windows Vista or later operating systems, you must run an application in elevated mode to write to HKCR.

Ta metoda umożliwia aplikacji odczytywanie i zapisywanie w rejestrze bez uruchamiania w trybie podniesionych uprawnień.This method enables your application to read and write to the registry without running in elevated mode. Działa przez przekierowanie dostępu rejestru z HKCR do HKCU.It works by redirecting registry access from HKCR to HKCU. Aby uzyskać więcej informacji, zobacz strony właściwości konsolidatora.For more information, see Linker Property Pages.

Po włączeniu przekierowania rejestru platforma przekierowuje dostęp z HKCR do HKEY_CURRENT_USER \software\classes.If you enable registry redirection, the framework redirects access from HKCR to HKEY_CURRENT_USER\Software\Classes. Przekierowanie ma wpływ tylko na platformy MFC i ATL.Only the MFC and ATL frameworks are affected by the redirection.

Domyślna implementacja uzyskuje dostęp do rejestru w obszarze HKCR.The default implementation accesses the registry under HKCR.

WymaganiaRequirements

Nagłówek afxstat_. hHeader afxstat_.h

AfxSetResourceHandleAfxSetResourceHandle

Ta funkcja służy do ustawiania uchwytu HINSTANCE, który określa, gdzie są ładowane zasoby domyślne aplikacji.Use this function to set the HINSTANCE handle that determines where the default resources of the application are loaded.

void AFXAPI AfxSetResourceHandle(HINSTANCE hInstResource);

ParametryParameters

hInstResourcehInstResource
Wystąpienie lub dojście modułu do. Plik EXE lub DLL, z którego są ładowane zasoby aplikacji.The instance or module handle to an .EXE or DLL file from which the application's resources are loaded.

PrzykładExample

// This code is taken from CMyApp::InitInstance
HINSTANCE hRes = NULL;
hRes = LoadLibrary(_T("Resource.dll"));
if (hRes)
   AfxSetResourceHandle(hRes);

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

AfxShellManagerAfxShellManager

Wskaźnik do Menedżera powłokiglobalnego.Pointer to the global shell manager.

SkładniaSyntax

CShellManager* afxShellManager;

WymaganiaRequirements

Nagłówek: afxshellmanager. hHeader: afxshellmanager.h

AfxSocketInitAfxSocketInit

Wywołaj tę funkcję w CWinApp::InitInstance zastąpieniu, aby zainicjować Windows Sockets.Call this function in your CWinApp::InitInstance override to initialize Windows Sockets.

BOOL AfxSocketInit(WSADATA* lpwsaData = NULL);

ParametryParameters

lpwsaDatalpwsaData
Wskaźnik do struktury WSADATA .A pointer to a WSADATA structure. Jeśli lpwsaData nie jest równa null, adres WSADATA struktury jest wypełniany przez wywołanie WSAStartup .If lpwsaData isn't equal to NULL, then the address of the WSADATA structure is filled by the call to WSAStartup. Ta funkcja gwarantuje również, że WSACleanup jest wywoływana dla Ciebie przed zakończeniem działania aplikacji.This function also ensures that WSACleanup is called for you before the application terminates.

Wartość zwracanaReturn Value

Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.Nonzero if the function is successful; otherwise 0.

UwagiRemarks

W przypadku korzystania z gniazd MFC w wątkach pomocniczych w statycznie połączonej aplikacji MFC należy wywołać AfxSocketInit w każdym wątku, który używa gniazd do inicjowania bibliotek gniazd.When using MFC sockets in secondary threads in a statically linked MFC application, you must call AfxSocketInit in each thread that uses sockets to initialize the socket libraries. Domyślnie AfxSocketInit jest wywoływana tylko w wątku podstawowym.By default, AfxSocketInit is called only in the primary thread.

WymaganiaRequirements

Nagłówek AfxSock. hHeader afxsock.h

AfxUserToolsManagerAfxUserToolsManager

Wskaźnik do globalnego Menedżera narzędzi użytkownika.Pointer to the global user tools manager.

SkładniaSyntax

CUserToolsManager* afxUserToolsManager;

WymaganiaRequirements

Nagłówek: afxusertoolsmanager. hHeader: afxusertoolsmanager.h

AfxWinInitAfxWinInit

Ta funkcja jest wywoływana przez funkcję dostarczoną przez MFC w WinMain ramach inicjalizacji CWinApp aplikacji opartej na graficznym interfejsie użytkownika w celu zainicjowania MFC.This function is called by the MFC-supplied WinMain function, as part of the CWinApp initialization of a GUI-based application, to initialize MFC.

BOOL AFXAPI AfxWinInit(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine,
    int nCmdShow);

ParametryParameters

hInstancehInstance
Dojście aktualnie uruchomionego modułu.The handle of the currently running module.

hPrevInstancehPrevInstance
Dojście do poprzedniego wystąpienia aplikacji.A handle to a previous instance of the application. W przypadku aplikacji opartych na systemie Win32 ten parametr ma zawsze wartość null.For a Win32-based application, this parameter is always NULL.

lpCmdLinelpCmdLine
Wskazuje ciąg zakończony znakiem null określający wiersz polecenia dla aplikacji.Points to a null-terminated string specifying the command line for the application.

nCmdShownCmdShow
Określa sposób wyświetlania głównego okna aplikacji graficznego interfejsu użytkownika.Specifies how the main window of a GUI application would be shown.

UwagiRemarks

W przypadku aplikacji konsolowej, która nie korzysta z funkcji dostarczonej przez MFC WinMain , należy wywołać AfxWinInit bezpośrednio, aby zainicjować MFC.For a console application, which doesn't use the MFC-supplied WinMain function, you must call AfxWinInit directly to initialize MFC.

Jeśli wywołujesz AfxWinInit siebie, należy zadeklarować wystąpienie CWinApp klasy.If you call AfxWinInit yourself, you should declare an instance of a CWinApp class. W przypadku aplikacji konsolowej można zrezygnować z wyprowadzenia własnej klasy z CWinApp i zamiast tego używać wystąpienia CWinApp bezpośredniego.For a console application, you might choose not to derive your own class from CWinApp and instead use an instance of CWinApp directly. Ta technika jest odpowiednia, jeśli użytkownik zdecyduje się na pozostawienie wszystkich funkcji aplikacji w implementacji głównej.This technique is appropriate if you decide to leave all functionality for your application in your implementation of main.

Uwaga

Gdy tworzy kontekst aktywacji dla zestawu, MFC używa zasobu manifestu dostarczonego przez moduł użytkownika.When it creates an activation context for an assembly, MFC uses a manifest resource provided by the user module. Kontekst aktywacji jest tworzony w AfxWinInit .The activation context is created in AfxWinInit. Aby uzyskać więcej informacji, zobacz Obsługa kontekstów aktywacji w stanie modułu MFC.For more information, see Support for Activation Contexts in the MFC Module State.

PrzykładExample

#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;
}

WymaganiaRequirements

Nagłówek afxwin. hHeader afxwin.h

Zobacz teżSee also

Makra i GlobalsMacros and Globals
Klasa CWinAppCWinApp Class
Klasa CContextMenuManagerCContextMenuManager Class
Klasa CWndCWnd Class
Klasa CFrameWndExCFrameWndEx Class
Klasa CMFCToolBarCMFCToolBar Class
Klasa CKeyboardManagerCKeyboardManager Class
Klasa CMenuTearOffManagerCMenuTearOffManager Class
Klasa CMouseManagerCMouseManager Class
Klasa CShellManagerCShellManager Class
Klasa CUserToolsManagerCUserToolsManager Class