Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Oprócz uruchamiania pętli komunikatów i dawania możliwości zainicjowania aplikacji oraz wyczyszczenia jej po zakończeniu, CWinApp udostępnia kilka innych usług.
Rejestracja powłoki systemowej
Domyślnie Kreator aplikacji MFC umożliwia użytkownikowi otwieranie plików danych utworzonych przez aplikację przez dwukrotne kliknięcie ich w Eksploratorze plików lub Menedżerze plików. Jeśli aplikacja jest aplikacją MDI i określasz rozszerzenie dla plików tworzonych przez aplikację, Kreator aplikacji MFC dodaje wywołania do funkcji składowych RegisterShellFileTypes i EnableShellOpen w klasie CWinApp do przesłonięcia, które zapisuje dla Ciebie.
RegisterShellFileTypes
rejestruje typy dokumentów aplikacji w Eksploratorze plików lub Menedżerze plików. Funkcja dodaje wpisy do bazy danych rejestracji obsługiwanej przez system Windows. Wpisy rejestrują każdy typ dokumentu, przyporządkowują rozszerzenie pliku do typu pliku, określają wiersz poleceń do otwarcia aplikacji oraz podają polecenie wymiany danych dynamicznych (DDE) do otwarcia dokumentu tego typu.
EnableShellOpen
wykonuje proces, umożliwiając aplikacji odbieranie poleceń DDE z Eksploratora plików lub Menedżera plików w celu otwarcia pliku wybranego przez użytkownika.
Ta automatyczna obsługa rejestracji eliminuje CWinApp
konieczność wysyłania pliku .reg z aplikacją lub przeprowadzania specjalnej instalacji.
Jeśli chcesz zainicjować interfejs GDI+ dla aplikacji (wywołując element GdiplusStartup w funkcji InitInstance), musisz wyłączyć wątek działający w tle GDI+.
Można to zrobić, ustawiając SuppressBackgroundThread
element członkowski struktury GdiplusStartupInput na true. Podczas wyłączania tła wątku GDI+, wywołania NotificationHook
i NotificationUnhook
powinny być wykonywane tuż przed wejściem do oraz opuszczeniem pętli komunikatów aplikacji. Aby uzyskać więcej informacji na temat tych wywołań, zobacz GdiplusStartupOutput. W związku z tym dobrym miejscem do wywołania GdiplusStartup
i funkcji powiadomień haka byłoby zastąpienie funkcji wirtualnej CWinApp::Run, jak pokazano poniżej:
int CMyWinApp::Run()
{
GdiplusStartupInput gdiSI;
GdiplusStartupOutput gdiSO;
ULONG_PTR gdiToken;
ULONG_PTR gdiHookToken;
gdiSI.SuppressBackgroundThread = TRUE;
GdiplusStartup(&gdiToken, &gdiSI, &gdiSO);
gdiSO.NotificationHook(&gdiHookToken);
int nRet = CWinApp::Run();
gdiSO.NotificationUnhook(gdiHookToken);
GdiplusShutdown(gdiToken);
return nRet;
}
Jeśli nie powstrzymasz wątku GDI+ w tle, polecenia DDE mogą zostać przedwcześnie wydane do aplikacji przed utworzeniem jej głównego okna. Polecenia DDE wydane przez powłokę mogą zostać przedwcześnie przerwane, co powoduje wyświetlenie komunikatów o błędach.
Przeciąganie i upuszczanie Menedżera plików
Pliki można przeciągać z okna widoku plików w Menedżerze plików lub Eksploratorze plików do okna w aplikacji. Możesz na przykład włączyć przeciągnięcie co najmniej jednego pliku do głównego okna aplikacji MDI, w którym aplikacja może pobrać nazwy plików i otworzyć okna podrzędne MDI dla tych plików.
Aby włączyć przeciąganie i upuszczanie pliku w aplikacji, Kreator aplikacji MFC zapisuje wywołanie funkcji składowej CWndDragAcceptFiles dla głównego okna ramki w pliku InitInstance
. Możesz usunąć to wywołanie, jeśli nie chcesz implementować funkcji przeciągania i upuszczania.
Uwaga / Notatka
Można również zaimplementować bardziej ogólne możliwości przeciągania i upuszczania — przeciągania danych między dokumentami lub wewnątrz nich — za pomocą ole. Aby uzyskać informacje, zobacz artykuł OLE przeciągnij i upuść.
Śledzenie ostatnio używanych dokumentów
Gdy użytkownik otwiera i zamyka pliki, obiekt aplikacji śledzi cztery ostatnio używane pliki. Nazwy tych plików są dodawane do menu Plik i aktualizowane po ich zmianie. Struktura przechowuje te nazwy plików w rejestrze lub w pliku .ini o takiej samej nazwie jak projekt i odczytuje je z pliku podczas uruchamiania aplikacji. Zastępowanie InitInstance
, które tworzy Kreator aplikacji MFC, zawiera wywołanie funkcji składowej CWinAppLoadStdProfileSettings, która pobiera informacje z rejestru lub z pliku .ini, w tym ostatnio używane nazwy plików.
Te wpisy są przechowywane w następujący sposób:
W systemie Windows NT, Windows 2000 i nowszych wartość jest przechowywana w kluczu rejestru.
W systemie Windows 3.x wartość jest przechowywana w pliku WIN.INI.
W systemie Windows 95 lub nowszym wartość jest przechowywana w buforowanej wersji win. INI.