Scenariusze reakcji na standardowe komendy GUI
Wstęp
W niniejszym dokumencie zawarto wykaz metod wywoływanych w odpowiedzi na wybranie przez użytkownika komendy GUI (ang. Graphic User Interface). Komendy GUI mogą pochodzić z menu, akceleratorów lub przycisków (w tym przycisków z pasków narzędzi).
Komendy menu File
Komenda Standardowa reakcja New
(ID_FILE_NEW)Wołany jest handler CWinApp::OnFileNew. Domyślna wersja sprawdza listę zarejestrowanych document templates. Jeśli jest więcej niż jeden template na liście wyświetlane jest stosowne okno dialogowe umożliwiające wybór. Następnym punktem, w którym może ingerować programista jest przeciążalna metoda CDocument::OnNewDocument. Open
(ID_FILE_OPEN)Wołany jest handler CWinApp::OnFileOpen, która odwołuje się do metod CWinApp::DoPromptFileName (wyświetlenie okna dialogowego - "wybieraczki" plików) a następnie metoda CWinApp::OpenDocumentFile tworzy dokument oraz inicjuje jego deserializację. Na koniec wołana jest przeciążalna metoda CDocument::OnOpenDocument. Close
(ID_FILE_CLOSE)Wołany jest handler CDocument::OnFileClose, której zadaniem jest zamknięcie dokumentu. W tym celu wołana jest metoda CDocument::SaveModified, która pyta się użytkownika co zrobić ze zmodyfikowanymi dokumentami i pozwala je zapisać. Na koniec wołana jest wirtualna metoda CDocument::OnCloseDocument. W metodzie tej odbywają się operacje związane z logicznym zamknięciem dokumentu oraz zniszczeniem obiektu dokumentu. Save
(ID_FILE_SAVE)Wołany jest handler CDocument::OnFileSave, która wykorzystuje metodę pomocniczą CDocument::DoSave do zapisu dokumentu. Jeżeli dokument nie był wcześniej zapisywany metoda zachowuje się jak CWinApp::OnFileSaveAs. Na koniec wołana jest wirtualna metoda CDocument::OnSaveDocument. Save As
(ID_FILE_SAVE_AS)Wołana jest przeciążalna metoda CDocument::OnFileSaveAs, która również korzysta z pomocniczej metody CDocument::DoSave. Metoda różni się od poprzednio opisywanej tym, że zawsze przed zapisem wyświetlane jest okno dialogowe umożliwiając wybór lokalizacji i nazwy pliku. Na koniec również wołana jest wirtualna metoda CDocument::OnSaveDocument. Save Copy As
(ID_FILE_SAVE_COPY_AS)Wołany jest handler CDocument::OnFileSaveCopyAs, której zadaniem jest zapisanie kopii dokumentu pod inną nazwą. Scenariusz operacyjny nie odbiega od opisanego powyżej. Page Setup
(ID_FILE_PAGE_SETUPTa komenda nie ma standardowego handlera i jej identyfikator jest jedynie sugerowany do użycia. Zadaniem komendy jest wyświetlenie, specyficznego dla aplikacji, okna dialogowego przeznaczonego do ustalania parametrów strony. Print Setup
(ID_FILE_PRINT_SETUP)Wołany jest handler CWinApp::OnFilePrintSetup o bardzo prostej implementacji, która tworzy obiekt klasy CPrintDialog oraz woła metodę CWinApp::DoPrintDialog. Wyświetlane okno dialogowe służy do wyboru drukarki oraz ustawienia parametrów wybranej drukarki.
(ID_FILE_PRINT)Wołany jest handler CView::OnFilePrint, którego zadaniem jest wydrukowanie zawartości aktywnego widoku. Następnie wołana jest wirtualna metoda CView::OnPreparePrinting, po czym rozpoczyna się zorientowany stronicowo wydruk w pętli. Podczas każdej iteracji drukowana jest kolejna strona - wołana jest wirtualna metoda CView::OnPrepareDC a po niej, również wirtualna, CView::OnPrint. Po wyjściu z pętli wywoływana jest wirtualna metoda CView::EndPrinting. Print Preview
(ID_FILE_PRINT_PREVIEW)Wołany jest handler CView::OnFilePrintPreview, który korzysta z metody pomocniczej CView::DoPrintPreview. Owa funkcja pomocnicza również "drukuje" w pętli tzw. podgląd wydruku. MRU
(ID_FILE_MRU_FILE1 do ID_FILE_MRU_FILE16)Są to komendy pochodzące od listy ostatnio otwartych plików (dokumentów). Owa lista może zawierać do 16-tu elementów. Komendy są obsługiwane zbiorczo przez handler CWinApp::OnOpenRecentFile, który korzysta z metody CWinApp::OpenDocumentFile do otwarcia dokumentu. Exit
(ID_APP_EXIT)Zakończenie pracy z programem. Wołany jest handler CWinApp::OnAppExit, który wysyła wiadomość WM_CLOSE do głównego okna ramowego aplikacji.
Komendy menu Edit
Komenda Standardowa reakcja Clear
(ID_EDIT_CLEAR)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditClear. Handler powinno się implementować w klasach widoków. Clear all
(ID_EDIT_CLEAR_ALL)Brak reakcji. Handler powinno się implementować w klasach widoków. Copy
(ID_EDIT_COPY)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditCopy. Handler powinno się implementować w klasach widoków. Cut
(ID_EDIT_CUT)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditCut. Handler powinno się implementować w klasach widoków. Find
(ID_EDIT_FIND)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditFind, który odwołuje się do metody OnEditFindReplace, która tworzy obiekt klasy CFindReplaceDialog. Handler powinno się implementować w klasach widoków. Paste
(ID_EDIT_PASTE)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditPaste. Handler powinno się implementować w klasach widoków. Paste Link
(ID_EDIT_PASTE_LINK)Brak reakcji. Handler powinno się implementować w klasach widoków. Paste Special
(ID_EDIT_PASTE_SPECIAL)Brak reakcji. Handler powinno się implementować w klasach widoków. Repeat
(ID_EDIT_REPEAT)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditRepeat. Handler powinno się implementować w klasach widoków. Replace
(ID_EDIT_REPLACE)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditFind, który odwołuje się do metody OnEditFindReplace, która tworzy obiekt klasy CFindReplaceDialog. Handler powinno się implementować w klasach widoków. Select All
(ID_EDIT_SELECT_ALL)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditSelectAll. Handler powinno się implementować w klasach widoków. Undo
(ID_EDIT_UNDO)Brak reakcji, za wyjątkiem klas CEditView i CRichEditView, gdzie wołany jest handler OnEditUndo. Handler powinno się implementować w klasach widoków. Redo
(ID_EDIT_REDO)Brak reakcji. Handler powinno się implementować w klasach widoków.
Komendy menu View
Komenda Standardowa reakcja Toolbar
(ID_VIEW_TOOLBAR)Obsługiwana przez klasę CFrameWnd powoduje pokazywanie bądź ukrywanie paska narzędzi. Statusbar
(ID_VIEW_STATUS_BAR)Obsługiwana przez klasę CFrameWnd powoduje pokazywanie bądź ukrywanie paska statusowego.
Komendy menu Window
Komenda Standardowa reakcja New
(ID_WINDOW_NEW)Wołany jest handler CMDIFrameWnd::OnWindowNew, który otwiera kopię aktywnego widoku (w oknie ramowym MDI). Arrange
(ID_WINDOW_ARRANGE)Wołany jest zbiorczy handler CMDIFrameWnd::OnMDIWindowCmd obsługujący komunikaty systemowe specyficzne dla okien MDI (w tym wypadku WM_MDIICONARRANGE - ułożenie potomnych okien MDI w postaci ikonek w dolnej części głównego okna ramowego MDI). Cascade
(ID_WINDOW_CASCADE)Wołany jest zbiorczy handler CMDIFrameWnd::OnMDIWindowCmd obsługujący komunikaty systemowe specyficzne dla okien MDI (w tym wypadku WM_MDICASCADE - kaskadowe rozłożenie potomnych okien MDI). Tile Horizontal
(ID_WINDOW_TILE_HORIZ)Wołany jest zbiorczy handler CMDIFrameWnd::OnMDIWindowCmd obsługujący komunikaty systemowe specyficzne dla okien MDI. Tile Vertical
(ID_WINDOW_TILE_VERT)Wołany jest zbiorczy handler CMDIFrameWnd::OnMDIWindowCmd obsługujący komunikaty systemowe specyficzne dla okien MDI. Split
(ID_WINDOW_SPLIT)Wołany jest handler CView::OnSplitCmd dzielący widok na panele. Next Pane
(ID_NEXT_PANE)Wołany jest handler CView::OnNextPaneCmd aktywizujący następny panel widoku. Prevoius Pane
(ID_PREV_PANE)Wołany jest handler CView::OnNextPaneCmd aktywizujący poprzedzający aktywny panel widoku.
Komendy menu Help
Komenda Standardowa reakcja Index
(ID_HELP_INDEX)Wołany jest handler CWinApp::OnHelpIndex, który wywołując metodę CWinApp::WinHelp wyświetla spis dostępnych tematów pomocy. Using
(ID_HELP_USING)Wołany jest handler CWinApp::OnHelpUsing, który wywołując metodę CWinApp::WinHelp wyświetla opis użytkowania systemu pomocy. Pomoc kontekstowa SHIFT+F1
(ID_CONTEXT_HELP)Wołany jest handler CWinApp::OnContextHelp. Help
(ID_HELP)Wołany jest handler CWinApp::OnHelp. Pomoc domyślna
(ID_DEFAULT_HELP)Brak reakcji. Zazwyczaj obsługiwane przez CWinApp::OnHelpIndex. About
(ID_APP_ABOUT)Brak reakcji.