Klasa CWinApp
Klasa bazowa, z której pochodzi obiekt aplikacji systemu Windows.
Składnia
class CWinApp : public CWinThread
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CWinApp::CWinApp | CWinApp Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CWinApp::AddDocTemplate | Dodaje szablon dokumentu do listy dostępnych szablonów dokumentów aplikacji. |
CWinApp::AddToRecentFileList | Dodaje nazwę pliku do listy ostatnio używanych plików (MRU). |
CWinApp::ApplicationRecoveryCallback | Wywoływana przez platformę, gdy aplikacja nieoczekiwanie kończy działanie. |
CWinApp::CloseAllDocuments | Zamyka wszystkie otwarte dokumenty. |
CWinApp::CreatePrinterDC | Tworzy kontekst urządzenia drukarki. |
CWinApp::D elRegTree | Usuwa określony klucz i wszystkie jego podklucze. |
CWinApp::D oMessageBox | Implementuje element AfxMessageBox dla aplikacji. |
CWinApp::D oWaitCursor | Włącza i wyłącza kursor oczekiwania. |
CWinApp::EnableD2DSupport | Umożliwia obsługę D2D aplikacji. Wywołaj tę metodę przed zainicjowanym głównym oknem. |
CWinApp::EnableHtmlHelp | Implementuje element HTMLHelp dla aplikacji, a nie WinHelp. |
CWinApp::EnableTaskbarInteraction | Włącza interakcję paska zadań. |
CWinApp::ExitInstance | Zastąpij, aby wyczyścić dane po zakończeniu działania aplikacji. |
CWinApp::GetApplicationRecoveryParameter | Pobiera parametr wejściowy dla metody odzyskiwania aplikacji. |
CWinApp::GetApplicationRecoveryPingInterval | Zwraca czas oczekiwania menedżera ponownego uruchamiania na zwrócenie funkcji wywołania zwrotnego odzyskiwania. |
CWinApp::GetApplicationRestartFlags | Zwraca flagi menedżera ponownego uruchamiania. |
CWinApp::GetAppRegistryKey | Zwraca klucz dla HKEY_CURRENT_USER\"Software"\RegistryKey\ProfileName. |
CWinApp::GetDataRecoveryHandler | Pobiera procedurę obsługi odzyskiwania danych dla tego wystąpienia aplikacji. |
CWinApp::GetFirstDocTemplatePosition | Pobiera pozycję pierwszego szablonu dokumentu. |
CWinApp::GetHelpMode | Pobiera typ pomocy używanej przez aplikację. |
CWinApp::GetNextDocTemplate | Pobiera pozycję szablonu dokumentu. Można używać rekursywnie. |
CWinApp::GetPrinterDeviceDefaults | Pobiera ustawienia domyślne urządzenia drukarki. |
CWinApp::GetProfileBinary | Pobiera dane binarne z wpisu w aplikacji . Plik INI. |
CWinApp::GetProfileInt | Pobiera liczbę całkowitą z wpisu w aplikacji . Plik INI. |
CWinApp::GetProfileString | Pobiera ciąg z wpisu w pliku aplikacji . Plik INI. |
CWinApp::GetSectionKey | Zwraca klucz dla HKEY_CURRENT_USER\"Software"\RegistryKey\AppName\lpszSection. |
CWinApp::HideApplication | Ukrywa aplikację przed zamknięciem wszystkich dokumentów. |
CWinApp::HtmlHelp | HTMLHelp Wywołuje funkcję systemu Windows. |
CWinApp::InitInstance | Zastąpij, aby wykonać inicjowanie wystąpienia systemu Windows, takie jak tworzenie obiektów okna. |
CWinApp::IsTaskbarInteractionEnabled | Informuje, czy interakcja z paskiem zadań systemu Windows 7 jest włączona. |
CWinApp::LoadCursor | Ładuje zasób kursora. |
CWinApp::LoadIcon | Ładuje zasób ikony. |
CWinApp::LoadOEMCursor | Ładuje wstępnie zdefiniowany kursor systemu Windows OEM, który OCR_ stałe określone w systemie WINDOWS.H. |
CWinApp::LoadOEMIcon | Ładuje wstępnie zdefiniowaną ikonę producenta OEM systemu Windows, którą OIC_ stałe określone w systemie WINDOWS.H. |
CWinApp::LoadStandardCursor | Ładuje wstępnie zdefiniowany kursor systemu Windows, który IDC_ stałe określone w systemie WINDOWS.H. |
CWinApp::LoadStandardIcon | Ładuje wstępnie zdefiniowaną ikonę systemu Windows, którą IDI_ stałe określone w systemie WINDOWS.H. |
CWinApp::OnDDECommand | Wywoływana przez platformę w odpowiedzi na polecenie wykonywania dynamicznej wymiany danych (DDE). |
CWinApp::OnIdle | Zastąpić w celu wykonania przetwarzania bezczynności specyficznego dla aplikacji. |
CWinApp::OpenDocumentFile | Wywoływana przez platformę w celu otwarcia dokumentu z pliku. |
CWinApp::P arseCommandLine | Analizuje poszczególne parametry i flagi w wierszu polecenia. |
CWinApp::P reTranslateMessage | Filtruje komunikaty przed wysłaniem ich do funkcji TranslateMessage i DispatchMessage systemu Windows. |
CWinApp::P rocessMessageFilter | Przechwytuje niektóre komunikaty przed dotarciem do aplikacji. |
CWinApp::P rocessShellCommand | Obsługuje argumenty wiersza polecenia i flagi. |
CWinApp::P rocessWndProcException | Przechwytuje wszystkie nieobsługiwane wyjątki zgłaszane przez programy obsługi komunikatów i poleceń aplikacji. |
CWinApp::Register | Wykonuje rejestrację dostosowaną. |
CWinApp::RegisterWithRestartManager | Rejestruje aplikację za pomocą menedżera ponownego uruchamiania. |
CWinApp::ReopenPreviousFilesAtRestart | Określa, czy menedżer ponownego uruchamiania ponownie otwiera pliki, które były otwierane, gdy aplikacja zakończyła się nieoczekiwanie. |
CWinApp::RestartInstance | Obsługuje ponowne uruchomienie aplikacji zainicjowane przez menedżera ponownego uruchamiania. |
CWinApp::RestoreAutosavedFilesAtRestart | Określa, czy menedżer ponownego uruchamiania przywraca automatycznie zapisane pliki po ponownym uruchomieniu aplikacji. |
CWinApp::Run | Uruchamia domyślną pętlę komunikatów. Zastąpij, aby dostosować pętlę komunikatów. |
CWinApp::RunAutomated | Testuje wiersz polecenia aplikacji dla opcji /Automation . Nieaktualne. Zamiast tego użyj wartości w CCommandLineInfo::m_bRunAutomated po wywołaniu polecenia ParseCommandLine. |
CWinApp::RunEmbedded | Testuje wiersz polecenia aplikacji dla opcji /Embedding . Nieaktualne. Zamiast tego użyj wartości w CCommandLineInfo::m_bRunEmbedded po wywołaniu polecenia ParseCommandLine. |
CWinApp::SaveAllModified | Monituje użytkownika o zapisanie wszystkich zmodyfikowanych dokumentów. |
CWinApp::SelectPrinter | Wybiera drukarkę wskazaną wcześniej przez użytkownika za pośrednictwem okna dialogowego drukowania. |
CWinApp::SetHelpMode | Ustawia i inicjuje typ pomocy używanej przez aplikację. |
CWinApp::SupportsApplicationRecovery | Określa, czy menedżer ponownego uruchamiania odzyskuje nieoczekiwanie aplikację, która zakończyła działanie. |
CWinApp::SupportsAutosaveAtInterval | Określa, czy menedżer ponownego uruchamiania automatycznie otwiera dokumenty w regularnych odstępach czasu. |
CWinApp::SupportsAutosaveAtRestart | Określa, czy menedżer ponownego uruchamiania automatycznie zapisuje otwarte dokumenty po ponownym uruchomieniu aplikacji. |
CWinApp::SupportsRestartManager | Określa, czy aplikacja obsługuje menedżera ponownego uruchamiania. |
CWinApp::Wyrejestrowywanie | Wyrejestrowuje wszystko, co wiadomo, że jest rejestrowane przez CWinApp obiekt. |
CWinApp::WinHelp | WinHelp Wywołuje funkcję systemu Windows. |
CWinApp::WriteProfileBinary | Zapisuje dane binarne w wpisie w aplikacji . Plik INI. |
CWinApp::WriteProfileInt | Zapisuje liczbę całkowitą w wpisie w pliku aplikacji . Plik INI. |
CWinApp::WriteProfileString | Zapisuje ciąg do wpisu w pliku aplikacji . Plik INI. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
CWinApp::EnableShellOtwórz | Umożliwia użytkownikowi otwieranie plików danych z Menedżera plików systemu Windows. |
CWinApp::LoadStdProfileSettings | Ładuje standard . Ustawienia pliku INI i włącza funkcję listy plików MRU. |
CWinApp::OnContextHelp | Obsługuje pomoc SHIFT+F1 w aplikacji. |
CWinApp::OnFileNew | Implementuje polecenie ID_FILE_NEW. |
CWinApp::OnFileOpen | Implementuje polecenie ID_FILE_OPEN. |
CWinApp::OnFilePrintSetup | Implementuje polecenie ID_FILE_PRINT_SETUP. |
CWinApp::OnHelp | Obsługuje pomoc F1 w aplikacji (przy użyciu bieżącego kontekstu). |
CWinApp::OnHelpFinder | Obsługuje polecenia ID_HELP_FINDER i ID_DEFAULT_HELP. |
CWinApp::OnHelpIndex | Obsługuje polecenie ID_HELP_INDEX i udostępnia domyślny temat Pomocy. |
CWinApp::OnHelpUsing | Obsługuje polecenie ID_HELP_USING. |
CWinApp::RegisterShellFileTypes | Rejestruje wszystkie typy dokumentów aplikacji w Menedżerze plików systemu Windows. |
CWinApp::SetAppID | Jawnie ustawia identyfikator modelu użytkownika aplikacji dla aplikacji. Ta metoda powinna być wywoływana przed przedstawieniem użytkownikowi dowolnego interfejsu użytkownika (najlepszym miejscem jest konstruktor aplikacji). |
CWinApp::SetRegistryKey | Powoduje, że ustawienia aplikacji są przechowywane w rejestrze zamiast . Pliki INI. |
CWinApp::UnregisterShellFileTypes | Wyrejestrowuje wszystkie typy dokumentów aplikacji za pomocą Menedżera plików systemu Windows. |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CWinApp::m_bHelpMode | Wskazuje, czy użytkownik jest w trybie kontekstowym Pomoc (zwykle wywoływany z SHIFT+F1). |
CWinApp::m_eHelpType | Określa typ pomocy używanej przez aplikację. |
CWinApp::m_hInstance | Identyfikuje bieżące wystąpienie aplikacji. |
CWinApp::m_lpCmdLine | Wskazuje ciąg zakończony o wartości null, który określa wiersz polecenia dla aplikacji. |
CWinApp::m_nCmdShow | Określa, jak okno ma być wyświetlane początkowo. |
CWinApp::m_pActiveWnd | Wskaźnik do głównego okna aplikacji kontenera, gdy serwer OLE jest aktywny. |
CWinApp::m_pszAppID | Identyfikator modelu użytkownika aplikacji. |
CWinApp::m_pszAppName | Określa nazwę aplikacji. |
CWinApp::m_pszExeName | Nazwa modułu aplikacji. |
CWinApp::m_pszHelpFilePath | Ścieżka do pliku Pomocy aplikacji. |
CWinApp::m_pszProfileName | Aplikacja . Nazwa pliku INI. |
CWinApp::m_pszRegistryKey | Służy do określania pełnego klucza rejestru do przechowywania ustawień profilu aplikacji. |
Chronione składowe danych
Nazwa/nazwisko | opis |
---|---|
CWinApp::m_dwRestartManagerSupportFlags | Flagi określające zachowanie menedżera ponownego uruchamiania. |
CWinApp::m_nAutosaveInterval | Czas w milisekundach między autozapisami. |
CWinApp::m_pDataRecoveryHandler | Wskaźnik do programu obsługi odzyskiwania danych dla aplikacji. |
Uwagi
Obiekt aplikacji udostępnia funkcje członkowskie do inicjowania aplikacji (i każdego jej wystąpienia) oraz uruchamiania aplikacji.
Każda aplikacja korzystająca z klas programu Microsoft Foundation może zawierać tylko jeden obiekt pochodzący z CWinApp
klasy . Ten obiekt jest konstruowany, gdy inne obiekty globalne języka C++ są konstruowane i jest już dostępny, gdy system Windows wywołuje WinMain
funkcję, która jest dostarczana przez bibliotekę klas programu Microsoft Foundation. Zadeklaruj obiekt pochodny CWinApp
na poziomie globalnym.
Podczas tworzenia klasy aplikacji z CWinApp
klasy programu zastąpić funkcję składową InitInstance w celu utworzenia głównego obiektu okna aplikacji.
Oprócz CWinApp
funkcji składowych biblioteka klas programu Microsoft Foundation udostępnia następujące funkcje globalne umożliwiające dostęp do CWinApp
obiektu i innych informacji globalnych:
AfxGetApp uzyskuje wskaźnik do
CWinApp
obiektu.AfxGetInstanceHandle uzyskuje dojście do bieżącego wystąpienia aplikacji.
AfxGetResourceHandle uzyskuje dojście do zasobów aplikacji.
AfxGetAppName uzyskuje wskaźnik do ciągu zawierającego nazwę aplikacji. Alternatywnie, jeśli masz wskaźnik do
CWinApp
obiektu, użyj poleceniam_pszExeName
, aby uzyskać nazwę aplikacji.
Zobacz CWinApp: Klasa aplikacji, aby uzyskać więcej informacji na CWinApp
temat klasy, w tym omówienie następujących elementów:
CWinApp
-pochodny kod napisany przez Kreatora aplikacji.CWinApp
Rola użytkownika w sekwencji wykonywania aplikacji.CWinApp
Domyślne implementacje funkcji składowych.CWinApp
's key overridables.
Element m_hPrevInstance
członkowski danych już nie istnieje. Aby określić, czy jest uruchomione inne wystąpienie aplikacji, użyj nazwanego mutexu. Jeśli otwarcie mutex zakończy się niepowodzeniem, nie ma żadnych innych wystąpień aplikacji.
Hierarchia dziedziczenia
CWinApp
Wymagania
Nagłówek: afxwin.h
CWinApp::AddDocTemplate
Wywołaj tę funkcję składową, aby dodać szablon dokumentu do listy dostępnych szablonów dokumentów, które obsługuje aplikacja.
void AddDocTemplate(CDocTemplate* pTemplate);
Parametry
pTemplate
Wskaźnik do dodania CDocTemplate
.
Uwagi
Przed wywołaniem metody RegisterShellFileTypes należy dodać wszystkie szablony dokumentów do aplikacji.
Przykład
// The following code is produced by the Application Wizard when you
// choose the MDI (multiple document interface) option.
CMultiDocTemplate *pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MYTYPE,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMyView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
CWinApp::AddToRecentFileList
Wywołaj tę funkcję składową, aby dodać nazwę lpszPathName do listy plików MRU.
virtual void AddToRecentFileList(LPCTSTR lpszPathName);
Parametry
lpszPathName
Ścieżka pliku.
Uwagi
Przed użyciem tej funkcji składowej należy wywołać funkcję składową LoadStdProfileSettings , aby załadować bieżącą listę plików MRU.
Struktura wywołuje tę funkcję składową po otwarciu pliku lub wykonuje polecenie Zapisz jako, aby zapisać plik o nowej nazwie.
Przykład
// This adds the pathname c:\temp\test.doc to the top of
// the most recently used (MRU) list in the File menu.
AfxGetApp()->AddToRecentFileList(_T("c:\\temp\\test.doc"));
CWinApp::ApplicationRecoveryCallback
Wywoływana przez platformę, gdy aplikacja nieoczekiwanie kończy działanie.
virtual DWORD ApplicationRecoveryCallback(LPVOID lpvParam);
Parametry
lpvParam
[in] Zarezerwowane do użytku w przyszłości.
Wartość zwracana
0, jeśli ta metoda zakończy się pomyślnie; nonzero, jeśli wystąpi błąd.
Uwagi
Jeśli aplikacja obsługuje menedżera ponownego uruchamiania, platforma wywołuje tę funkcję, gdy aplikacja nieoczekiwanie zakończy działanie.
Domyślna implementacja ApplicationRecoveryCallback
używa elementu , CDataRecoveryHandler
aby zapisać listę aktualnie otwartych dokumentów w rejestrze. Ta metoda nie automatycznie zapisuje żadnych plików.
Aby dostosować zachowanie, przesłoń tę funkcję w pochodnej klasie CWinApp lub przekaż własną metodę odzyskiwania aplikacji jako parametr do CWinApp::RegisterWithRestartManager.
CWinApp::CloseAllDocuments
Wywołaj tę funkcję składową, aby zamknąć wszystkie otwarte dokumenty przed zakończeniem.
void CloseAllDocuments(BOOL bEndSession);
Parametry
bEndSession
Określa, czy sesja systemu Windows jest zakończona. Jest to prawda, jeśli sesja zostanie zakończona; w przeciwnym razie FAŁSZ.
Uwagi
Wywołaj metodę HideApplication przed wywołaniem metody CloseAllDocuments
.
CWinApp::CreatePrinterDC
Wywołaj tę funkcję składową, aby utworzyć kontekst urządzenia drukarki (DC) z wybranej drukarki.
BOOL CreatePrinterDC(CDC& dc);
Parametry
Dc
Odwołanie do kontekstu urządzenia drukarki.
Wartość zwracana
Niezerowe, jeśli kontekst urządzenia drukarki został utworzony pomyślnie; w przeciwnym razie 0.
Uwagi
CreatePrinterDC
Inicjuje kontekst urządzenia przekazywany przez odwołanie, aby można było go użyć do drukowania.
Jeśli funkcja zakończy się pomyślnie, po zakończeniu drukowania należy zniszczyć kontekst urządzenia. Możesz pozwolić, aby destruktor obiektu CDC zrobił to lub można to zrobić jawnie, wywołując cdC::D eleteDC.
CWinApp::CWinApp
CWinApp
Tworzy obiekt i przekazuje nazwę lpszAppName do przechowywania jako nazwy aplikacji.
CWinApp(LPCTSTR lpszAppName = NULL);
Parametry
lpszAppName
Ciąg zakończony wartością null, który zawiera nazwę aplikacji używanej przez system Windows. Jeśli ten argument nie jest podany lub ma wartość NULL, CWinApp
użyj ciągu zasobu AFX_IDS_APP_TITLE lub nazwy pliku wykonywalnego.
Uwagi
Należy utworzyć jeden obiekt globalny klasy pochodnej CWinApp
. W aplikacji może znajdować się tylko jeden CWinApp
obiekt. Konstruktor przechowuje wskaźnik do CWinApp
obiektu, aby WinMain
umożliwić wywołanie funkcji składowych obiektu w celu zainicjowania i uruchomienia aplikacji.
CWinApp::D elRegTree
Usuwa określony klucz rejestru i wszystkie jego podklucze.
LONG DelRegTree(
HKEY hParentKey,
const CString& strKeyName);
LONG DelRegTree(
HKEY hParentKey,
const CString& strKeyName,
CAtlTransactionManager* pTM = NULL);
Parametry
hParentKey
Obsługa klucza rejestru.
strKeyName
Nazwa klucza rejestru, który ma zostać usunięty.
pTM
Wskaźnik do obiektu CAtlTransactionManager.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość jest ERROR_SUCCESS. Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość jest kodem błędu niezerowym zdefiniowanym w pliku Winerror.h.
Uwagi
Wywołaj tę funkcję, aby usunąć określony klucz i jego podklucze.
CWinApp::D oMessageBox
Struktura wywołuje tę funkcję składową, aby zaimplementować pole komunikatu dla funkcji globalnej AfxMessageBox.
virtual int DoMessageBox(
LPCTSTR lpszPrompt,
UINT nType,
UINT nIDPrompt);
Parametry
lpszPrompt
Adres tekstowy w polu wiadomości.
nType
Styl pola komunikatu.
nIDPrompt
Indeks do ciągu kontekstu Pomocy.
Wartość zwracana
Zwraca te same wartości co AfxMessageBox
.
Uwagi
Nie należy wywoływać tej funkcji składowej, aby otworzyć pole komunikatu; Zamiast tego użyj AfxMessageBox
polecenia .
Zastąpij tę funkcję składową, aby dostosować przetwarzanie wywołań w całej AfxMessageBox
aplikacji.
CWinApp::D oWaitCursor
Ta funkcja składowa jest wywoływana przez platformę w celu zaimplementowania CWaitCursor, CCmdTarget::BeginWaitCursor, CCmdTarget::EndWaitCursor i CCmdTarget::RestoreWaitCursor.
virtual void DoWaitCursor(int nCode);
Parametry
nCode
Jeśli ten parametr ma wartość 1, zostanie wyświetlony kursor oczekiwania. Jeśli wartość 0, kursor oczekiwania zostanie przywrócony bez zwiększania liczby odwołań. Jeśli -1, kursor oczekiwania kończy się.
Uwagi
Wartość domyślna implementuje kursor klepsydry. DoWaitCursor
utrzymuje liczbę odwołań. Gdy jest dodatni, zostanie wyświetlony kursor klepsydry.
Chociaż zwykle nie można wywołać DoWaitCursor
bezpośrednio, można zastąpić tę funkcję składową, aby zmienić kursor oczekiwania lub wykonać dodatkowe przetwarzanie podczas wyświetlania kursora oczekiwania.
Aby ułatwić, bardziej usprawniony sposób implementowania kursora oczekiwania, użyj polecenia CWaitCursor
.
Przykład
// The following example shows how to display the
// hourglass cursor during some lengthy processing
void CMdiView::OnLButtonDown(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
UNREFERENCED_PARAMETER(point);
AfxGetApp()->DoWaitCursor(1); // 1->>display the hourglass cursor
// do some lengthy processing
Sleep(1000);
AfxGetApp()->DoWaitCursor(-1); // -1->>remove the hourglass cursor
}
// The next example shows DoWaitCursor with parameter 0. It restores
// the hourglass cursor.
void CMdiView::OnMButtonDown(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
UNREFERENCED_PARAMETER(point);
AfxGetApp()->DoWaitCursor(1); // display the hourglass cursor
// do some lengthy processing
// The message box will normally change the cursor to
// the standard arrow cursor, and leave the cursor in
// as the standard arrow cursor when the message box is
// closed.
AfxMessageBox(_T("DoWaitCursor Sample"));
// Call DoWaitCursor with parameter 0 to restore
// the cursor back to the hourglass cursor.
AfxGetApp()->DoWaitCursor(0);
// do some more lengthy processing
Sleep(1000);
AfxGetApp()->DoWaitCursor(-1); // remove the hourglass cursor
}
CWinApp::EnableD2DSupport
Wymagany jest dodatek SP1 dla programu Visual Studio 2010.
Umożliwia obsługę D2D aplikacji. Wywołaj tę metodę przed zainicjowanym głównym oknem.
BOOL EnableD2DSupport(
D2D1_FACTORY_TYPE d2dFactoryType = D2D1_FACTORY_TYPE_SINGLE_THREADED,
DWRITE_FACTORY_TYPE writeFactoryType = DWRITE_FACTORY_TYPE_SHARED);
Parametry
d2dFactoryType
Model wątkowy fabryki D2D i tworzone przez nią zasoby.
writeFactoryType
Wartość określająca, czy obiekt fabryki zapisu będzie współużytkowany, czy izolowany
Wartość zwracana
Zwraca wartość TRUE, jeśli włączono obsługę D2D, FALSE — w przeciwnym razie
CWinApp::EnableHtmlHelp
Wywołaj tę funkcję składową z konstruktora klasy -pochodnej CWinApp
, aby użyć elementu HTMLHelp w celu uzyskania pomocy aplikacji.
void EnableHtmlHelp();
Uwagi
CWinApp::EnableShellOtwórz
Wywołaj tę funkcję, zazwyczaj z InitInstance
przesłonięcia, aby umożliwić użytkownikom aplikacji otwieranie plików danych po dwukrotnym kliknięciu plików z Poziomu Menedżera plików systemu Windows.
void EnableShellOpen();
Uwagi
Wywołaj funkcję składową w połączeniu RegisterShellFileTypes
z tą funkcją lub podaj element . Plik REG z aplikacją do ręcznej rejestracji typów dokumentów.
Przykład
// The following code fragment is from CMyApp::InitInstance.
// CMyApp is a CWinApp-derived class.
// enable file manager drag/drop and DDE Execute open
EnableShellOpen();
RegisterShellFileTypes();
CWinApp::EnableTaskbarInteraction
Włącza interakcję paska zadań.
BOOL EnableTaskbarInteraction(BOOL bEnable = TRUE);
Parametry
bEnable
Określa, czy interakcja z paskiem zadań systemu Windows 7 powinna być włączona (TRUE) lub wyłączona (FALSE).
Wartość zwracana
Zwraca wartość TRUE, jeśli można włączyć lub wyłączyć interakcję paska zadań.
Uwagi
Ta metoda musi być wywoływana przed utworzeniem okna głównego. W przeciwnym razie potwierdza i zwraca wartość FALSE.
CWinApp::ExitInstance
Wywoływana przez platformę z poziomu funkcji składowej Run
w celu zakończenia tego wystąpienia aplikacji.
virtual int ExitInstance();
Wartość zwracana
Kod zakończenia aplikacji; Wartość 0 nie wskazuje błędów, a wartości większe niż 0 wskazują błąd. Ta wartość jest używana jako wartość zwracana z WinMain
.
Uwagi
Nie należy wywoływać tej funkcji składowej z dowolnego miejsca, ale w ramach funkcji składowej Run
.
Domyślna implementacja tej funkcji zapisuje opcje struktury w aplikacji . Plik INI. Zastąpij tę funkcję, aby wyczyścić ją po zakończeniu działania aplikacji.
Przykład
int CMyApp::ExitInstance()
{
if (m_pMySampleMem)
delete m_pMySampleMem;
DoCleanup();
return CWinApp::ExitInstance();
}
CWinApp::GetApplicationRecoveryParameter
Pobiera parametr wejściowy dla metody odzyskiwania aplikacji.
virtual LPVOID GetApplicationRecoveryParameter();
Wartość zwracana
Domyślny parametr wejściowy dla metody odzyskiwania aplikacji.
Uwagi
Domyślne zachowanie tej funkcji zwraca wartość NULL.
Aby uzyskać więcej informacji, zobacz CWinApp::ApplicationRecoveryCallback.
CWinApp::GetApplicationRecoveryPingInterval
Zwraca czas oczekiwania menedżera ponownego uruchamiania na zwrócenie funkcji wywołania zwrotnego odzyskiwania.
virtual DWORD GetApplicationRecoveryPingInterval();
Wartość zwracana
Czas w milisekundach.
Uwagi
Gdy aplikacja zarejestrowana w menedżerze ponownego uruchamiania zostanie nieoczekiwanie zakończona, aplikacja próbuje zapisać otwarte dokumenty i wywołać funkcję wywołania zwrotnego odzyskiwania. Domyślną funkcją wywołania zwrotnego odzyskiwania jest CWinApp::ApplicationRecoveryCallback.
Czas oczekiwania platformy na zwrócenie funkcji wywołania zwrotnego odzyskiwania to interwał ping. Interwał ping można dostosować, przesłonięć CWinApp::GetApplicationRecoveryPingInterval
lub podając wartość niestandardową na RegisterWithRestartManager
wartość .
CWinApp::GetApplicationRestartFlags
Zwraca flagi menedżera ponownego uruchamiania.
virtual DWORD GetApplicationRestartFlags();
Wartość zwracana
Flagi menedżera ponownego uruchamiania. Domyślna implementacja zwraca wartość 0.
Uwagi
Flagi menedżera ponownego uruchamiania nie mają wpływu na domyślną implementację. Są one udostępniane do użytku w przyszłości.
Flagi ustawiane podczas rejestrowania aplikacji za pomocą menedżera ponownego uruchamiania przy użyciu narzędzia CWinApp::RegisterWithRestartManager.
Możliwe wartości flag menedżera ponownego uruchamiania są następujące:
RESTART_NO_CRASH
RESTART_NO_HANG
RESTART_NO_PATCH
RESTART_NO_REBOOT
CWinApp::GetAppRegistryKey
Zwraca klucz HKEY_CURRENT_USER\"Software"\RegistryKey\ProfileName.
HKEY GetAppRegistryKey(CAtlTransactionManager* pTM = NULL);
Parametry
pTM
Wskaźnik do CAtlTransactionManager
obiektu.
Wartość zwracana
Klucz aplikacji, jeśli funkcja powiedzie się; w przeciwnym razie wartość NULL.
Uwagi
CWinApp::GetDataRecoveryHandler
Pobiera procedurę obsługi odzyskiwania danych dla tego wystąpienia aplikacji.
virtual CDataRecoveryHandler *GetDataRecoveryHandler();
Wartość zwracana
Procedura obsługi odzyskiwania danych dla tego wystąpienia aplikacji.
Uwagi
Każda aplikacja korzystająca z menedżera ponownego uruchamiania musi mieć jedno wystąpienie klasy CDataRecoveryHandler. Ta klasa jest odpowiedzialna za monitorowanie otwartych dokumentów i automatyczne zapisywanie plików. Zachowanie elementu CDataRecoveryHandler
zależy od konfiguracji menedżera ponownego uruchamiania. Aby uzyskać więcej informacji, zobacz Klasa CDataRecoveryHandler.
Ta metoda zwraca wartość NULL w systemach operacyjnych starszych niż Windows Vista. Menedżer ponownego uruchamiania nie jest obsługiwany w systemach operacyjnych starszych niż Windows Vista.
Jeśli aplikacja nie ma obecnie procedury obsługi odzyskiwania danych, ta metoda tworzy ją i zwraca do niej wskaźnik.
CWinApp::GetFirstDocTemplatePosition
Pobiera pozycję pierwszego szablonu dokumentu w aplikacji.
POSITION GetFirstDocTemplatePosition() const;
Wartość zwracana
Wartość POZYCJI, która może służyć do iteracji lub pobierania wskaźnika obiektu; Wartość NULL, jeśli lista jest pusta.
Uwagi
Użyj wartości POSITION zwróconej w wywołaniu metody GetNextDocTemplate, aby uzyskać pierwszy obiekt CDocTemplate.
CWinApp::GetHelpMode
Pobiera typ pomocy używanej przez aplikację.
AFX_HELP_TYPE GetHelpMode();
Wartość zwracana
Typ pomocy używany przez aplikację. Aby uzyskać więcej informacji, zobacz CWinApp::m_eHelpType .
CWinApp::GetNextDocTemplate
Pobiera szablon dokumentu zidentyfikowany przez wiersz polecenia, a następnie ustawia wiersze na wartość POSITION.
CDocTemplate* GetNextDocTemplate(POSITION& pos) const;
Parametry
pozytyw
Odwołanie do wartości POSITION zwróconej przez poprzednie wywołanie metody GetNextDocTemplate
lub GetFirstDocTemplatePosition. Wartość zostanie zaktualizowana do następnego położenia przez to wywołanie.
Wartość zwracana
Wskaźnik do obiektu CDocTemplate .
Uwagi
Można użyć GetNextDocTemplate
w pętli iteracji przesyłania dalej, jeśli ustanowisz pozycję początkową z wywołaniem metody GetFirstDocTemplatePosition
.
Upewnij się, że wartość POZYCJI jest prawidłowa. Jeśli jest on nieprawidłowy, oznacza to, że wersja debugowania biblioteki klas programu Microsoft Foundation jest asercyjna.
Jeśli pobrany szablon dokumentu jest ostatni dostępny, nowa wartość wierszy jest ustawiona na wartość NULL.
CWinApp::GetPrinterDeviceDefaults
Wywołaj tę funkcję składową, aby przygotować kontekst urządzenia drukarki do drukowania.
BOOL GetPrinterDeviceDefaults(struct tagPDA* pPrintDlg);
Parametry
pPrintDlg
Wskaźnik do struktury PRINTDLG .
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Pobiera bieżące wartości domyślne drukarki z systemu Windows . Plik INI w razie potrzeby lub używa ostatniej konfiguracji drukarki ustawionej przez użytkownika w ustawieniach wydruku.
Przykład
void CMyApp::SetLandscapeMode()
{
PRINTDLG pd;
pd.lStructSize = (DWORD)sizeof(PRINTDLG);
BOOL bRet = GetPrinterDeviceDefaults(&pd);
if (bRet)
{
// protect memory handle with ::GlobalLock and ::GlobalUnlock
DEVMODE FAR *pDevMode = (DEVMODE FAR*)::GlobalLock(pd.hDevMode);
// set orientation to landscape
pDevMode->dmOrientation = DMORIENT_LANDSCAPE;
::GlobalUnlock(pd.hDevMode);
}
}
CWinApp::GetProfileBinary
Wywołaj tę funkcję składową, aby pobrać dane binarne z wpisu w określonej sekcji rejestru aplikacji lub . Plik INI.
BOOL GetProfileBinary(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
LPBYTE* ppData,
UINT* pBytes);
Parametry
lpszSection
Wskazuje ciąg o wartości null, który określa sekcję zawierającą wpis.
lpszEntry
Wskazuje ciąg o wartości null, który zawiera wpis, którego wartość ma zostać pobrana.
ppData
Wskazuje wskaźnik, który otrzyma adres danych.
Liczba bajtów pBytes
Wskazuje interfejs UINT, który otrzyma rozmiar danych (w bajtach).
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa nie uwzględnia wielkości liter, więc ciągi w parametrach lpszSection i lpszEntry mogą się różnić w przypadku.
Uwaga
GetProfileBinary
przydziela bufor i zwraca jego adres w * ppData. Obiekt wywołujący jest odpowiedzialny za zwalnianie buforu przy użyciu polecenia delete [].
Ważne
Dane zwrócone przez tę funkcję nie muszą mieć wartości NULL zakończone, a obiekt wywołujący musi przeprowadzić walidację. Aby uzyskać więcej informacji, zobacz Unikanie przekroków buforu.
Przykład
CWinApp* pApp = AfxGetApp();
const TCHAR* pszKey = _T("My Section");
struct complex {
double re, im;
} myData = { 1.4142, -0.5 };
// Write the information to the registry.
pApp->WriteProfileBinary(pszKey, _T("ComplexData"), (LPBYTE)&myData,
sizeof(myData));
// Read the information from the registry.
complex* pData;
UINT n;
BOOL ret = pApp->GetProfileBinary(pszKey, _T("ComplexData"), (LPBYTE*)&pData,
&n);
ASSERT(ret);
ASSERT(n == sizeof(complex));
ASSERT(myData.re == pData->re);
ASSERT(myData.im == pData->im);
delete [] pData; // free the buffer
Aby uzyskać dodatkowy przykład, zobacz CWinApp::WriteProfileBinary.
CWinApp::GetProfileInt
Wywołaj tę funkcję składową, aby pobrać wartość liczby całkowitej z wpisu w określonej sekcji rejestru aplikacji lub . Plik INI.
UINT GetProfileInt(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
int nDefault);
Parametry
lpszSection
Wskazuje ciąg o wartości null, który określa sekcję zawierającą wpis.
lpszEntry
Wskazuje ciąg o wartości null, który zawiera wpis, którego wartość ma zostać pobrana.
nDefault
Określa wartość domyślną, która ma być zwracana, jeśli platforma nie może odnaleźć wpisu.
Wartość zwracana
Wartość całkowita ciągu, która jest zgodna z określonym wpisem, jeśli funkcja zakończy się pomyślnie. Wartość zwracana jest wartością parametru nDefault , jeśli funkcja nie znajdzie wpisu. Wartość zwracana to 0, jeśli wartość odpowiadająca określonej pozycji nie jest liczbą całkowitą.
Ta funkcja składowa obsługuje notację szesnastkową dla wartości w elemencie . Plik INI. Po pobraniu podpisanej liczby całkowitej należy rzutować wartość na int
wartość .
Uwagi
Ta funkcja składowa nie uwzględnia wielkości liter, więc ciągi w parametrach lpszSection i lpszEntry mogą się różnić w przypadku.
Ważne
Dane zwrócone przez tę funkcję nie muszą mieć wartości NULL zakończone, a obiekt wywołujący musi przeprowadzić walidację. Aby uzyskać więcej informacji, zobacz Unikanie przekroków buforu.
Przykład
CWinApp *pApp = AfxGetApp();
const TCHAR *pszKey = _T("My Section");
const TCHAR *pszName = _T("Julian");
int iAge = 26;
// Write the information to the registry.
pApp->WriteProfileString(pszKey, _T("Name"), pszName);
pApp->WriteProfileInt(pszKey, _T("Age"), iAge);
// Read the information from the registry.
CString strName = pApp->GetProfileString(pszKey, _T("Name"));
int iAge2 = pApp->GetProfileInt(pszKey, _T("Age"), 0);
ASSERT(strName == pszName);
ASSERT(iAge2 == iAge);
Aby uzyskać dodatkowy przykład, zobacz CWinApp::WriteProfileInt.
CWinApp::GetProfileString
Wywołaj tę funkcję składową, aby pobrać ciąg skojarzony z wpisem w określonej sekcji w rejestrze aplikacji lub . Plik INI.
CString GetProfileString(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
LPCTSTR lpszDefault = NULL);
Parametry
lpszSection
Wskazuje ciąg o wartości null, który określa sekcję zawierającą wpis.
lpszEntry
Wskazuje ciąg o wartości null, który zawiera wpis, którego ciąg ma zostać pobrany. Ta wartość nie może mieć wartości NULL.
lpszDefault
Wskazuje domyślną wartość ciągu dla danego wpisu, jeśli nie można odnaleźć wpisu w pliku inicjowania.
Wartość zwracana
Zwracana wartość to ciąg z aplikacji . Jeśli nie można odnaleźć ciągu, plik INI lub lpszDefault . Maksymalna długość ciągu obsługiwana przez platformę jest _MAX_PATH. Jeśli parametr lpszDefault ma wartość NULL, zwracana wartość jest pustym ciągiem.
Uwagi
Ważne
Dane zwrócone przez tę funkcję nie muszą mieć wartości NULL zakończone, a obiekt wywołujący musi przeprowadzić walidację. Aby uzyskać więcej informacji, zobacz Unikanie przekroków buforu.
Przykład
CWinApp *pApp = AfxGetApp();
CString strSection = _T("My Section");
CString strStringItem = _T("My String Item");
CString strIntItem = _T("My Int Item");
pApp->WriteProfileString(strSection, strStringItem, _T("test"));
CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == _T("test"));
pApp->WriteProfileInt(strSection, strIntItem, 1234);
int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);
W innym przykładzie zobacz przykład CWinApp::GetProfileInt.
CWinApp::GetSectionKey
Zwraca klucz dla HKEY_CURRENT_USER\"Software"\RegistryKey\AppName\lpszSection.
HKEY GetSectionKey(
LPCTSTR lpszSection,
CAtlTransactionManager* pTM = NULL);
Parametry
lpszSection
Nazwa klucza do uzyskania.
pTM
Wskaźnik do CAtlTransactionManager
obiektu.
Wartość zwracana
Klucz sekcji, jeśli funkcja powiedzie się; w przeciwnym razie wartość NULL.
Uwagi
CWinApp::HideApplication
Wywołaj tę funkcję składową, aby ukryć aplikację przed zamknięciem otwartych dokumentów.
void HideApplication();
CWinApp::HtmlHelp
Wywołaj tę funkcję składową, aby wywołać aplikację HTMLHelp.
virtual void HtmlHelp(
DWORD_PTR dwData,
UINT nCmd = 0x000F);
Parametry
dwData
Określa dodatkowe dane. Użyta wartość zależy od wartości parametru nCmd . 0x000F
Wartości domyślne, co oznacza HH_HELP_CONTEXT.
nCmd
Określa typ żądanej pomocy. Aby uzyskać listę możliwych wartości i ich wpływ na parametr dwData , zobacz parametr uCommand opisany w funkcjach interfejsu API HtmlHelpW lub HtmlHelpA w zestawie Windows SDK.
Uwagi
Platforma wywołuje również tę funkcję, aby wywołać aplikację HTMLHelp.
Platforma automatycznie zamknie aplikację HTMLHelp po zakończeniu działania aplikacji.
CWinApp::InitInstance
System Windows umożliwia jednoczesne uruchamianie kilku kopii tego samego programu.
virtual BOOL InitInstance();
Wartość zwracana
Inicjalizacja niezerowa, jeśli inicjowanie zakończyło się pomyślnie; w przeciwnym razie 0.
Uwagi
Inicjowanie aplikacji jest koncepcyjnie podzielone na dwie sekcje: jednorazowa inicjowanie aplikacji, która jest wykonywana po raz pierwszy podczas uruchamiania programu, a inicjowanie wystąpienia uruchamiane za każdym razem, gdy kopia programu jest uruchamiana po raz pierwszy. Implementacja WinMain
struktury wywołuje tę funkcję.
Zastąpij InitInstance
, aby zainicjować każde nowe wystąpienie aplikacji działającej w systemie Windows. Zazwyczaj przesłonięć InitInstance
, aby skonstruować obiekt okna głównego i ustawić CWinThread::m_pMainWnd
element członkowski danych tak, aby wskazywał to okno. Aby uzyskać więcej informacji na temat zastępowania tej funkcji składowej, zobacz CWinApp: Klasa aplikacji.
Uwaga
Aplikacje MFC muszą być inicjowane jako jednowątkowy apartament (STA). Jeśli wywołasz metodę CoInitializeEx w InitInstance
przesłonięciu, określ COINIT_APARTMENTTHREADED (zamiast COINIT_MULTITHREADED).
Przykład
// AppWizard implements the InitInstance overridable function
// according to options you select. For example, the multiple document
// interface (MDI) option was chosen for the AppWizard code created
// below. You can add other per-instance initializations to the code
// created by AppWizard.
BOOL CMFCListViewApp::InitInstance()
{
AfxSetAmbientActCtx(FALSE);
// Remainder of function definition omitted.
CWinApp::InitInstance();
// Initialize OLE libraries
if (!AfxOleInit())
{
AfxMessageBox(_T("OleInit failed."));
return FALSE;
}
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need
// Change the registry key under which our settings are stored
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(4); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MFCListViewTYPE,
RUNTIME_CLASS(CMFCListViewDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMyListView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
{
delete pMainFrame;
return FALSE;
}
m_pMainWnd = pMainFrame;
// call DragAcceptFiles only if there's a suffix
// In an MDI app, this should occur immediately after setting m_pMainWnd
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line. Will return FALSE if
// app was launched with /RegServer, /Register, /Unregserver or /Unregister.
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The main window has been initialized, so show and update it
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
return TRUE;
}
CWinApp::IsTaskbarInteractionEnabled
Informuje, czy interakcja z paskiem zadań systemu Windows 7 jest włączona.
virtual BOOL IsTaskbarInteractionEnabled();
Wartość zwracana
Zwraca wartość TRUE, jeśli EnableTaskbarInteraction
została wywołana, a system operacyjny to Windows 7 lub nowszy.
Uwagi
Interakcja z paskiem zadań oznacza, że aplikacja MDI wyświetla zawartość elementów podrzędnych MDI w osobnych miniaturach z kartami, które pojawiają się, gdy wskaźnik myszy znajduje się nad przyciskiem paska zadań aplikacji.
CWinApp::LoadCursor
Ładuje zasób kursora o nazwie lpszResourceName lub określony przez nIDResource z bieżącego pliku wykonywalnego.
HCURSOR LoadCursor(LPCTSTR lpszResourceName) const; HCURSOR LoadCursor(UINT nIDResource) const;
Parametry
lpszResourceName
Wskazuje ciąg o wartości null, który zawiera nazwę zasobu kursora. Można użyć argumentu CString
dla tego argumentu.
nIDResource
Identyfikator zasobu kursora. Aby uzyskać listę zasobów, zobacz LoadCursor w zestawie Windows SDK.
Wartość zwracana
Uchwyt do kursora, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
LoadCursor
ładuje kursor do pamięci tylko wtedy, gdy nie został on wcześniej załadowany; w przeciwnym razie pobiera uchwyt istniejącego zasobu.
Użyj funkcji składowej LoadStandardCursor lub LoadOEMCursor , aby uzyskać dostęp do wstępnie zdefiniowanych kursorów systemu Windows.
Przykład
HCURSOR hCursor;
// Load a cursor resource that was originally created using
// the Graphics Editor and assigned the i.d. IDC_MYCURSOR.
hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR);
CWinApp::LoadIcon
Ładuje zasób ikony o nazwie lpszResourceName lub określony przez nIDResource z pliku wykonywalnego.
HICON LoadIcon(LPCTSTR lpszResourceName) const; HICON LoadIcon(UINT nIDResource) const;
Parametry
lpszResourceName
Wskazuje ciąg o wartości null, który zawiera nazwę zasobu ikony. Można również użyć argumentu CString
dla tego argumentu.
nIDResource
Identyfikator zasobu ikony.
Wartość zwracana
Dojście do ikony, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
LoadIcon
ładuje ikonę tylko wtedy, gdy nie została wcześniej załadowana; w przeciwnym razie pobiera uchwyt istniejącego zasobu.
Aby uzyskać dostęp do wstępnie zdefiniowanych ikon systemu Windows, możesz użyć funkcji składowej LoadStandardIcon lub LoadOEMIcon .
Uwaga
Ta funkcja składowa wywołuje funkcję Interfejs API Win32 LoadIcon, która może ładować tylko ikonę, której rozmiar jest zgodny z wartościami metryk SM_CXICON i SM_CYICON systemowych.
CWinApp::LoadOEMCursor
Ładuje wstępnie zdefiniowany zasób kursora systemu Windows określony przez nIDCursor.
HCURSOR LoadOEMCursor(UINT nIDCursor) const;
Parametry
nIDCursor
Identyfikator stałej manifestu OCR_ określający wstępnie zdefiniowany kursor systemu Windows. Musisz mieć #define OEMRESOURCE
przed #include \<afxwin.h>
uzyskaniem dostępu do stałych OCR_ w systemie WINDOWS.H.
Wartość zwracana
Uchwyt do kursora, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
Użyj funkcji składowej LoadOEMCursor
lub LoadStandardCursor , aby uzyskać dostęp do wstępnie zdefiniowanych kursorów systemu Windows.
Przykład
// In the stdafx.h file, add #define OEMRESOURCE to
// include the windows.h definitions of OCR_ values.
#define OEMRESOURCE
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
HCURSOR hCursor;
// Load the predefined WIndows "size all" cursor.
hCursor = AfxGetApp()->LoadOEMCursor(OCR_SIZEALL);
CWinApp::LoadOEMIcon
Ładuje wstępnie zdefiniowany zasób ikony systemu Windows określony przez nIDIcon.
HICON LoadOEMIcon(UINT nIDIcon) const;
Parametry
nIDIcon
Identyfikator stałej manifestu OIC_ określający wstępnie zdefiniowaną ikonę systemu Windows. Musisz mieć #define OEMRESOURCE
przed #include \<afxwin.h>
uzyskaniem dostępu do stałych OIC_ w systemie WINDOWS.H.
Wartość zwracana
Dojście do ikony, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
Użyj funkcji członkowskiej LoadOEMIcon
lub LoadStandardIcon , aby uzyskać dostęp do wstępnie zdefiniowanych ikon systemu Windows.
CWinApp::LoadStandardCursor
Ładuje wstępnie zdefiniowany zasób kursora systemu Windows, który określa lpszCursorName .
HCURSOR LoadStandardCursor(LPCTSTR lpszCursorName) const;
Parametry
lpszCursorName
Identyfikator stałej manifestu IDC_ określający wstępnie zdefiniowany kursor systemu Windows. Te identyfikatory są zdefiniowane w systemie WINDOWS.H. Na poniższej liście przedstawiono możliwe wstępnie zdefiniowane wartości i znaczenie dla lpszCursorName:
IDC_ARROW kursor ze strzałką w warstwie Standardowa
IDC_IBEAM kursor wstawiania tekstu w warstwie Standardowa
IDC_WAIT kursor klepsydry używany, gdy system Windows wykonuje czasochłonne zadanie
IDC_CROSS kursor krzyżowy do zaznaczenia
IDC_UPARROW Strzałka wskazująca prosto w górę
IDC_SIZE przestarzałe i nieobsługiwane; używanie IDC_SIZEALL
IDC_SIZEALL strzałkę z czterema punktami. Kursor, który ma być używany do zmiany rozmiaru okna.
IDC_ICON przestarzałe i nieobsługiwane. Użyj IDC_ARROW.
IDC_SIZENWSE strzałkę dwugłową z końcami w lewym górnym rogu i w prawym dolnym rogu
IDC_SIZENESW strzałkę dwugłową z końcami w prawym górnym rogu i w lewym dolnym rogu
IDC_SIZEWE Pozioma strzałka dwugłowa
IDC_SIZENS pionowa strzałka dwugłowa
Wartość zwracana
Uchwyt do kursora, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
Użyj funkcji składowej LoadStandardCursor
lub LoadOEMCursor , aby uzyskać dostęp do wstępnie zdefiniowanych kursorów systemu Windows.
Przykład
HCURSOR hCursor;
// Load the predefined Windows "up arrow" cursor.
hCursor = AfxGetApp()->LoadStandardCursor(IDC_UPARROW);
CWinApp::LoadStandardIcon
Ładuje wstępnie zdefiniowany zasób ikony systemu Windows, który określa lpszIconName .
HICON LoadStandardIcon(LPCTSTR lpszIconName) const;
Parametry
lpszIconName
Identyfikator stałej manifestu, który określa wstępnie zdefiniowaną ikonę systemu Windows. Te identyfikatory są zdefiniowane w systemie WINDOWS.H. Aby uzyskać listę możliwych wstępnie zdefiniowanych wartości i ich opisów, zobacz parametr lpIconName w usłudze LoadIcon w zestawie SDK systemu Windows.
Wartość zwracana
Dojście do ikony, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
Użyj funkcji członkowskiej LoadStandardIcon
lub LoadOEMIcon , aby uzyskać dostęp do wstępnie zdefiniowanych ikon systemu Windows.
CWinApp::LoadStdProfileSettings
Wywołaj tę funkcję składową z poziomu funkcji składowej InitInstance , aby włączyć i załadować listę ostatnio używanych plików (MRU) i ostatni stan podglądu.
void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT);
Parametry
nMaxMRU
Liczba ostatnio używanych plików do śledzenia.
Uwagi
Jeśli nMaxMRU ma wartość 0, żadna lista MRU nie zostanie zachowana.
CWinApp::m_bHelpMode
WARTOŚĆ TRUE, jeśli aplikacja jest w trybie kontekstowym Pomoc (wywoływana konwencjonalnie przy użyciu SHIFT + F1); w przeciwnym razie FAŁSZ.
BOOL m_bHelpMode;
Uwagi
W trybie kontekstowym Pomoc kursor staje się znakiem zapytania, a użytkownik może przenieść go na ekran. Sprawdź tę flagę, jeśli chcesz zaimplementować specjalną obsługę w trybie Pomocy. m_bHelpMode
jest zmienną publiczną typu BOOL.
CWinApp::m_dwRestartManagerSupportFlags
Flagi określające zachowanie menedżera ponownego uruchamiania.
DWORD m_dwRestartManagerSupportFlags;
Uwagi
Aby włączyć menedżera ponownego uruchamiania, ustaw m_dwRestartManagerSupportFlags
żądane zachowanie. W poniższej tabeli przedstawiono dostępne flagi.
Flaga | opis |
---|---|
AFX_RESTART_MANAGER_SUPPORT_RESTART | Aplikacja jest zarejestrowana przy użyciu narzędzia CWinApp::RegisterWithRestartManager. Menedżer ponownego uruchamiania jest odpowiedzialny za ponowne uruchomienie aplikacji, jeśli nieoczekiwanie zakończy działanie. |
- AFX_RESTART_MANAGER_SUPPORT_RECOVERY | Aplikacja jest zarejestrowana w menedżerze ponownego uruchamiania, a menedżer ponownego uruchamiania wywołuje funkcję wywołania zwrotnego odzyskiwania po ponownym uruchomieniu aplikacji. Domyślną funkcją wywołania zwrotnego odzyskiwania jest CWinApp::ApplicationRecoveryCallback. |
- AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART | Automatyczne zapisywanie jest włączone i menedżer ponownego uruchamiania automatycznie zapisuje wszystkie otwarte dokumenty po ponownym uruchomieniu aplikacji. |
- AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL | Automatyczne zapisywanie jest włączone, a menedżer ponownego uruchamiania automatycznie usuwa wszystkie otwarte dokumenty w regularnych odstępach czasu. Interwał jest definiowany przez CWinApp::m_nAutosaveInterval. |
- AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES | Menedżer ponownego uruchamiania otwiera wcześniej otwarte dokumenty po ponownym uruchomieniu aplikacji z nieoczekiwanego zakończenia. Klasa CDataRecoveryHandler obsługuje przechowywanie listy otwartych dokumentów i ich przywracanie. |
- AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES | Menedżer ponownego uruchamiania monituje użytkownika o przywrócenie automatycznie zapisanych plików po ponownym uruchomieniu aplikacji. Klasa CDataRecoveryHandler odpytuje użytkownika. |
- AFX_RESTART_MANAGER_SUPPORT_NO_AUTOSAVE | Związek AFX_RESTART_MANAGER_SUPPORT_RESTART, AFX_RESTART_MANAGER_SUPPORT_RECOVER i AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES. |
- AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS | Związek AFX_RESTART_MANAGER_SUPPORT_NO_AUTOSAVE, AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART, AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL i AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES. |
- AFX_RESTART_MANAGER_SUPPORT_RESTART_ASPECTS | Związek AFX_RESTART_MANAGER_SUPPORT_RESTART, AFX_RESTART_MANAGER_AUTOSAVE_AT_RESTART, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES i AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES. |
- AFX_RESTART_MANAGER_SUPPORT_RECOVERY_ASPECTS | OfAFX_RESTART_MANAGER_SUPPORT_RECOVERY unii, AFX_RESTART_MANAGER_AUTOSAVE_AT_INTERVAL, AFX_RESTART_MANAGER_REOPEN_PREVIOUS_FILES i AFX_RESTART_MANAGER_RESTORE_AUTOSAVED_FILES. |
CWinApp::m_eHelpType
Typ tego elementu członkowskiego danych jest wyliczonym typem AFX_HELP_TYPE, który jest zdefiniowany w CWinApp
klasie.
AFX_HELP_TYPE m_eHelpType;
Uwagi
Wyliczenie AFX_HELP_TYPE jest definiowane w następujący sposób:
enum AFX_HELP_TYPE {
afxWinHelp = 0,
afxHTMLHelp = 1
};
Aby ustawić pomoc aplikacji w pomocy HTML, wywołaj metodę SetHelpMode i określ wartość
afxHTMLHelp
.Aby ustawić pomoc aplikacji dla winHelp, wywołaj
SetHelpMode
metodę i określ polecenieafxWinHelp
.
CWinApp::m_hInstance
Odpowiada parametrowi hInstance przekazanemu przez system Windows do WinMain
.
HINSTANCE m_hInstance;
Uwagi
Element m_hInstance
członkowski danych jest dojściem do bieżącego wystąpienia aplikacji działającej w systemie Windows. Jest to zwracane przez funkcję globalną AfxGetInstanceHandle. m_hInstance
jest zmienną publiczną typu HINSTANCE.
Przykład
// Typically you do not need to pass the application's hInstance
// to Windows APIs directly because there are equivalent MFC
// member functions that pass the hInstance for you. The following
// example is not typical:
HCURSOR hCursor;
hCursor = ::LoadCursor(AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDC_MYCURSOR));
// A more direct way to get the application's hInstance is to
// call AfxGetInstanceHandle:
hCursor = ::LoadCursor(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDC_MYCURSOR));
// If you need the hInstance to load a resource, it is better
// to call AfxGetResourceHandle instead of AfxGetInstanceHandle:
hCursor = ::LoadCursor(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDC_MYCURSOR));
// A better way to load the cursor resource is to call
// CWinApp::LoadCursor
hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR);
CWinApp::m_lpCmdLine
Odpowiada parametrowi lpCmdLine przekazanemu przez system Windows do .WinMain
LPTSTR m_lpCmdLine;
Uwagi
Wskazuje ciąg zakończony o wartości null, który określa wiersz polecenia dla aplikacji. Użyj m_lpCmdLine
polecenia , aby uzyskać dostęp do dowolnych argumentów wiersza polecenia, które użytkownik wprowadził podczas uruchamiania aplikacji. m_lpCmdLine
jest zmienną publiczną typu LPTSTR.
Przykład
if (m_lpCmdLine[0] == _T('\0'))
{
// Create a new (empty) document.
OnFileNew();
}
else
{
// Open a file passed as the first command line parameter.
OpenDocumentFile(m_lpCmdLine);
}
CWinApp::m_nAutosaveInterval
Czas w milisekundach między autozapisami.
int m_nAutosaveInterval;
Uwagi
Menedżer ponownego uruchamiania można skonfigurować tak, aby automatycznie otwierał dokumenty w ustalonych odstępach czasu. Jeśli aplikacja nie zapisuje automatycznie plików, ten parametr nie ma efektu.
CWinApp::m_nCmdShow
Odpowiada parametrowi nCmdShow przekazanemu przez system Windows do WinMain
.
int m_nCmdShow;
Uwagi
Należy przekazać m_nCmdShow
jako argument podczas wywoływania CWnd::ShowWindow dla głównego okna aplikacji. m_nCmdShow
jest publiczną zmienną typu int
.
Przykład
// The following code fragment is taken from CMyApp::InitInstance.
// CMyApp is derived from CWinApp.
// The main window has been initialized, so show and update it
// using the nCmdShow parameter passed to the application when it
// was first launched.
// pMainFrame is the main MDI frame window of our app and is derived
// from CMDIFrameWnd.
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
CWinApp::m_pActiveWnd
Użyj tego elementu członkowskiego danych, aby zapisać wskaźnik do głównego okna aplikacji kontenera OLE, która ma aktywowaną aplikację serwera OLE w miejscu.
Uwagi
Jeśli ten element członkowski danych ma wartość NULL, aplikacja nie jest aktywna.
Platforma ustawia tę zmienną składową, gdy okno ramki jest w miejscu aktywowane przez aplikację kontenera OLE.
CWinApp::m_pDataRecoveryHandler
Wskaźnik do programu obsługi odzyskiwania danych dla aplikacji.
CDataRecoveryHandler* m_pDataRecoveryHandler;
Uwagi
Procedura obsługi odzyskiwania danych aplikacji monitoruje otwarte dokumenty i automatycznie je przekazuje. Platforma używa programu obsługi odzyskiwania danych do przywracania automatycznie zapisanych plików, gdy aplikacja zostanie ponownie uruchomiona po nieoczekiwanym zakończeniu działania. Aby uzyskać więcej informacji, zobacz Klasa CDataRecoveryHandler.
CWinApp::m_pszAppName
Określa nazwę aplikacji.
LPCTSTR m_pszAppName;
Uwagi
Nazwa aplikacji może pochodzić z parametru przekazanego do konstruktora CWinApp lub, jeśli nie zostanie określona, do ciągu zasobu o identyfikatorze AFX_IDS_APP_TITLE. Jeśli nazwa aplikacji nie zostanie znaleziona w zasobie, pochodzi z pliku .EXE programu.
Zwracana przez funkcję globalną AfxGetAppName. m_pszAppName
jest zmienną publiczną typu const char*.
Uwaga
Jeśli przypiszesz wartość do m_pszAppName
metody , musi być ona dynamicznie przydzielana na stercie. Destruktor wywołuje metodę CWinApp
free( ) z tym wskaźnikiem. Wiele osób chce użyć _tcsdup
funkcji biblioteki czasu wykonywania ( ), aby wykonać przydzielanie. Ponadto zwolnij pamięć skojarzona z bieżącym wskaźnikiem przed przypisaniem nowej wartości. Na przykład:
//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszAppName);
//Change the name of the application file.
//The CWinApp destructor will free the memory.
m_pszAppName = _tcsdup(_T("c:\\somedir\\myapp.exe"));
Przykład
CWnd *pWnd = AfxGetMainWnd();
// Set pWnd to some CWnd object whose window has already
// been created.
// The following call to CWnd::MessageBox uses the application
// title as the message box caption.
pWnd->MessageBox(_T("Some message"), AfxGetApp()->m_pszAppName);
// A more direct way to get the application title is to
// call AfxGetAppName:
pWnd->MessageBox(_T("Some message"), AfxGetAppName());
// An easier way to display a message box using the application
// title as the message box caption is to call AfxMessageBox:
AfxMessageBox(_T("Some message"));
CWinApp::m_pszExeName
Zawiera nazwę pliku wykonywalnego aplikacji bez rozszerzenia.
LPCTSTR m_pszExeName;
Uwagi
W przeciwieństwie do m_pszAppName ta nazwa nie może zawierać wartości pustych. m_pszExeName
jest zmienną publiczną typu const char*.
Uwaga
Jeśli przypiszesz wartość do m_pszExeName
metody , musi być ona dynamicznie przydzielana na stercie. Destruktor wywołuje metodę CWinApp
free( ) z tym wskaźnikiem. Wiele osób chce użyć _tcsdup
funkcji biblioteki czasu wykonywania ( ), aby wykonać przydzielanie. Ponadto zwolnij pamięć skojarzona z bieżącym wskaźnikiem przed przypisaniem nowej wartości. Na przykład:
//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszExeName);
//Change the name of the .EXE file.
//The CWinApp destructor will free the memory.
m_pszExeName = _tcsdup(_T("c:\\somedir\\myapp"));
CWinApp::m_pszHelpFilePath
Zawiera ścieżkę do pliku Pomocy aplikacji.
LPCTSTR m_pszHelpFilePath;
Uwagi
Domyślnie struktura inicjuje m_pszHelpFilePath
nazwę aplikacji za pomocą polecenia ". Dołączono HLP. Aby zmienić nazwę pliku pomocy, ustaw wartość m_pszHelpFilePath
, aby wskazać ciąg zawierający pełną nazwę żądanego pliku pomocy. Wygodnym miejscem do wykonania jest funkcja InitInstance aplikacji. m_pszHelpFilePath
jest zmienną publiczną typu const char*.
Uwaga
Jeśli przypiszesz wartość do m_pszHelpFilePath
metody , musi być ona dynamicznie przydzielana na stercie. Destruktor wywołuje metodę CWinApp
free( ) z tym wskaźnikiem. Wiele osób chce użyć _tcsdup
funkcji biblioteki czasu wykonywania ( ), aby wykonać przydzielanie. Ponadto zwolnij pamięć skojarzona z bieżącym wskaźnikiem przed przypisaniem nowej wartości. Na przykład:
//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszHelpFilePath);
//Change the name of the .HLP file.
//The CWinApp destructor will free the memory.
m_pszHelpFilePath = _tcsdup(_T("c:\\somedir\\myhelp.hlp"));
CWinApp::m_pszProfileName
Zawiera nazwę aplikacji . Plik INI.
LPCTSTR m_pszProfileName;
Uwagi
m_pszProfileName
jest zmienną publiczną typu const char*.
Uwaga
Jeśli przypiszesz wartość do m_pszProfileName
metody , musi być ona dynamicznie przydzielana na stercie. Destruktor wywołuje metodę CWinApp
free( ) z tym wskaźnikiem. Wiele osób chce użyć _tcsdup
funkcji biblioteki czasu wykonywania ( ), aby wykonać przydzielanie. Ponadto zwolnij pamięć skojarzona z bieżącym wskaźnikiem przed przypisaniem nowej wartości. Na przykład:
//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszProfileName);
//Change the name of the .INI file.
//The CWinApp destructor will free the memory.
m_pszProfileName = _tcsdup(_T("c:\\somedir\\myini.ini"));
CWinApp::m_pszRegistryKey
Służy do określania miejsca przechowywania ustawień profilu aplikacji w rejestrze lub pliku INI.
LPCTSTR m_pszRegistryKey;
Uwagi
Zwykle ten element członkowski danych jest traktowany jako tylko do odczytu.
- Wartość jest przechowywana w kluczu rejestru. Nazwa ustawienia profilu aplikacji jest dołączana do następującego klucza rejestru: HKEY_CURRENT_USER/Software/LocalAppWizard-Generated/.
Jeśli przypiszesz wartość do m_pszRegistryKey
metody , musi być ona dynamicznie przydzielana na stercie. Destruktor wywołuje metodę CWinApp
free( ) z tym wskaźnikiem. Wiele osób chce użyć _tcsdup
funkcji biblioteki czasu wykonywania ( ), aby wykonać przydzielanie. Ponadto zwolnij pamięć skojarzona z bieżącym wskaźnikiem przed przypisaniem nowej wartości. Na przykład:
//First free the string allocated by MFC at CWinApp startup.
//The string is allocated before InitInstance is called.
free((void*)m_pszRegistryKey);
//Change the name of the registry key.
//The CWinApp destructor will free the memory.
m_pszRegistryKey = _tcsdup(
_T("HKEY_CURRENT_USER\\Software\\mycompany\\myapp\\thissection\\thisvalue"));
CWinApp::m_pszAppID
Identyfikator modelu użytkownika aplikacji.
LPCTSTR m_pszAppID;
Uwagi
CWinApp::OnContextHelp
Obsługuje pomoc SHIFT+F1 w aplikacji.
afx_msg void OnContextHelp();
Uwagi
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_CONTEXT_HELP, OnContextHelp )
do CWinApp
mapy komunikatów klasy, a także dodać wpis tabeli akceleratora, zazwyczaj SHIFT+F1.
OnContextHelp
umieszcza aplikację w trybie Pomocy. Kursor zmienia się na strzałkę i znak zapytania, a użytkownik może następnie przenieść wskaźnik myszy i nacisnąć lewy przycisk myszy, aby wybrać okno dialogowe, okno, menu lub przycisk polecenia. Ta funkcja składowa pobiera kontekst Pomocy obiektu pod kursorem i wywołuje funkcję Windows WinHelp z tym kontekstem Pomocy.
CWinApp::OnDDECommand
Wywoływana przez platformę, gdy główne okno ramki odbiera komunikat wykonywania DDE.
virtual BOOL OnDDECommand(LPTSTR lpszCommand);
Parametry
lpszCommand
Wskazuje ciąg polecenia DDE odebrany przez aplikację.
Wartość zwracana
Nonzero, jeśli polecenie jest obsługiwane; w przeciwnym razie 0.
Uwagi
Domyślna implementacja sprawdza, czy polecenie jest żądaniem otwarcia dokumentu, a jeśli tak, otwiera określony dokument. Menedżer plików systemu Windows zwykle wysyła takie ciągi poleceń DDE, gdy użytkownik kliknie dwukrotnie plik danych. Zastąpij tę funkcję, aby obsługiwać inne polecenia wykonywania DDE, takie jak polecenie do wydrukowania.
Przykład
BOOL CMyApp::OnDDECommand(LPTSTR lpszCommand)
{
if (CWinApp::OnDDECommand(lpszCommand))
return TRUE;
// Handle any DDE commands recognized by your application
// and return TRUE. See implementation of CWinApp::OnDDEComand
// for example of parsing the DDE command string.
// Return FALSE for any DDE commands you do not handle.
return FALSE;
}
CWinApp::OnFileNew
Implementuje polecenie ID_FILE_NEW.
afx_msg void OnFileNew();
Uwagi
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_FILE_NEW, OnFileNew )
do CWinApp
mapy komunikatów klasy. Jeśli ta funkcja jest włączona, obsługuje wykonywanie polecenia File New.
Aby uzyskać informacje na temat domyślnego zachowania i wskazówek dotyczących zastępowania tej funkcji składowej, zobacz Technical Note 22 (Uwaga techniczna 22 ).
Przykład
// The following message map, produced by the Application Wizard, binds
// the File New, Open, and Print Setup menu commands to default
// framework implementations of these commands.
BEGIN_MESSAGE_MAP(CStdApp, CWinApp)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
// The following message map illustrates how to rebind the
// File New, Open and Print Setup menu commands to handlers that
// you implement in your CWinApp-derived class.
// Note, you can name the handler CCustomApp::OnFileNew instead of
// CCustomApp::OnMyFileNew, and likewise for the other handlers, if desired.
BEGIN_MESSAGE_MAP(CCustomApp, CWinApp)
ON_COMMAND(ID_FILE_NEW, &CCustomApp::OnMyFileNew)
ON_COMMAND(ID_FILE_OPEN, &CCustomApp::OnMyFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP, &CCustomApp::OnMyFilePrintSetup)
END_MESSAGE_MAP()
CWinApp::OnFileOpen
Implementuje polecenie ID_FILE_OPEN.
afx_msg void OnFileOpen();
Uwagi
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_FILE_OPEN, OnFileOpen )
do CWinApp
mapy komunikatów klasy. Jeśli ta funkcja jest włączona, obsługuje wykonywanie polecenia Otwórz plik.
Aby uzyskać informacje na temat zachowania domyślnego i wskazówek dotyczących zastępowania tej funkcji składowej, zobacz Technical Note 22 (Uwaga techniczna 22).
Przykład
// The following message map, produced by the Application Wizard, binds
// the File New, Open, and Print Setup menu commands to default
// framework implementations of these commands.
BEGIN_MESSAGE_MAP(CStdApp, CWinApp)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
// The following message map illustrates how to rebind the
// File New, Open and Print Setup menu commands to handlers that
// you implement in your CWinApp-derived class.
// Note, you can name the handler CCustomApp::OnFileNew instead of
// CCustomApp::OnMyFileNew, and likewise for the other handlers, if desired.
BEGIN_MESSAGE_MAP(CCustomApp, CWinApp)
ON_COMMAND(ID_FILE_NEW, &CCustomApp::OnMyFileNew)
ON_COMMAND(ID_FILE_OPEN, &CCustomApp::OnMyFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP, &CCustomApp::OnMyFilePrintSetup)
END_MESSAGE_MAP()
CWinApp::OnFilePrintSetup
Implementuje polecenie ID_FILE_PRINT_SETUP.
afx_msg void OnFilePrintSetup();
Uwagi
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_FILE_PRINT_SETUP, OnFilePrintSetup )
do CWinApp
mapy komunikatów klasy. Jeśli ta funkcja jest włączona, obsługuje wykonywanie polecenia File Print.
Aby uzyskać informacje na temat zachowania domyślnego i wskazówek dotyczących zastępowania tej funkcji składowej, zobacz Technical Note 22 (Uwaga techniczna 22).
Przykład
// The following message map, produced by the Application Wizard, binds
// the File New, Open, and Print Setup menu commands to default
// framework implementations of these commands.
BEGIN_MESSAGE_MAP(CStdApp, CWinApp)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
// The following message map illustrates how to rebind the
// File New, Open and Print Setup menu commands to handlers that
// you implement in your CWinApp-derived class.
// Note, you can name the handler CCustomApp::OnFileNew instead of
// CCustomApp::OnMyFileNew, and likewise for the other handlers, if desired.
BEGIN_MESSAGE_MAP(CCustomApp, CWinApp)
ON_COMMAND(ID_FILE_NEW, &CCustomApp::OnMyFileNew)
ON_COMMAND(ID_FILE_OPEN, &CCustomApp::OnMyFileOpen)
ON_COMMAND(ID_FILE_PRINT_SETUP, &CCustomApp::OnMyFilePrintSetup)
END_MESSAGE_MAP()
CWinApp::OnHelp
Obsługuje pomoc F1 w aplikacji (przy użyciu bieżącego kontekstu).
afx_msg void OnHelp();
Uwagi
Zazwyczaj dodaje się również wpis skrótu F1. Włączenie klucza F1 jest tylko konwencją, a nie wymaganiem.
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_HELP, OnHelp )
do CWinApp
mapy komunikatów klasy. Jeśli to ustawienie jest włączone, wywoływane przez platformę, gdy użytkownik naciska F1.
Domyślna implementacja tej funkcji obsługi komunikatów określa kontekst Pomocy odpowiadający bieżącemu oknie, okno dialogowe lub element menu, a następnie wywołuje WINHELP.EXE. Jeśli kontekst nie jest obecnie dostępny, funkcja używa kontekstu domyślnego.
Zastąpi tę funkcję składową, aby ustawić kontekst Pomocy na inny niż okno, okno dialogowe, element menu lub przycisk paska narzędzi, który obecnie ma fokus. Wywołaj metodę WinHelp
za pomocą żądanego identyfikatora kontekstu Pomocy.
CWinApp::OnHelpFinder
Obsługuje polecenia ID_HELP_FINDER i ID_DEFAULT_HELP.
afx_msg void OnHelpFinder();
Uwagi
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_HELP_FINDER, OnHelpFinder )
do CWinApp
mapy komunikatów klasy. Jeśli ta funkcja jest włączona, platforma wywołuje tę funkcję obsługi komunikatów, gdy użytkownik aplikacji wybierze polecenie Help Finder do wywołania WinHelp
przy użyciu standardowego tematu HELP_FINDER .
CWinApp::OnHelpIndex
Obsługuje polecenie ID_HELP_INDEX i udostępnia domyślny temat Pomocy.
afx_msg void OnHelpIndex();
Uwagi
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_HELP_INDEX, OnHelpIndex )
do CWinApp
mapy komunikatów klasy. Jeśli ta funkcja jest włączona, platforma wywołuje tę funkcję obsługi komunikatów, gdy użytkownik aplikacji wybierze polecenie Indeks Pomocy, które ma być wywoływane WinHelp
przy użyciu standardowego tematu HELP_INDEX .
CWinApp::OnHelpUsing
Obsługuje polecenie ID_HELP_USING.
afx_msg void OnHelpUsing();
Uwagi
Aby włączyć tę funkcję składową, musisz dodać instrukcję ON_COMMAND( ID_HELP_USING, OnHelpUsing )
do CWinApp
mapy komunikatów klasy. Platforma wywołuje tę funkcję obsługi komunikatów, gdy użytkownik aplikacji wybierze polecenie Pomoc przy użyciu, aby wywołać aplikację WinHelp
przy użyciu standardowego tematu HELP_HELPONHELP .
CWinApp::OnIdle
Zastąpij tę funkcję składową, aby wykonywać przetwarzanie w czasie bezczynności.
virtual BOOL OnIdle(LONG lCount);
Parametry
lCount
Licznik zwiększa się za każdym razem OnIdle
, gdy kolejka komunikatów aplikacji jest pusta. Ta liczba jest resetowany do 0 za każdym razem, gdy jest przetwarzany nowy komunikat. Możesz użyć parametru lCount , aby określić względny czas bezczynności aplikacji bez przetwarzania komunikatu.
Wartość zwracana
Bezzerowe odbieranie większego czasu przetwarzania bezczynności; 0, jeśli nie jest potrzebny czas bezczynności.
Uwagi
OnIdle
jest wywoływana w domyślnej pętli komunikatów, gdy kolejka komunikatów aplikacji jest pusta. Użyj przesłonięcia, aby wywołać własne zadania obsługi bezczynności w tle.
OnIdle
Powinna zwrócić wartość 0, aby wskazać, że nie jest wymagany czas bezczynności przetwarzania. Parametr lCount jest zwiększany za każdym razem OnIdle
, gdy kolejka komunikatów jest pusta i resetuje do 0 przy każdym przetwarzaniu nowego komunikatu. Możesz wywołać różne procedury bezczynności na podstawie tej liczby.
Poniżej przedstawiono podsumowanie przetwarzania pętli bezczynności:
Jeśli pętla komunikatów w bibliotece klas programu Microsoft Foundation sprawdza kolejkę komunikatów i nie znajduje oczekujących komunikatów, wywołuje
OnIdle
obiekt aplikacji i dostarcza wartość 0 jako argument lCount .OnIdle
wykonuje pewne przetwarzanie i zwraca wartość niezerową, aby wskazać, że powinna zostać wywołana ponownie w celu dalszego przetwarzania.Pętla komunikatów ponownie sprawdza kolejkę komunikatów. Jeśli żadne komunikaty nie oczekują, wywołuje
OnIdle
ponownie, zwiększając argument lCount .OnIdle
W końcu kończy przetwarzanie wszystkich bezczynnych zadań i zwraca wartość 0. Informuje to pętlę komunikatów o zatrzymaniu wywoływaniaOnIdle
do momentu odebrania następnego komunikatu z kolejki komunikatów, w którym w momencie ponownego uruchomienia cyklu bezczynności z argumentem ustawionym na 0.
Nie wykonuj długich zadań, OnIdle
ponieważ aplikacja nie może przetworzyć danych wejściowych użytkownika do momentu OnIdle
powrotu.
Uwaga
Domyślna implementacja obiektów interfejsu OnIdle
użytkownika poleceń aktualizacji, takich jak elementy menu i przyciski paska narzędzi, i wykonuje wewnętrzne czyszczenie struktury danych. W związku z tym, jeśli zastąpisz metodę OnIdle
, musisz wywołać CWinApp::OnIdle
metodę z wartością lCount
w przesłoniętej wersji. Najpierw wywołaj wszystkie przetwarzanie bezczynności klasy bazowej (czyli do momentu, aż klasa OnIdle
bazowa zwróci wartość 0). Jeśli musisz wykonać pracę przed ukończeniem przetwarzania klasy bazowej, zapoznaj się z implementacją klasy bazowej, aby wybrać odpowiedni element lCount , podczas którego należy wykonać pracę.
Jeśli nie chcesz OnIdle
wywoływać za każdym razem, gdy komunikat zostanie pobrany z kolejki komunikatów, możesz zastąpić CWinThreadIsIdleMessage. Jeśli aplikacja ustawiła bardzo krótki czasomierz lub jeśli system wysyła komunikat WM_SYSTIMER, OnIdle
będzie wywoływany wielokrotnie i obniża wydajność.
Przykład
W poniższych dwóch przykładach pokazano, jak używać polecenia OnIdle
. Pierwszy przykład przetwarza dwa bezczynne zadania przy użyciu argumentu lCount , aby określić priorytety zadań. Pierwsze zadanie jest wysokim priorytetem i należy wykonać je zawsze, gdy jest to możliwe. Drugie zadanie jest mniej ważne i powinno być wykonywane tylko wtedy, gdy w danych wejściowych użytkownika występuje długa pauza. Zwróć uwagę na wywołanie do wersji klasy bazowej klasy OnIdle
. Drugi przykład zarządza grupą bezczynnych zadań z różnymi priorytetami.
BOOL CMyApp::OnIdle(LONG lCount)
{
BOOL bMore = CWinApp::OnIdle(lCount);
if (lCount == 0)
{
TRACE(_T("App idle for short period of time\n"));
bMore = TRUE;
}
else if (lCount == 10)
{
TRACE(_T("App idle for longer amount of time\n"));
bMore = TRUE;
}
else if (lCount == 100)
{
TRACE(_T("App idle for even longer amount of time\n"));
bMore = TRUE;
}
else if (lCount == 1000)
{
TRACE(_T("App idle for quite a long period of time\n"));
// bMore is not set to TRUE, no longer need idle
// IMPORTANT: bMore is not set to FALSE since CWinApp::OnIdle may
// have more idle tasks to complete.
}
return bMore;
// return TRUE as long as there are any more idle tasks
}
CWinApp::OpenDocumentFile
Struktura wywołuje tę metodę, aby otworzyć nazwany plik CDocument dla aplikacji.
virtual CDocument* OpenDocumentFile(
LPCTSTR lpszFileName
BOOL bAddToMRU = TRUE);
Parametry
lpszFileName
[in] Nazwa pliku do otwarcia.
bAddToMRU
[in] Wartość TRUE wskazuje, że dokument jest jednym z najnowszych plików; FAŁSZ wskazuje, że dokument nie jest jednym z najnowszych plików.
Wartość zwracana
Wskaźnik na wartość , jeśli się powiedzie CDocument
; w przeciwnym razie wartość NULL.
Uwagi
Jeśli dokument o tej nazwie jest już otwarty, pierwsze okno ramki zawierające ten dokument uzyska fokus. Jeśli aplikacja obsługuje wiele szablonów dokumentów, platforma używa rozszerzenia nazwy pliku, aby znaleźć odpowiedni szablon dokumentu, aby spróbować załadować dokument. Jeśli to się powiedzie, szablon dokumentu tworzy okno ramki i widok dla dokumentu.
Przykład
if (m_lpCmdLine[0] == _T('\0'))
{
// Create a new (empty) document.
OnFileNew();
}
else
{
// Open a file passed as the first command line parameter.
OpenDocumentFile(m_lpCmdLine);
}
CWinApp::P arseCommandLine
Wywołaj tę funkcję składową, aby przeanalizować wiersz polecenia i wysłać parametry pojedynczo do CCommandLineInfo::P arseParam.
void ParseCommandLine(CCommandLineInfo& rCmdInfo);
Parametry
rCmdInfo
Odwołanie do obiektu CCommandLineInfo .
Uwagi
Po uruchomieniu nowego projektu MFC przy użyciu Kreatora aplikacji Kreator aplikacji utworzy lokalne wystąpienie CCommandLineInfo
klasy , a następnie wywoła ProcessShellCommand
funkcję ParseCommandLine
i w funkcji składowej InitInstance . Wiersz polecenia jest zgodny z trasą opisaną poniżej:
Po utworzeniu
CCommandLineInfo
w obiekcieInitInstance
obiekt jest przekazywany doParseCommandLine
obiektu .ParseCommandLine
następnie wywołujeCCommandLineInfo::ParseParam
wielokrotnie raz dla każdego parametru.ParseParam
CCommandLineInfo
wypełnia obiekt , który następnie jest przekazywany do polecenia ProcessShellCommand.ProcessShellCommand
obsługuje argumenty wiersza polecenia i flagi.
Należy pamiętać, że możesz wywołać ParseCommandLine
połączenie bezpośrednio w razie potrzeby.
Aby uzyskać opis flag wiersza polecenia, zobacz CCommandLineInfo::m_nShellCommand.
CWinApp::P reTranslateMessage
Zastąpij tę funkcję, aby filtrować komunikaty okien przed ich wysłaniem do funkcji Systemu Windows TranslateMessage i DispatchMessage Domyślna implementacja wykonuje translacja akceleratora, więc należy wywołać CWinApp::PreTranslateMessage
funkcję składową w przesłoniętej wersji.
virtual BOOL PreTranslateMessage(MSG* pMsg);
Parametry
PMsg
Wskaźnik do struktury MSG , która zawiera komunikat do przetworzenia.
Wartość zwracana
Nonzero, jeśli komunikat został w pełni przetworzony i PreTranslateMessage
nie powinien być przetwarzany dalej. Zero, jeśli komunikat powinien być przetwarzany w normalny sposób.
CWinApp::P rocessMessageFilter
Funkcja hook platformy wywołuje tę funkcję składową, aby filtrować i reagować na niektóre komunikaty systemu Windows.
virtual BOOL ProcessMessageFilter(
int code,
LPMSG lpMsg);
Parametry
kod
Określa kod zaczepienia. Ta funkcja składowa używa kodu do określenia sposobu przetwarzania lpMsg.
lpMsg
Wskaźnik do obcinania msgsystemu Windows.
Wartość zwracana
Niezero, jeśli komunikat jest przetwarzany; w przeciwnym razie 0.
Uwagi
Funkcja zaczepienia przetwarza zdarzenia przed wysłaniem ich do normalnego przetwarzania komunikatów aplikacji.
Jeśli zastąpisz tę zaawansowaną funkcję, pamiętaj, aby wywołać wersję klasy bazowej w celu zachowania przetwarzania zaczepienia platformy.
CWinApp::P rocessShellCommand
Ta funkcja składowa jest wywoływana przez initInstance , aby zaakceptować parametry przekazywane z CCommandLineInfo
obiektu zidentyfikowanego przez rCmdInfo i wykonać wskazaną akcję.
BOOL ProcessShellCommand(CCommandLineInfo& rCmdInfo);
Parametry
rCmdInfo
Odwołanie do obiektu CCommandLineInfo .
Wartość zwracana
Nonzero, jeśli polecenie powłoki jest przetwarzane pomyślnie. Jeśli wartość 0, zwróć wartość FALSE z klasy InitInstance.
Uwagi
Po uruchomieniu nowego projektu MFC przy użyciu Kreatora aplikacji Kreator aplikacji utworzy lokalne wystąpienie CCommandLineInfo
, a następnie wywoła ProcessShellCommand
polecenie i ParseCommandLine w funkcji składowej InitInstance
. Wiersz polecenia jest zgodny z trasą opisaną poniżej:
Po utworzeniu
CCommandLineInfo
w obiekcieInitInstance
obiekt jest przekazywany doParseCommandLine
obiektu .ParseCommandLine
następnie wywołuje polecenie CCommandLineInfo::P arseParam wielokrotnie, raz dla każdego parametru.ParseParam
CCommandLineInfo
wypełnia obiekt , który następnie jest przekazywany doProcessShellCommand
elementu .ProcessShellCommand
obsługuje argumenty wiersza polecenia i flagi.
Składowe CCommandLineInfo
danych obiektu, zidentyfikowane przez CCommandLineInfo::m_nShellCommand, mają następujący typ wyliczany, który jest zdefiniowany w CCommandLineInfo
klasie.
enum {
FileNew,
FileOpen,
FilePrint,
FilePrintTo,
FileDDE
};
Aby uzyskać krótki opis każdej z tych wartości, zobacz CCommandLineInfo::m_nShellCommand
.
CWinApp::P rocessWndProcException
Struktura wywołuje tę funkcję składową za każdym razem, gdy program obsługi nie przechwyci wyjątku zgłaszanego w jednym z programów obsługi komunikatów lub poleceń aplikacji.
virtual LRESULT ProcessWndProcException(
CException* e,
const MSG* pMsg);
Parametry
e
Wskaźnik do nieuchwyconego wyjątku.
PMsg
Tructure MSG, który zawiera informacje o komunikacie systemu Windows, który spowodował zgłoszenie wyjątku przez strukturę.
Wartość zwracana
Wartość, która powinna zostać zwrócona do systemu Windows. Zwykle jest to 0L dla komunikatów systemu Windows, 1L ( TRUE) dla komunikatów poleceń.
Uwagi
Nie należy bezpośrednio wywoływać tej funkcji składowej.
Domyślna implementacja tej funkcji składowej powoduje utworzenie pola komunikatu. Jeśli nieuchwycony wyjątek pochodzi z menu, paska narzędzi lub błędu polecenia akceleratora, w polu komunikatu zostanie wyświetlony komunikat "Polecenie nie powiodło się"; w przeciwnym razie wyświetla komunikat "Wewnętrzny błąd aplikacji".
Zastąpi tę funkcję składową, aby zapewnić globalną obsługę wyjątków. Wywołaj funkcję podstawową tylko wtedy, gdy chcesz, aby okno komunikatu było wyświetlane.
CWinApp::Register
Wykonuje wszystkie zadania rejestracji, które nie są obsługiwane przez RegisterShellFileTypes
program .
virtual BOOL Register();
Wartość zwracana
Nonzero na sukces; w przeciwnym razie 0.
Uwagi
Domyślna implementacja po prostu zwraca wartość TRUE. Zastąpij tę funkcję, aby udostępnić wszelkie dostosowane kroki rejestracji.
CWinApp::RegisterShellFileTypes
Wywołaj tę funkcję składową, aby zarejestrować wszystkie typy dokumentów aplikacji w Menedżerze plików systemu Windows.
void RegisterShellFileTypes(BOOL bCompat = FALSE);
Parametry
bCompat
[in] Wartość TRUE dodaje wpisy rejestracji dla poleceń powłoki Print and Print To, umożliwiając użytkownikowi drukowanie plików bezpośrednio z powłoki lub przeciągając plik do obiektu drukarki. Dodaje również klucz DefaultIcon. Domyślnie ten parametr ma wartość FALSE w celu zapewnienia zgodności z poprzednimi wersjami.
Uwagi
Dzięki temu użytkownik może otworzyć plik danych utworzony przez aplikację, klikając go dwukrotnie w Menedżerze plików. Wywołaj metodę RegisterShellFileTypes
po wywołaniu metody AddDocTemplate dla każdego szablonu dokumentów w aplikacji. Wywołaj również funkcję EnableShellOpen member podczas wywoływania elementu RegisterShellFileTypes
.
RegisterShellFileTypes
iteruje za pomocą listy obiektów CDocTemplate , które aplikacja obsługuje, i, dla każdego szablonu dokumentu, dodaje wpisy do bazy danych rejestracji, którą system Windows obsługuje dla skojarzeń plików. Menedżer plików używa tych wpisów, aby otworzyć plik danych, gdy użytkownik kliknie go dwukrotnie. Eliminuje to konieczność wysłania . Plik REG z aplikacją.
Uwaga
RegisterShellFileTypes
Działa tylko wtedy, gdy użytkownik uruchamia program z uprawnieniami administratora. Jeśli program nie ma uprawnień administratora, nie może zmienić kluczy rejestru.
Jeśli baza danych rejestracji skojarzy już rozszerzenie nazwy pliku z innym typem pliku, nie zostanie utworzone żadne nowe skojarzenie. Zobacz klasę CDocTemplate
, aby uzyskać format ciągów niezbędnych do zarejestrowania tych informacji.
CWinApp::RegisterWithRestartManager
Rejestruje aplikację za pomocą menedżera ponownego uruchamiania.
virtual HRESULT RegisterWithRestartManager(
BOOL bRegisterRecoveryCallback,
const CString& strRestartIdentifier);
virtual HRESULT RegisterWithRestartManager(
LPCWSTR pwzCommandLineArgs,
DWORD dwRestartFlags,
APPLICATION_RECOVERY_CALLBACK pRecoveryCallback,
LPVOID lpvParam,
DWORD dwPingInterval,
DWORD dwCallbackFlags);
Parametry
bRegisterRecoveryCallback
[in] Wartość TRUE wskazuje, że to wystąpienie aplikacji używa funkcji wywołania zwrotnego odzyskiwania; FAŁSZ wskazuje, że nie. Platforma wywołuje funkcję wywołania zwrotnego odzyskiwania, gdy aplikacja nieoczekiwanie kończy działanie. Aby uzyskać więcej informacji, zobacz CWinApp::ApplicationRecoveryCallback.
strRestartIdentifier
[in] Unikatowy ciąg identyfikujący to wystąpienie menedżera ponownego uruchamiania. Identyfikator menedżera ponownego uruchamiania jest unikatowy dla każdego wystąpienia aplikacji.
pwzCommandLineArgs
[in] Ciąg zawierający wszelkie dodatkowe argumenty z wiersza polecenia.
dwRestartFlags
[in] Opcjonalne flagi menedżera ponownego uruchamiania. Aby uzyskać więcej informacji, zobacz sekcję: Uwagi.
pRecoveryCallback
[in] Funkcja wywołania zwrotnego odzyskiwania. Ta funkcja musi przyjmować parametr LPVOID jako dane wejściowe i zwracać DWORD. Domyślna funkcja wywołania zwrotnego odzyskiwania to CWinApp::ApplicationRecoveryCallback
.
lpvParam
[in] Parametr wejściowy funkcji wywołania zwrotnego odzyskiwania. Aby uzyskać więcej informacji, zobacz CWinApp::ApplicationRecoveryCallback.
dwPingInterval
[in] Czas oczekiwania menedżera ponownego uruchamiania na powrót funkcji wywołania zwrotnego odzyskiwania. Ten parametr jest wyrażony w milisekundach.
dwCallbackFlags
[in] Flagi przekazywane do funkcji wywołania zwrotnego odzyskiwania. Zarezerwowane do użytku w przyszłości.
Wartość zwracana
S_OK, jeśli metoda zakończy się pomyślnie; w przeciwnym razie kod błędu.
Uwagi
Jeśli aplikacja używa domyślnej implementacji MFC na potrzeby automatycznego zapisania plików, należy użyć prostej wersji programu RegisterWithRestartManager
. Użyj złożonej wersji programu RegisterWithRestartManager
, jeśli chcesz dostosować zachowanie autozapisu aplikacji.
Jeśli wywołasz tę metodę z pustym ciągiem dla parametru strRestartIdentifier, RegisterWithRestartManager
utworzy unikatowy ciąg identyfikatora dla tego wystąpienia menedżera ponownego uruchamiania.
Gdy aplikacja zostanie nieoczekiwanie zakończona, menedżer ponownego uruchomienia ponownie uruchomi aplikację z wiersza polecenia i udostępni unikatowy identyfikator ponownego uruchomienia jako opcjonalny argument. W tym scenariuszu struktura wywołuje RegisterWithRestartManager
dwa razy. Pierwsze wywołanie pochodzi z klasy CWinApp::InitInstance z pustym ciągiem identyfikatora ciągu. Następnie metoda CWinApp::P rocessShellCommand wywołuje RegisterWithRestartManager
unikatowy identyfikator ponownego uruchomienia.
Po zarejestrowaniu aplikacji za pomocą menedżera ponownego uruchamiania menedżer ponownego uruchamiania monitoruje aplikację. Jeśli aplikacja nieoczekiwanie zakończy działanie, menedżer ponownego uruchamiania wywołuje funkcję wywołania zwrotnego odzyskiwania podczas procesu zamykania. Menedżer ponownego uruchamiania czeka dwPingInterval na odpowiedź z funkcji wywołania zwrotnego odzyskiwania. Jeśli funkcja wywołania zwrotnego odzyskiwania nie odpowiada w tym czasie, aplikacja kończy działanie bez wykonywania funkcji wywołania zwrotnego odzyskiwania.
Domyślnie pliki dwRestartFlags nie są obsługiwane, ale są udostępniane do użytku w przyszłości. Możliwe wartości dwRestartFlags są następujące:
RESTART_NO_CRASH
RESTART_NO_HANG
RESTART_NO_PATCH
RESTART_NO_REBOOT
CWinApp::ReopenPreviousFilesAtRestart
Określa, czy menedżer ponownego uruchamiania ponownie otwiera pliki, które były otwierane, gdy aplikacja zakończyła się nieoczekiwanie.
virtual BOOL ReopenPreviousFilesAtRestart() const;
Wartość zwracana
Wartość TRUE wskazuje, że menedżer ponownego uruchamiania ponownie otwiera wcześniej otwarte pliki; FAŁSZ wskazuje, że menedżer ponownego uruchamiania nie.
CWinApp::RestartInstance
Obsługuje ponowne uruchomienie aplikacji zainicjowane przez menedżera ponownego uruchamiania.
virtual BOOL CWinApp::RestartInstance();
Wartość zwracana
WARTOŚĆ TRUE, jeśli program obsługi odzyskiwania danych otwiera wcześniej otwarte dokumenty; FAŁSZ, jeśli program obsługi odzyskiwania danych zawiera błąd lub jeśli nie ma wcześniej otwartych dokumentów.
Uwagi
Gdy menedżer ponownego uruchamiania ponownie uruchomi aplikację, platforma wywołuje tę metodę. Ta metoda pobiera program obsługi odzyskiwania danych i przywraca automatycznie zapisanych plików. Ta metoda wywołuje metodę CDataRecoveryHandler::RestoreAutosavedDocuments , aby określić, czy użytkownik chce przywrócić automatycznie zapisanych plików.
Ta metoda zwraca wartość FALSE, jeśli program CDataRecoveryHandler określa, że nie było otwartych dokumentów. Jeśli nie było otwartych dokumentów, aplikacja jest uruchamiana zwykle.
CWinApp::RestoreAutosavedFilesAtRestart
Określa, czy menedżer ponownego uruchamiania przywraca automatycznie zapisane pliki po ponownym uruchomieniu aplikacji.
virtual BOOL RestoreAutosavedFilesAtRestart() const;
Wartość zwracana
Wartość TRUE wskazuje, że menedżer ponownego uruchamiania przywraca automatycznie zapisanych plików; FAŁSZ wskazuje, że menedżer ponownego uruchamiania nie.
CWinApp::Run
Udostępnia domyślną pętlę komunikatów.
virtual int Run();
Wartość zwracana
int
Wartość zwracana przez WinMain
element .
Uwagi
Run
pobiera i wysyła komunikaty systemu Windows, dopóki aplikacja nie otrzyma komunikatu WM_QUIT. Jeśli kolejka komunikatów aplikacji nie zawiera obecnie żadnych komunikatów, wywołuje metodę OnIdle, Run
aby wykonać przetwarzanie w czasie bezczynności. Komunikaty przychodzące przechodzą do funkcji składowej PreTranslateMessage w celu specjalnego przetwarzania, a następnie do funkcji TranslateMessage
systemu Windows w celu standardowego tłumaczenia klawiatury. Na DispatchMessage
koniec wywoływana jest funkcja systemu Windows.
Run
jest rzadko zastępowana, ale można ją zastąpić, aby zapewnić specjalne zachowanie.
CWinApp::RunAutomated
Wywołaj tę funkcję, aby określić, czy jest obecna opcja " /Automation" lub " -Automation", która wskazuje, czy aplikacja serwera została uruchomiona przez aplikację kliencką.
BOOL RunAutomated();
Wartość zwracana
Niezero, jeśli opcja została znaleziona; w przeciwnym razie 0.
Uwagi
Jeśli istnieje, opcja zostanie usunięta z wiersza polecenia. Aby uzyskać więcej informacji na temat automatyzacji OLE, zobacz artykuł Serwery automatyzacji.
CWinApp::RunEmbedded
Wywołaj tę funkcję, aby określić, czy opcja " /Embedding" lub " -Embedding" jest obecna, co wskazuje, czy aplikacja serwera została uruchomiona przez aplikację kliencką.
BOOL RunEmbedded();
Wartość zwracana
Niezero, jeśli opcja została znaleziona; w przeciwnym razie 0.
Uwagi
Jeśli istnieje, opcja zostanie usunięta z wiersza polecenia. Aby uzyskać więcej informacji na temat osadzania, zobacz artykuł Serwery: implementowanie serwera.
CWinApp::SaveAllModified
Wywoływana przez platformę, aby zapisać wszystkie dokumenty, gdy główne okno ramki aplikacji ma zostać zamknięte lub za pośrednictwem komunikatu WM_QUERYENDSESSION.
virtual BOOL SaveAllModified();
Wartość zwracana
Nonzero, jeśli bezpieczne, aby zakończyć aplikację; 0, jeśli nie jest bezpieczne, aby zakończyć działanie aplikacji.
Uwagi
Domyślna implementacja tej funkcji składowej wywołuje funkcję składową CDocument::SaveModified dla wszystkich zmodyfikowanych dokumentów w aplikacji.
CWinApp::SelectPrinter
Wywołaj tę funkcję składową, aby wybrać określoną drukarkę i zwolnić drukarkę, która została wcześniej wybrana w oknie dialogowym Drukowanie.
void SelectPrinter(
HANDLE hDevNames,
HANDLE hDevMode,
BOOL bFreeOld = TRUE);
Parametry
hDevNames
Uchwyt do obcinania DEVNAMES, który identyfikuje sterowniki, urządzenie i nazwy portów wyjściowych określonej drukarki.
hDevMode
Uchwyt do struktury DEVMODE , która określa informacje o inicjowaniu urządzenia i środowisku drukarki.
bFreeOld
Zwalnia wcześniej wybraną drukarkę.
Uwagi
Jeśli zarówno hDevMode, jak i hDevNames mają wartość NULL, SelectPrinter
użyj bieżącej drukarki domyślnej.
CWinApp::SetHelpMode
Ustawia typ pomocy aplikacji.
void SetHelpMode(AFX_HELP_TYPE eHelpType);
Parametry
eHelpType
Określa typ pomocy do użycia. Aby uzyskać więcej informacji, zobacz CWinApp::m_eHelpType .
Uwagi
Ustawia typ Pomocy aplikacji.
Aby ustawić typ Pomocy aplikacji na HTMLHelp, możesz wywołać metodę EnableHTMLHelp. Po wywołaniu EnableHTMLHelp
metody aplikacja musi używać metody HTMLHelp jako aplikacji pomocy. Jeśli chcesz zmienić użycie narzędzia WinHelp, możesz wywołać SetHelpMode
i ustawić wartość eHelpType na afxWinHelp
.
CWinApp::SetRegistryKey
Powoduje przechowywanie ustawień aplikacji w rejestrze zamiast plików INI.
void SetRegistryKey(LPCTSTR lpszRegistryKey);
void SetRegistryKey(UINT nIDRegistryKey);
Parametry
lpszRegistryKey
Wskaźnik do ciągu zawierającego nazwę klucza.
nIDRegistryKey
Identyfikator zasobu ciągu zawierającego nazwę klucza rejestru.
Uwagi
Ta funkcja ustawia m_pszRegistryKey, która jest następnie używana przez GetProfileInt
funkcje CWinApp
składowe , GetProfileString
, WriteProfileInt
i WriteProfileString
. Jeśli ta funkcja została wywołana, lista ostatnio używanych plików (MRU) jest również przechowywana w rejestrze. Klucz rejestru jest zwykle nazwą firmy. Jest on przechowywany w kluczu następującej formy: HKEY_CURRENT_USER\Software\<company name\<application name>>\section name\value name>>\<<value.
CWinApp::SupportsApplicationRecovery
Określa, czy menedżer ponownego uruchamiania odzyskuje nieoczekiwanie aplikację, która zakończyła działanie.
virtual BOOL SupportsApplicationRecovery() const;
Wartość zwracana
Wartość TRUE wskazuje, że menedżer ponownego uruchamiania odzyskuje aplikację; FAŁSZ wskazuje, że menedżer ponownego uruchamiania nie.
CWinApp::SupportsAutosaveAtInterval
Określa, czy menedżer ponownego uruchamiania automatycznie otwiera dokumenty w regularnych odstępach czasu.
virtual BOOL SupportsAutosaveAtInterval() const;
Wartość zwracana
Wartość TRUE wskazuje, że menedżer ponownego uruchamiania automatycznie otwiera dokumenty; FAŁSZ wskazuje, że menedżer ponownego uruchamiania nie.
CWinApp::SupportsAutosaveAtRestart
Określa, czy menedżer ponownego uruchamiania automatycznie zapisuje otwarte dokumenty po ponownym uruchomieniu aplikacji.
virtual BOOL SupportsAutosaveAtRestart() const;
Wartość zwracana
Wartość TRUE wskazuje, że menedżer ponownego uruchamiania automatycznie otwiera dokumenty po ponownym uruchomieniu aplikacji; FAŁSZ wskazuje, że menedżer ponownego uruchamiania nie.
CWinApp::SupportsRestartManager
Określa, czy aplikacja obsługuje menedżera ponownego uruchamiania.
virtual BOOL SupportsRestartManager() const;
Wartość zwracana
Wartość TRUE wskazuje, że aplikacja obsługuje menedżera ponownego uruchamiania; FAŁSZ wskazuje, że aplikacja nie.
CWinApp::Wyrejestrowywanie
Wyrejestrowuje wszystkie pliki zarejestrowane przez obiekt aplikacji.
virtual BOOL Unregister();
Wartość zwracana
Nonzero na sukces; w przeciwnym razie 0.
Uwagi
Funkcja Unregister
cofa rejestrację wykonywaną przez obiekt aplikacji i funkcję Register . Zwykle obie funkcje są wywoływane niejawnie przez MFC i dlatego nie będą wyświetlane w kodzie.
Zastąpij tę funkcję, aby wykonać niestandardowe kroki wyrejestrowania.
CWinApp::UnregisterShellFileTypes
Wywołaj tę funkcję składową, aby wyrejestrować wszystkie typy dokumentów aplikacji za pomocą Menedżera plików systemu Windows.
void UnregisterShellFileTypes();
CWinApp::WinHelp
Wywołaj tę funkcję składową, aby wywołać aplikację WinHelp.
virtual void WinHelp(
DWORD_PTR dwData,
UINT nCmd = HELP_CONTEXT);
Parametry
dwData
Określa dodatkowe dane. Użyta wartość zależy od wartości parametru nCmd .
nCmd
Określa typ żądanej pomocy. Aby uzyskać listę możliwych wartości i ich wpływ na parametr dwData , zobacz funkcję WinHelp systemu Windows.
Uwagi
Platforma wywołuje również tę funkcję, aby wywołać aplikację WinHelp.
Platforma automatycznie zamknie aplikację WinHelp po zakończeniu działania aplikacji.
Przykład
// Header File: HELPIDS.H
//
// This example header file is #include'd twice:
// (1) It is #include'd by the .CPP file that passes the DWORD
// context i.d. to CWinApp::WinHelp.
// (2) It is #include'd in the [MAP] section of the .HPJ file,
// to associate the help context string "HID_MYTOPIC" with
// the help context numeric i.d., 101.
// The help context string "HID_MYTOPIC" is what identifies the
// help topic in the help .RTF source file, in the "#" footnote:
// # HID_MYTOPIC
//
// Note, it is not necessary to manage help context id's this way
// for help topics associated with command id's and user interface
// id's defined in your RESOURCE.H file; you should use the MAKEHM
// tool via the custom build rule on your resource.h file to produce
// a help map (.HM) file for these id's. It is necessary to manage
// help context id's as illustrated here only for help topics not
// associated with command id's or user interface id's.
#define HID_MYTOPIC 101
// Show the custom help topic that has the context string
// "HID_MYTOPIC" in the help .RTF file, and which is mapped
// to the DWORD i.d. HID_MYTOPIC in the above HELPIDS.H file.
AfxGetApp()->WinHelp(HID_MYTOPIC);
// The following is one line of code in the help map (.HM)
// file produced by the MAKEHM tool, which is called by the custom
// build rule on the resource.h file. The MAKEHM tool reads the
// following #define in the application's RESOURCE.H file:
#define ID_MYCOMMAND 0x08004
// and adds a help id offset value of 0x10000 to create the
// help context DWORD value 0x18004:
// HID_MYCOMMAND 0x18004
// See MFC Tech Note 28 for more information on help id offset values.
// Rarely will you need to directly call WinHelp yourself
// with the help context i.d. for a command or user interface
// object. The framework will call WinHelp automatically when
// the user, for example, hits F1 when the focus is on a
// My Command menu item. However, if you do want to directly
// call WinHelp for the help topic associated with the command,
// here is how you would do it:
AfxGetApp()->WinHelp(0x10000 + ID_MYCOMMAND);
CWinApp::WriteProfileBinary
Wywołaj tę funkcję składową, aby zapisać dane binarne w określonej sekcji rejestru aplikacji lub . Plik INI.
BOOL WriteProfileBinary(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
LPBYTE pData,
UINT nBytes);
Parametry
lpszSection
Wskazuje ciąg o wartości null, który określa sekcję zawierającą wpis. Jeśli sekcja nie istnieje, zostanie utworzona. Nazwa sekcji jest niezależna od wielkości liter; ciąg może być dowolną kombinacją wielkich i małych liter.
lpszEntry
Wskazuje ciąg o wartości null, który zawiera wpis, do którego ma zostać zapisana wartość. Jeśli wpis nie istnieje w określonej sekcji, zostanie utworzony.
pData
Wskazuje dane do zapisania.
nBajty
Zawiera liczbę bajtów do zapisania.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Przykład
W tym przykładzie użyto CWinApp* pApp = AfxGetApp();
metody uzyskiwania w klasie CWinApp ilustrujących sposób WriteProfileBinary
i GetProfileBinary
można jej użyć z dowolnej funkcji w aplikacji MFC.
CWinApp *pApp = AfxGetApp();
CString strSection = _T("My Section");
CString strItem = _T("My Binary Item");
double myData = 123.456e12;
pApp->WriteProfileBinary(strSection, strItem, (LPBYTE)&myData, sizeof(myData));
double *pData;
UINT n;
pApp->GetProfileBinary(strSection, strItem, (LPBYTE*)&pData, &n);
ASSERT(n == sizeof(myData));
ASSERT(myData = *pData);
delete[] pData; // free the buffer
Inny przykład można znaleźć w przykładzie CWinApp::GetProfileBinary.
CWinApp::WriteProfileInt
Wywołaj tę funkcję składową, aby zapisać określoną wartość w określonej sekcji rejestru aplikacji lub . Plik INI.
BOOL WriteProfileInt(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
int nValue);
Parametry
lpszSection
Wskazuje ciąg o wartości null, który określa sekcję zawierającą wpis. Jeśli sekcja nie istnieje, zostanie utworzona. Nazwa sekcji jest niezależna od wielkości liter; ciąg może być dowolną kombinacją wielkich i małych liter.
lpszEntry
Wskazuje ciąg o wartości null, który zawiera wpis, do którego ma zostać zapisana wartość. Jeśli wpis nie istnieje w określonej sekcji, zostanie utworzony.
nValue
Zawiera wartość do zapisania.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Przykład
W tym przykładzie użyto CWinApp* pApp = AfxGetApp();
metody uzyskiwania w klasie CWinApp ilustrujących sposób, który GetProfileString
WriteProfileString
WriteProfileInt
, , i GetProfileInt
może być używany z dowolnej funkcji w aplikacji MFC.
CWinApp *pApp = AfxGetApp();
CString strSection = _T("My Section");
CString strStringItem = _T("My String Item");
CString strIntItem = _T("My Int Item");
pApp->WriteProfileString(strSection, strStringItem, _T("test"));
CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == _T("test"));
pApp->WriteProfileInt(strSection, strIntItem, 1234);
int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);
W innym przykładzie zobacz przykład CWinApp::GetProfileInt.
CWinApp::WriteProfileString
Wywołaj tę funkcję składową, aby zapisać określony ciąg w określonej sekcji rejestru aplikacji lub . Plik INI.
BOOL WriteProfileString(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
LPCTSTR lpszValue);
Parametry
lpszSection
Wskazuje ciąg o wartości null, który określa sekcję zawierającą wpis. Jeśli sekcja nie istnieje, zostanie utworzona. Nazwa sekcji jest niezależna od wielkości liter; ciąg może być dowolną kombinacją wielkich i małych liter.
lpszEntry
Wskazuje ciąg o wartości null, który zawiera wpis, do którego ma zostać zapisana wartość. Jeśli wpis nie istnieje w określonej sekcji, zostanie utworzony. Jeśli ten parametr ma wartość NULL, sekcja określona przez polecenie lpszSection zostanie usunięta.
lpszValue
Wskazuje ciąg do zapisania. Jeśli ten parametr ma wartość NULL, wpis określony przez parametr lpszEntry zostanie usunięty.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Przykład
CWinApp *pApp = AfxGetApp();
CString strSection = _T("My Section");
CString strStringItem = _T("My String Item");
CString strIntItem = _T("My Int Item");
pApp->WriteProfileString(strSection, strStringItem, _T("test"));
CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == _T("test"));
pApp->WriteProfileInt(strSection, strIntItem, 1234);
int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);
W innym przykładzie zobacz przykład CWinApp::GetProfileInt.
CWinApp::SetAppID
Jawnie ustawia identyfikator modelu użytkownika aplikacji dla aplikacji. Ta metoda powinna być wywoływana przed przedstawieniem użytkownikowi dowolnego interfejsu użytkownika (najlepszym miejscem jest konstruktor aplikacji).
void SetAppID(LPCTSTR lpcszAppID);
Parametry
lpcszAppID
Określa identyfikator modelu użytkownika aplikacji.
Uwagi
Zobacz też
Klasa CWinThread
Wykres hierarchii
Instrukcje: dodawanie obsługi menedżera ponownego uruchamiania
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla