Udostępnij za pośrednictwem


TN022: implementacja poleceń standardowych

Uwaga

Następująca uwaga techniczna nie została zaktualizowana, ponieważ została po raz pierwszy uwzględniona w dokumentacji online. W związku z tym niektóre procedury i tematy mogą być nieaktualne lub nieprawidłowe. Aby uzyskać najnowsze informacje, zaleca się wyszukanie interesującego tematu w indeksie dokumentacji online.

W tej notatce opisano standardowe implementacje poleceń udostępniane przez MFC 2.0. Zapoznaj się z uwagami technicznymi 21 , ponieważ opisuje ona mechanizmy używane do implementowania wielu standardowych poleceń.

W tym opisie przyjęto założenie, że wiedza na temat architektur, interfejsów API i typowej praktyki programistycznej obejmuje MFC. Opisano również nieudokumentowane interfejsy API "tylko implementacja". Nie jest to miejsce do rozpoczęcia nauki o funkcjach lub sposobie programowania w MFC. Aby uzyskać więcej ogólnych informacji, zobacz Visual C++, aby uzyskać szczegółowe informacje na temat udokumentowanych interfejsów API.

The Problem

MFC definiuje wiele standardowych identyfikatorów poleceń w pliku nagłówka AFXRES.H. Obsługa platformy dla tych poleceń różni się. Zrozumienie, gdzie i w jaki sposób klasy platformy obsługują te polecenia, nie tylko pokażą, jak działa wewnętrznie platforma, ale będą dostarczać przydatne informacje na temat dostosowywania standardowych implementacji i uczenia kilku technik implementowania własnych procedur obsługi poleceń.

Zawartość tej noty technicznej

Każdy identyfikator polecenia jest opisany w dwóch sekcjach:

  • Tytuł: symboliczna nazwa identyfikatora polecenia (na przykład ID_FILE_SAVE), a następnie cel polecenia (na przykład "zapisuje bieżący dokument") oddzielony dwukropkiem.

  • Co najmniej jeden akapit opisujący, które klasy implementują polecenie i co robi domyślna implementacja

Większość domyślnych implementacji poleceń jest wstępnie wirowana na mapie komunikatów klasy podstawowej platformy. Istnieją pewne implementacje poleceń, które wymagają jawnego okablowania w klasie pochodnej. Są one opisane w obszarze "Uwaga". Jeśli wybrano odpowiednie opcje w aplikacji AppWizard, te domyślne programy obsługi będą połączone dla Ciebie w wygenerowanej aplikacji szkieletowej.

Konwencje nazewnictwa

Polecenia standardowe są zgodne z prostą konwencją nazewnictwa, której zalecamy, jeśli jest to możliwe. Większość standardowych poleceń znajduje się w standardowych miejscach na pasku menu aplikacji. Symboliczna nazwa polecenia zaczyna się od "ID_", a następnie standardowej nazwy menu podręcznego, a następnie nazwy elementu menu. Nazwa symboliczna ma wielkie litery z podkreśleniami podziałami wyrazów. W przypadku poleceń, które nie mają standardowych nazw elementów menu, nazwa polecenia logicznego jest definiowana począwszy od "ID_" (na przykład ID_NEXT_PANE).

Używamy prefiksu "ID_", aby wskazać polecenia, które mają być powiązane z elementami menu, przyciskami paska narzędzi lub innymi obiektami interfejsu użytkownika poleceń. Programy obsługi poleceń obsługujące polecenia "ID_" powinny używać ON_COMMAND i ON_UPDATE_COMMAND_UI mechanizmów architektury poleceń MFC.

Zalecamy użycie standardowego prefiksu "IDM_" dla elementów menu, które nie są zgodne z architekturą poleceń i wymagają kodu specyficznego dla menu, aby je włączyć i wyłączyć. Oczywiście liczba poleceń specyficznych dla menu powinna być niewielka, ponieważ zgodnie z architekturą poleceń MFC nie tylko sprawia, że programy obsługi poleceń są bardziej wydajne (ponieważ będą działać z paskami narzędzi), ale sprawia, że kod obsługi poleceń jest wielokrotnego użytku.

Zakresy identyfikatorów

Aby uzyskać więcej informacji na temat używania zakresów identyfikatorów w MFC, zapoznaj się z uwagami technicznymi 20 .

Standardowe polecenia MFC mieszczą się w zakresie 0xE000 do 0xEFFF. Nie należy polegać na określonych wartościach tych identyfikatorów, ponieważ mogą ulec zmianie w przyszłych wersjach biblioteki.

Aplikacja powinna zdefiniować jego polecenia w zakresie 0x8000, aby 0xDFFF.

Identyfikatory poleceń w warstwie Standardowa

Dla każdego identyfikatora polecenia istnieje standardowy ciąg wiersza komunikatu, który można znaleźć w pliku PROMPTS. RC. Identyfikator ciągu dla tego wiersza polecenia musi być taki sam jak w przypadku identyfikatora polecenia.

  • ID_FILE_NEW Tworzy nowy/pusty dokument.

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    CWinApp::OnFileNew Implementuje to polecenie inaczej w zależności od liczby szablonów dokumentów w aplikacji. Jeśli istnieje tylko jeden CDocTemplateelement , CWinApp::OnFileNew utworzy nowy dokument tego typu, a także odpowiednią ramkę i klasę widoku.

    Jeśli istnieje więcej niż jeden CDocTemplateelement , CWinApp::OnFileNew monituje użytkownika o wyświetlenie okna dialogowego (AFX_IDD_NEWTYPEDLG) umożliwiającego wybranie typu dokumentu do użycia. Wybrany CDocTemplate element służy do tworzenia dokumentu.

    Jednym z typowych dostosowań ID_FILE_NEW jest zapewnienie innego i bardziej graficznego wyboru typów dokumentów. W takim przypadku możesz zaimplementować własną CMyApp::OnFileNew mapę komunikatów i umieścić ją na mapie komunikatów CWinApp::OnFileNewzamiast . Nie ma potrzeby wywoływania implementacji klasy bazowej.

    Innym typowym dostosowaniem ID_FILE_NEW jest udostępnienie oddzielnego polecenia do tworzenia dokumentu każdego typu. W takim przypadku należy zdefiniować nowe identyfikatory poleceń, na przykład ID_FILE_NEW_CHART i ID_FILE_NEW_SHEET.

  • ID_FILE_OPEN Otwiera istniejący dokument.

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    CWinApp::OnFileOpen ma bardzo prostą implementację wywoływania CWinApp::DoPromptFileName , po której CWinApp::OpenDocumentFile następuje nazwa pliku lub ścieżki pliku do otwarcia. W CWinApp procedurze DoPromptFileName implementacji jest otwierane standardowe okno dialogowe PlikOtwórz i wypełnia je rozszerzeniami plików uzyskanymi z bieżących szablonów dokumentów.

    Jednym z typowych dostosowań ID_FILE_OPEN jest dostosowanie okna dialogowego FileOpen lub dodanie dodatkowych filtrów plików. Zalecanym sposobem dostosowania tej metody jest zastąpienie domyślnej implementacji własnym oknom dialogowym FileOpen i wywołanie przy CWinApp::OpenDocumentFile użyciu nazwy pliku lub ścieżki dokumentu. Nie ma potrzeby wywoływania klasy bazowej.

  • ID_FILE_CLOSE Zamyka aktualnie otwarty dokument.

    CDocument::OnFileClose wywołuje CDocument::SaveModified polecenie , aby monitować użytkownika o zapisanie dokumentu, jeśli został on zmodyfikowany, a następnie wywołuje metodę OnCloseDocument. Cała logika zamykania, w tym zniszczenie dokumentu, jest wykonywana w rutynowej procedurze OnCloseDocument .

    Uwaga

    ID_FILE_CLOSE działa inaczej niż komunikat WM_CLOSE lub polecenie systemu SC_CLOSE wysyłane do okna ramek dokumentów. Zamknięcie okna spowoduje zamknięcie dokumentu tylko wtedy, gdy jest to ostatnie okno ramki z dokumentem. Zamknięcie dokumentu za pomocą ID_FILE_CLOSE spowoduje nie tylko zamknięcie dokumentu, ale zamknie wszystkie okna ramek pokazujące dokument.

  • ID_FILE_SAVE Zapisuje bieżący dokument.

    Implementacja używa procedury CDocument::DoSave pomocniczej, która jest używana zarówno dla metody , jak OnFileSave i OnFileSaveAs. Jeśli zapiszesz dokument, który nie został zapisany wcześniej (tj. nie ma nazwy ścieżki, tak jak w przypadku plikuNowy) lub odczytany z dokumentu tylko do odczytu, OnFileSave logika będzie działać jak ID_FILE_SAVE_AS polecenie i poprosi użytkownika o podanie nowej nazwy pliku. Rzeczywisty proces otwierania pliku i zapisywania odbywa się za pośrednictwem funkcji OnSaveDocumentwirtualnej .

    Istnieją dwa typowe przyczyny dostosowywania ID_FILE_SAVE. W przypadku dokumentów, które nie są zapisywane, po prostu usuń elementy menu ID_FILE_SAVE i przyciski paska narzędzi z interfejsu użytkownika. Upewnij się również, że nigdy nie zanieczyszczono dokumentu (czyli nigdy nie wywołujesz CDocument::SetModifiedFlagmetody ), a struktura nigdy nie spowoduje zapisania dokumentu. W przypadku dokumentów, które zapisują się w innym miejscu niż plik dysku, zdefiniuj nowe polecenie dla tej operacji.

    W przypadku COleServerDocelementu ID_FILE_SAVE jest używany zarówno do zapisywania plików (w przypadku normalnych dokumentów) jak i aktualizacji plików (w przypadku dokumentów osadzonych).

    Jeśli dane dokumentu są przechowywane w pojedynczych plikach dysków, ale nie chcesz używać domyślnej CDocument implementacji serializacji, należy zastąpić CDocument::OnSaveDocument zamiast OnFileSave.

  • ID_FILE_SAVE_AS Zapisuje bieżący dokument pod inną nazwą pliku.

    Implementacja CDocument::OnFileSaveAs używa tej samej CDocument::DoSave procedury pomocniczej co OnFileSave. Polecenie OnFileSaveAs jest obsługiwane tak samo jak ID_FILE_SAVE, jeśli dokumenty nie miały nazwy pliku przed zapisaniem. COleServerDoc::OnFileSaveAs Implementuje logikę w celu zapisania normalnego pliku danych dokumentu lub zapisania dokumentu serwera reprezentującego obiekt OLE osadzony w innej aplikacji jako oddzielny plik.

    Jeśli dostosujesz logikę ID_FILE_SAVE, prawdopodobnie chcesz dostosować ID_FILE_SAVE_AS w podobny sposób lub operacja "Zapisz jako" może nie mieć zastosowania do dokumentu. Jeśli nie jest potrzebny, możesz usunąć element menu z paska menu.

  • ID_FILE_SAVE_COPY_AS Zapisuje bieżący dokument pod nową nazwą.

    Implementacja jest bardzo podobna COleServerDoc::OnFileSaveCopyAs do CDocument::OnFileSaveAsmetody , z tą różnicą, że obiekt dokumentu nie jest "dołączony" do pliku bazowego po zapisie. Oznacza to, że jeśli dokument w pamięci został "zmodyfikowany" przed zapisaniem, nadal jest "zmodyfikowany". Ponadto to polecenie nie ma wpływu na nazwę ścieżki ani tytuł przechowywany w dokumencie.

  • ID_FILE_UPDATE Powiadamia kontener o zapisaniu osadzonego dokumentu.

    Implementacja COleServerDoc::OnUpdateDocument po prostu powiadamia kontener, że osadzanie powinno zostać zapisane. Następnie kontener wywołuje odpowiednie interfejsy API OLE w celu zapisania obiektu osadzonego.

  • ID_FILE_PAGE_SETUP Wywołuje okno dialogowe konfiguracji/układu strony specyficznej dla aplikacji.

    Obecnie nie ma standardu dla tego okna dialogowego, a platforma nie ma domyślnej implementacji tego polecenia.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_FILE_PRINT_SETUP Wywołaj standardowe okno dialogowe Konfiguracja wydruku.

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    To polecenie wywołuje standardowe okno dialogowe konfiguracji wydruku, które umożliwia użytkownikowi dostosowanie drukarki i ustawień drukowania dla co najmniej tego dokumentu lub w większości wszystkich dokumentów w tej aplikacji. Aby zmienić domyślne ustawienia drukarki dla całego systemu, należy użyć Panel sterowania.

    CWinApp::OnFilePrintSetup ma bardzo prostą implementację tworzącą CPrintDialog obiekt i wywołując funkcję implementacji CWinApp::DoPrintDialog . Spowoduje to ustawienie domyślnej konfiguracji drukarki aplikacji.

    Typowym zapotrzebowaniem na dostosowanie tego polecenia jest umożliwienie ustawień drukarki dla poszczególnych dokumentów, które powinny być przechowywane w dokumencie po zapisaniu. W tym celu należy dodać program obsługi mapy komunikatów w CDocument klasie, który tworzy CPrintDialog obiekt, inicjuje go przy użyciu odpowiednich atrybutów drukarki (zazwyczaj hDevMode i hDevNames), wywołaj CPrintDialog::DoModalmetodę i zapisz zmienione ustawienia drukarki. W celu uzyskania niezawodnej implementacji należy przyjrzeć się implementacji CWinApp::DoPrintDialog wykrywania błędów oraz CWinApp::UpdatePrinterSelection do obsługi rozsądnych ustawień domyślnych i śledzenia zmian drukarki w całym systemie.

  • ID_FILE_PRINT standardowe drukowanie bieżącego dokumentu

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CViewz mapą komunikatów klasy pochodnej.

    To polecenie wyświetla bieżący dokument lub bardziej poprawnie uruchamia proces drukowania, który polega na wywołaniu standardowego okna dialogowego drukowania i uruchomieniu aparatu wydruku.

    CView::OnFilePrint implementuje to polecenie i główną pętlę drukowania. Wywołuje wirtualną nazwę CView::OnPreparePrinting , aby wyświetlić monit o użytkownika za pomocą okna dialogowego drukowania. Następnie przygotowuje wyjściowy kontroler domeny, aby przejść do drukarki, wyświetli okno dialogowe postępu drukowania (AFX_IDD_PRINTDLG) i wysyła StartDoc ucieczkę do drukarki. CView::OnFilePrint zawiera również pętlę drukowania zorientowaną na stronę główną. Dla każdej strony wywołuje wirtualną CView::OnPrepareDC , po której następuje ucieczka StartPage i wywołuje wirtualną CView::OnPrint dla tej strony. Po zakończeniu wywoływana jest maszyna wirtualna CView::OnEndPrinting , a okno dialogowe postępu drukowania jest zamykane.

    Architektura drukowania MFC jest przeznaczona do podłączania na wiele różnych sposobów drukowania i podglądu wydruku. Zwykle można znaleźć różne CView funkcje zastępowalne odpowiednie dla każdego zadania drukowania zorientowanego na strony. Tylko w przypadku aplikacji, która używa drukarki dla danych wyjściowych nie zorientowanych na strony, należy znaleźć konieczność zastąpienia implementacji ID_FILE_PRINT.

  • ID_FILE_PRINT_PREVIEW wprowadź tryb podglądu wydruku dla bieżącego dokumentu.

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CViewz mapą komunikatów klasy pochodnej.

    CView::OnFilePrintPreview Uruchamia tryb podglądu wydruku, wywołując udokumentowaną funkcję CView::DoPrintPreviewpomocnika . CView::DoPrintPreview jest głównym aparatem pętli podglądu wydruku, podobnie jak OnFilePrint aparat główny pętli drukowania.

    Operację podglądu wydruku można dostosować na różne sposoby, przekazując różne parametry do DoPrintPreviewelementu . Zapoznaj się z uwagami technicznymi 30, w której omówiono niektóre szczegóły podglądu wydruku i sposób jego dostosowywania.

  • ID_FILE_MRU_FILE1... FILE16 Zakres identyfikatorów poleceń dla listy PLIKÓW MRU.

    CWinApp::OnUpdateRecentFileMenu to procedura obsługi interfejsu użytkownika poleceń aktualizacji, która jest jednym z bardziej zaawansowanych zastosowań mechanizmu ON_UPDATE_COMMAND_UI. W zasobie menu musisz zdefiniować tylko jeden element menu z identyfikatorem ID_FILE_MRU_FILE1. Ten element menu pozostaje początkowo wyłączony.

    Wraz ze wzrostem listy narzędzi MRU do listy jest dodawanych więcej elementów menu. Domyślna standardowa CWinApp implementacja to standardowy limit czterech ostatnio używanych plików. Domyślnie można zmienić wywołanie CWinApp::LoadStdProfileSettings za pomocą większej lub mniejszej wartości. Lista mrU jest przechowywana w aplikacji . Plik INI. Lista jest ładowana do funkcji aplikacji InitInstance , jeśli wywołasz LoadStdProfileSettingsmetodę i zostanie zapisana podczas zamykania aplikacji. Procedura obsługi interfejsu użytkownika polecenia aktualizacji mrU będzie również konwertować ścieżki bezwzględne na ścieżki względne do wyświetlania w menu pliku.

    CWinApp::OnOpenRecentFile to program obsługi ON_COMMAND, który wykonuje rzeczywiste polecenie. Po prostu pobiera nazwę pliku z listy MRU i wywołuje CWinApp::OpenDocumentFilemetodę , która wykonuje całą pracę podczas otwierania pliku i aktualizowania listy MRU.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_EDIT_CLEAR Czyści bieżące zaznaczenie

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia przy użyciu polecenia CEdit::Clear. Polecenie jest wyłączone, jeśli nie ma bieżącego zaznaczenia.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_CLEAR_ALL czyści cały dokument.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia. Zobacz przykładową implementację SCRIBBLE z samouczka MFC.

  • ID_EDIT_COPY Kopiuje bieżące zaznaczenie do Schowka.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia, która kopiuje aktualnie zaznaczony tekst do Schowka jako CF_TEXT przy użyciu polecenia CEdit::Copy. Polecenie jest wyłączone, jeśli nie ma bieżącego zaznaczenia.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_CUT Wycina bieżące zaznaczenie do Schowka.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Program udostępnia implementację tego polecenia, która wycina aktualnie zaznaczony tekst do Schowka jako CF_TEXT przy użyciu polecenia CEdit::Cut. Polecenie jest wyłączone, jeśli nie ma bieżącego zaznaczenia.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_FIND Rozpoczyna operację znajdowania, powoduje wyświetlenie bez moderowego okna dialogowego znajdowania.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia, które wywołuje funkcję OnEditFindReplace pomocnika implementacji do użycia i przechowywania poprzednich ustawień znajdowania/zastępowania w prywatnych zmiennych implementacji. Klasa CFindReplaceDialog służy do zarządzania bez moderowaniem okna dialogowego monitowania użytkownika.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_PASTE Wstawia bieżącą zawartość Schowka.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia, która kopiuje bieżące dane Schowka zastępując zaznaczony tekst przy użyciu polecenia CEdit::Paste. Polecenie jest wyłączone, jeśli w Schowku nie ma CF_TEXT .

    COleClientDoc program obsługi interfejsu użytkownika polecenia aktualizacji dla tego polecenia. Jeśli Schowek nie zawiera osadzonego elementu/obiektu OLE, polecenie zostanie wyłączone. Odpowiadasz za napisanie programu obsługi dla rzeczywistego polecenia w celu wykonania rzeczywistego wklejania. Jeśli aplikacja OLE może również wkleić inne formaty, należy podać własną procedurę obsługi interfejsu użytkownika poleceń aktualizacji w widoku lub dokumencie (czyli gdzieś wcześniej COleClientDoc w routingu docelowym polecenia).

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

    Aby zastąpić standardową implementację OLE, użyj polecenia COleClientItem::CanPaste.

  • ID_EDIT_PASTE_LINK Wstawia link z bieżącej zawartości Schowka.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    COleDocument program obsługi interfejsu użytkownika polecenia aktualizacji dla tego polecenia. Jeśli Schowek nie zawiera połączonego elementu/obiektu OLE, polecenie zostanie wyłączone. Odpowiadasz za napisanie programu obsługi dla rzeczywistego polecenia w celu wykonania rzeczywistego wklejania. Jeśli aplikacja OLE może również wkleić inne formaty, należy podać własną procedurę obsługi interfejsu użytkownika poleceń aktualizacji w widoku lub dokumencie (czyli gdzieś wcześniej COleDocument w routingu docelowym polecenia).

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

    Aby zastąpić standardową implementację OLE, użyj polecenia COleClientItem::CanPasteLink.

  • ID_EDIT_PASTE_SPECIAL Wstawia bieżącą zawartość Schowka z opcjami.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej. MFC nie udostępnia tego okna dialogowego.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_REPEAT Powtarza ostatnią operację.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia, aby powtórzyć ostatnią operację znajdowania. Używane są prywatne zmienne implementacji ostatniego znajdowania. Polecenie jest wyłączone, jeśli nie można podjąć próby znalezienia.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_REPLACE Rozpoczyna operację zamieniania, powoduje wyświetlenie bez moderowego okna dialogowego zastępowania.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia, które wywołuje funkcję OnEditFindReplace pomocnika implementacji do użycia i przechowywania poprzednich ustawień znajdowania/zastępowania w prywatnych zmiennych implementacji. Klasa CFindReplaceDialog służy do zarządzania moderowym oknom dialogowym z monitem użytkownika.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_SELECT_ALL Wybiera cały dokument.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia, które wybiera cały tekst w dokumencie. Polecenie jest wyłączone, jeśli nie ma tekstu do wybrania.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_UNDO cofa ostatnią operację.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    CEditView Udostępnia implementację tego polecenia przy użyciu polecenia CEdit::Undo. Polecenie jest wyłączone, jeśli CEdit::CanUndo zwraca wartość FALSE.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_EDIT_REDO ponownie wykonuje ostatnią operację.

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla każdej CViewklasy pochodnej.

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_WINDOW_NEW Otwiera kolejne okno w aktywnym dokumencie.

    CMDIFrameWnd::OnWindowNew implementuje tę zaawansowaną funkcję przy użyciu szablonu dokumentu bieżącego dokumentu w celu utworzenia innej ramki zawierającej inny widok bieżącego dokumentu.

    Podobnie jak w przypadku większości poleceń menu okna interfejsu dokumentu (MDI), polecenie jest wyłączone, jeśli nie ma aktywnego okna podrzędnego MDI.

    Nie zaleca się dostosowywania tego programu obsługi poleceń. Jeśli chcesz podać polecenie, które tworzy dodatkowe widoki lub okna ramowe, prawdopodobnie lepiej będzie wymyślić własne polecenie. Możesz sklonować kod i CMDIFrameWnd::OnWindowNew zmodyfikować go do określonej ramki i klas wyświetlania swoich potrzeb.

  • ID_WINDOW_ARRANGE Rozmieszcza ikony w dolnej części okna MDI.

    CMDIFrameWnd implementuje to standardowe polecenie MDI w funkcji OnMDIWindowCmdpomocnika implementacji . Ten pomocnik mapuje identyfikatory poleceń na komunikaty MDI systemu Windows i w związku z tym może udostępniać dużo kodu.

    Podobnie jak w przypadku większości poleceń menu okna MDI polecenie jest wyłączone, jeśli nie ma aktywnego okna podrzędnego MDI.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_WINDOW_CASCADE okna kaskadowe, aby nakładały się na siebie.

    CMDIFrameWnd implementuje to standardowe polecenie MDI w funkcji OnMDIWindowCmdpomocnika implementacji . Ten pomocnik mapuje identyfikatory poleceń na komunikaty MDI systemu Windows i w związku z tym może udostępniać dużo kodu.

    Podobnie jak w przypadku większości poleceń menu okna MDI polecenie jest wyłączone, jeśli nie ma aktywnego okna podrzędnego MDI.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_WINDOW_TILE_HORZ okna Kafelki poziomo.

    To polecenie jest implementowane w CMDIFrameWnd taki sam sposób jak ID_WINDOW_CASCADE, z wyjątkiem innego komunikatu MDI systemu Windows jest używany do operacji.

    Należy wybrać domyślną orientację kafelka dla aplikacji. Można to zrobić, zmieniając identyfikator elementu menu "Kafelek" okna na ID_WINDOW_TILE_HORZ lub ID_WINDOW_TILE_VERT.

  • ID_WINDOW_TILE_VERT okna Kafelki w pionie.

    To polecenie jest implementowane w CMDIFrameWnd taki sam sposób jak ID_WINDOW_CASCADE, z wyjątkiem innego komunikatu MDI systemu Windows jest używany do operacji.

    Należy wybrać domyślną orientację kafelka dla aplikacji. Można to zrobić, zmieniając identyfikator elementu menu "Kafelek" okna na ID_WINDOW_TILE_HORZ lub ID_WINDOW_TILE_VERT.

  • ID_WINDOW_SPLIT interfejs klawiatury do dzielenia.

    CView obsługuje to polecenie dla implementacji CSplitterWnd . Jeśli widok jest częścią okna podziału, to polecenie deleguje do funkcji CSplitterWnd::DoKeyboardSplitimplementacji . Spowoduje to umieszczenie podziału w trybie, który umożliwi użytkownikom klawiatury podzielenie lub anulowanie okna podziału.

    To polecenie jest wyłączone, jeśli widok nie znajduje się w rozdzielaniu.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_APP_ABOUT Wywołuje okno dialogowe Informacje.

    Nie ma standardowej implementacji pola Informacje o aplikacji. Domyślna aplikacja utworzona przez aplikację AppWizard utworzy niestandardową klasę okna dialogowego dla aplikacji i użyje jej jako pola Informacje. Aplikacja AppWizard napisze również trywialną procedurę obsługi poleceń, która obsługuje to polecenie i wywołuje okno dialogowe.

    Prawie zawsze wdrożysz to polecenie.

  • ID_APP_EXIT Zamknij aplikację.

    CWinApp::OnAppExit obsługuje to polecenie, wysyłając komunikat WM_CLOSE do głównego okna aplikacji. Standardowe zamykanie aplikacji (monitowanie o zanieczyszczone pliki itd.) jest obsługiwane przez implementację CFrameWnd .

    Nie zaleca się dostosowywania tego programu obsługi poleceń. Zalecane jest zastąpienie CWinApp::SaveAllModified lub logika zamykania CFrameWnd .

    Jeśli zdecydujesz się zaimplementować to polecenie, zalecamy użycie tego identyfikatora polecenia.

  • ID_HELP_INDEX Wyświetla tematy Pomocy z witryny . Plik HLP.

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    CWinApp::OnHelpIndex obsługuje to polecenie przez trywialnie wywołując polecenie CWinApp::WinHelp.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_HELP_USING Wyświetla pomoc dotyczącą korzystania z Pomocy.

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    CWinApp::OnHelpUsing obsługuje to polecenie przez trywialnie wywołując polecenie CWinApp::WinHelp.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_CONTEXT_HELP wprowadza tryb pomocy SHIFT-F1.

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    CWinApp::OnContextHelp obsługuje to polecenie, ustawiając kursor trybu pomocy, wprowadzając pętlę modalną i czekając, aż użytkownik wybierze okno, aby uzyskać pomoc. Aby uzyskać więcej informacji na temat implementacji pomocy MFC, zapoznaj się z uwagami technicznymi 28 .

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_HELP daje pomoc dotyczącą bieżącego kontekstu

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    CWinApp::OnHelp obsługuje to polecenie, uzyskując odpowiedni kontekst pomocy dla bieżącego kontekstu aplikacji. Obsługuje to prostą pomoc F1, pomoc dotyczącą pól komunikatów itd. Aby uzyskać więcej informacji na temat implementacji pomocy MFC, zapoznaj się z dokumentacją techniczną 28 .

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_DEFAULT_HELP Wyświetla domyślną pomoc dla kontekstu

    Uwaga

    Aby włączyć tę funkcję, należy połączyć to CWinAppz mapą komunikatów klasy pochodnej.

    To polecenie jest zwykle mapowane na CWinApp::OnHelpIndex.

    Można podać inny program obsługi poleceń, jeśli jest wymagane rozróżnienie między domyślną Pomocą a indeksem Pomocy.

  • ID_NEXT_PANE Przechodzi do następnego okienka

    CView obsługuje to polecenie dla implementacji CSplitterWnd . Jeśli widok jest częścią okna podziału, to polecenie deleguje do funkcji CSplitterWnd::OnNextPaneCmdimplementacji . Spowoduje to przeniesienie aktywnego widoku do następnego okienka w rozdzielaniu.

    To polecenie jest wyłączone, jeśli widok nie znajduje się w rozdzielaniu lub nie ma następnego okienka, do których należy przejść.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_PREV_PANE przechodzi do poprzedniego okienka

    CView obsługuje to polecenie dla implementacji CSplitterWnd . Jeśli widok jest częścią okna podziału, to polecenie deleguje do funkcji CSplitterWnd::OnNextPaneCmdimplementacji . Spowoduje to przeniesienie aktywnego widoku do poprzedniego okienka w rozdzielaniu.

    To polecenie jest wyłączone, jeśli widok nie znajduje się w rozdzielaniu lub nie ma poprzedniego okienka do przejścia.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_OLE_INSERT_NEW wstawia nowy obiekt OLE

    Obecnie nie ma standardowej implementacji tego polecenia. Należy to zaimplementować dla CViewklasy -pochodnej, aby wstawić nowy element/obiekt OLE w bieżącym zaznaczeniu.

    Wszystkie aplikacje klienckie OLE powinny zaimplementować to polecenie. Aplikacja AppWizard z opcją OLE utworzy szkieletową implementację klasy widoków OnInsertObject , która będzie musiała zostać ukończona.

    Zapoznaj się z przykładowym przykładem OCLIENT MFC OLE, aby uzyskać pełną implementację tego polecenia.

  • ID_OLE_EDIT_LINKS edytuje łącza OLE

    COleDocument obsługuje to polecenie przy użyciu implementacji udostępnionej przez MFC standardowego okna dialogowego linków OLE. Dostęp do implementacji tego okna dialogowego jest uzyskiwany za pośrednictwem COleLinksDialog klasy . Jeśli bieżący dokument nie zawiera żadnych linków, polecenie jest wyłączone.

    Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_OLE_VERB_FIRST... LAST Zakres identyfikatorów dla czasowników OLE

    COleDocument używa tego zakresu identyfikatorów poleceń dla czasowników obsługiwanych przez aktualnie wybrany element/obiekt OLE. Musi to być zakres, ponieważ dany typ elementu/obiektu OLE może obsługiwać zero lub więcej niestandardowych zleceń. W menu aplikacji powinien znajdować się jeden element menu z identyfikatorem ID_OLE_VERB_FIRST. Po uruchomieniu programu menu zostanie zaktualizowane przy użyciu odpowiedniego opisu czasownika menu (lub menu podręczne z wieloma zleceniami). Zarządzanie menu OLE jest obsługiwane przez AfxOleSetEditMenuprogram , wykonywane w procedurze obsługi interfejsu użytkownika polecenia aktualizacji dla tego polecenia.

    Nie ma jawnych procedur obsługi poleceń do obsługi każdego identyfikatora polecenia w tym zakresie. COleDocument::OnCmdMsg jest zastępowany, aby wychwycić wszystkie identyfikatory poleceń w tym zakresie, przekształcić je w liczby czasowników zero i uruchomić serwer dla tego czasownika (przy użyciu polecenia COleClientItem::DoVerb).

    Dostosowywanie lub inne użycie tego zakresu identyfikatorów poleceń nie jest zalecane.

  • ID_VIEW_TOOLBAR włącza i wyłącza pasek narzędzi

    CFrameWnd obsługuje to polecenie i program obsługi interfejsu użytkownika update-command w celu przełączenia widocznego stanu paska narzędzi. Pasek narzędzi musi być oknem podrzędnym ramki o identyfikatorze okna podrzędnego AFX_IDW_TOOLBAR. Procedura obsługi poleceń rzeczywiście przełącza widoczność okna paska narzędzi. CFrameWnd::RecalcLayout służy do ponownego rysowania okna ramki z paskiem narzędzi w nowym stanie. Procedura obsługi interfejsu użytkownika update-command sprawdza element menu, gdy pasek narzędzi jest widoczny.

    Nie zaleca się dostosowywania tego programu obsługi poleceń. Jeśli chcesz dodać dodatkowe paski narzędzi, należy sklonować i zmodyfikować program obsługi poleceń oraz program obsługi interfejsu użytkownika update-command dla tego polecenia.

  • ID_VIEW_STATUS_BAR włącza i wyłącza pasek stanu

    To polecenie jest implementowane w CFrameWnd taki sam sposób jak ID_VIEW_TOOLBAR, z wyjątkiem innego identyfikatora okna podrzędnego (AFX_IDW_STATUS_BAR) jest używany.

Programy obsługi poleceń tylko do aktualizacji

Kilka standardowych identyfikatorów poleceń jest używanych jako wskaźniki na paskach stanu. Korzystają one z tego samego mechanizmu obsługi interfejsu użytkownika polecenia update-command, aby wyświetlić bieżący stan wizualizacji w czasie bezczynności aplikacji. Ponieważ nie można ich wybrać przez użytkownika (czyli nie można wypchnąć okienka paska stanu), nie ma sensu mieć ON_COMMAND obsługi dla tych identyfikatorów poleceń.

  • ID_INDICATOR_CAPS: wskaźnik blokady CAP.

  • ID_INDICATOR_NUM: wskaźnik blokady NUM.

  • ID_INDICATOR_SCRL: wskaźnik blokady SCRL.

  • ID_INDICATOR_KANA: wskaźnik blokady KANA (dotyczy tylko japońskich systemów).

Wszystkie trzy z nich są implementowane w CFrameWnd::OnUpdateKeyIndicatorprogramie , pomocnik implementacji, który używa identyfikatora polecenia do mapowania na odpowiedni klucz wirtualny. Wspólna implementacja włącza lub wyłącza (w przypadku okienk stanu wyłączone = brak tekstu) CCmdUI obiekt w zależności od tego, czy odpowiedni klucz wirtualny jest obecnie zablokowany.

Nie zaleca się dostosowywania tego programu obsługi poleceń.

  • ID_INDICATOR_EXT: wskaźnik wyboru EXTended.

  • ID_INDICATOR_OVR: wskaźnik OVeRstrike.

  • ID_INDICATOR_REC: wskaźnik RECording.

Obecnie nie ma standardowej implementacji tych wskaźników.

Jeśli zdecydujesz się zaimplementować te wskaźniki, zalecamy użycie tych identyfikatorów wskaźników i utrzymanie kolejności wskaźników na pasku stanu (czyli w tej kolejności: EXT, CAP, NUM, SCRL, OVR, REC).

Zobacz też

Uwagi techniczne według numerów
Uwagi techniczne według kategorii