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_SETUP
Ta 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.
Print
(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.

 


Strona główna