7.1 Стандартные командные идентификаторы и обработчики
При написании приложения документ/вид обычно нет необходимости самостоятельно писать обработчики для всех команд меню. CWinApp, CDocument, CFrameWnd и другие классы MFC содержат обработчики "по умолчанию" для типичных команд меню, вроде FileOpen и FileSave. Кроме того, каркас сгенерированного приложения по умолчанию обеспечивает связь команд с идентификаторами вроде ID_FILE_OPEN и ID_FILE_SAVE с обработчиками "по умолчанию".
В табл. 9.4 приведены часто используемые стандартные командные идентификаторы и соответствующие командные обработчики. В столбце "Установлен?" указано, надо ли добавлять макрос карты сообщений для этого сообщения или его обработчик уже установлен в каркасе приложения. Например, у команды ID_APP_EXIT обработчик не установлен, поэтому в карту сообщений класса приложения надо добавить запись:
ON_COMMAND( ID_APP_EXIT, СWinApp::OnAppExit )
|
Таблица 9.4. Стандартные командные идентификаторы и обработчики
Идентификатор команды
|
Пункт меню
|
Обработчик "по умолчанию"
|
Установлен?
|
Меню Файл
|
ID_FILE_NEW
|
New
|
CWinApp::OnFileNew
|
Нет
|
ID_FILE_OPEN
|
Open
|
CWinApp::OnFileOpen
|
Нет
|
ID_FILE_SAVE
|
Save
|
CDocument::OnFileSave
|
Да
|
ID_FILE_SAVE_AS
|
Save As
|
CDocument::OnFileSaveAs
|
Да
|
ID_FILE_PAGE_SETUP
|
Page Setup
|
Отсутствует
|
N/A
|
ID_FILE_PRINT_SETUP
|
Print Setup
|
CWinApp::OnFilePrintSetup
|
Нет
|
ID_FILE_PRINT
|
Print
|
CView::OnFilePrint
|
Нет
|
ID_FILE_PRINT_PREVIEW
|
Print Preview
|
CView::OnFilePrintPreview
|
Нет
|
ID_FILE_SEND_MAIL
|
Send Mail
|
CDocument::OnFileSendMail
|
Нет
|
ID_FILE_MRU_FILE1_
|
N/A
|
CWinApp::OnOpenRecentFile
|
Да
|
ID_FILE_MRU_FILE16
|
|
|
|
ID_APP_EXIT
|
Exit
|
CWinApp::OnAppExit
|
Да
|
Меню Правка
|
ID_EDIT_CLEAR
|
Clear
|
Отсутствует
|
N/A
|
ID_EDIT_CLEAR_ALL
|
Clear All
|
Отсутствует
|
N/A
|
ID_EDIT_CUT
|
Cut
|
Отсутствует
|
N/A
|
ID_EDIT_COPY
|
Copy
|
Отсутствует
|
N/A
|
ID_EDIT_PASTE
|
Paste
|
Отсутствует
|
N/A
|
ID_EDIT_PASTE_LINK
|
Paste Link
|
Отсутствует
|
N/A
|
ID_EDIT_PASTE_SPECIAL
|
Paste Special
|
Отсутствует
|
N/A
|
ID_EDIT_FIND
|
Find
|
Отсутствует
|
N/A
|
ID_EDIT_REPLACE
|
Replace
|
Отсутствует
|
N/A
|
ID_EDIT_UNDO
|
Undo
|
Отсутствует
|
N/A
|
ID_EDIT_REDO
|
Redo
|
Отсутствует
|
N/A
|
ID_EDIT_REPEAT
|
Repeat
|
Отсутствует
|
N/A
|
ID_EDIT_SELECT_ALL
|
SelectAll
|
Отсутствует
|
N/A
|
Меню Вид
|
ID_VIEW_TOOLBAR
|
Toolbar
|
CFrameWnd::OnBarCheck
|
Да
|
ID_VIEW_STATUS_BAR
|
Status Bar
|
CFrameWnd::OnBarCheck
|
Да
|
Меню Окно (есть только в MDI приложениях)
|
ID_WINDOW_NEW
|
New Window
|
CMDIFrameWnd::OnWindowNew
|
Да
|
ID_WINDOW_ARRANGE
|
Arrange All
|
CMDIFrameWnd::OnMDIWindowCmd
|
Да
|
ID_WINDOW_CASCADE
|
Cascade
|
CMDIFrameWnd::OnMDIWindowCmd
|
Да
|
ID_WINDOW_TILE_HORZ
|
Tile Horizontal
|
CMDIFrameWnd::OnMDIWindowCmd
|
Да
|
ID_WINDOW_TILE_VERT
|
Tile Vertical
|
CMDIFrameWnd::OnMDIWindowCmd
|
Да
|
Меню Помощь
|
ID_APP_ABOUT
|
About AppName
|
Отсутствует
|
N/A
|
В MFC для некоторых команд есть стандартные обработчики обновления:
-
CFrameWnd::OnUpdateControlBarMenu для команд ID_VIEW_TOOLBAR и ID_VIEW_STATUS_BAR;
-
CMDIFrameWnd::OnUpdateMDIWindowCmd для команд меню Окно.
-
CDocument::OnUpdateFileSendMail для ID_FILE_SEND_MAIL.
Классы-виды CEditView и CRichEditView содержат собственные командные обработчики для команд меню Правка, но в других окнах-видах их надо добавлять самостоятельно (если они нужны).
Для своих собственных команд меню не следует использовать стандартные идентификаторы и обработчики каркаса приложения. Для стандартных команд можно заменять обработчики по умолчанию на свои собственные. Т.е. вы можете пользоваться готовыми средствами каркаса в той мере, в которой они подходят для вашего приложения.
Литература
-
Microsoft Corporation. Разработка приложений на Microsoft Visual C++ 6.0. Учебный курс: Официальное пособие Microsoft для самостоятельной подготовки. М.: "Русская Редакция", 2000. (В этом учебном пособии приведены инструкции по использованию различных возможностей MFC и среды Visual C++ 6. Некоторым недостатком является отсутствие подробной описательной части, но удачные пошаговые инструкции позволяют отработать выполнение большого количества типичных операций в Visual C++).
-
Petzold C. Programming Windows. Microsoft Press. 1990. (Наверное, самая известная книга по программированию для Windows на уровне API)
-
Prosise J. Programming Windows with MFC. Microsoft Press. 1999. (В некотором смысле, аналог книги Petzold'а, но по программированию для Windows с использованием библиотеки классов MFC. Часть лабораторных работ и лекционного материала данного курса основаны на этой книге).
-
Toth V. Visual C++ 4 Unleashed. Sams Publishing, 1996 (Учебник по программированию для Windows с использованием Visual C++ версии 4.0. Рассчитан на достаточно опытных программистов. Часть глав посвящены описанию архитектуры Windows с точки зрения программиста).
-
Вильямс А. Системное программирование в Windows 2000 для профессионалов. СПб: Питер, 2001. (В этой книге описан ряд средств, доступных в Windows 2000 на уровне API – технология COM, межпроцессное взаимодействие, работа с оболочкой и др. Интересно краткое и доступное введение в технологию COM, причем приведены исходные тексты программ, удачно иллюстрирующие описываемые понятия.)
-
Круглински Д., Уингоу С., Шеферд Дж. Программирование на Microsoft Visual C++ 6.0 для профессионалов. СПб: Питер, 2000. (Книга, напоминающая по стилю изложения пособие для самостоятельной подготовки. Подробная энциклопедия приемов практического программирования в Visual C++ и MFC.)
-
Пройдаков Э.М., Теплицкий Л.А. Англо-русский словарь по вычислительной технике, Интернету и программированию. М.: "Русская Редакция", 2000. (Толковый англо-русский словарь. В данном курсе на CD-ROM приведен перечень используемых терминов, сформированный в основном на основе этого словаря.)
-
Рихтер Дж. Windows для профессионалов: создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows. СПб: Питер, 2001. (Очень известная книга, в которой описаны различные вопросы программирования для 32-разрядных версий Windows 95/NT/2000 на уровне API.)
-
Тихомиров Ю.В. Самоучитель MFC. СПб: БХВ – Санкт-Петербург, 2000. (Подробное руководство начального уровня по библиотеке MFC, в основном имеющее справочный характер.)
Учебно-методическое издание
А.А. Богуславский, С.М. Соколов
Основы программирования на языке Си++
В 4-х частях.
(для студентов физико-математических факультетов
педагогических институтов)
Компьютерная верстка Богуславский А.А.
Технический редактор Пономарева В.В.
Сдано в набор 12.04.2002 Подписано в печать 16.04.2002
Формат 60х84х1/16 Бумага офсетная
Печ. л. 20,5 Учетно-изд.л. ____ Тираж 100
Лицензия ИД №06076 от 19.10.2001
140410 г.Коломна, Моск.обл., ул.Зеленая, 30. Коломенский государственный педагогический институт.
|