Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том1)" -> 104

Visual С++ 6. Полное руководство: В 2 т.(том1) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 98 99 100 101 102 103 < 104 > 105 106 107 108 109 110 .. 204 >> Следующая

I- Ol Menu
¦• ft IDR.MAINFRAME
В редакторе меню сделайте следующее.
1. Выполните двойной щелчок в пустом поле на правом крае строки меню. Редактор меню откроет диалоговое окно Menu Item Properties.
2. В поле Caption введите &Edit. После этого в строке меню появится меню Edit. Обратите внимание: при создании ниспадающего меню идентификатор не вводится. Идентификаторы присваиваются только командам меню.
3. С помощью мыши перетащите меню Edit влево таким образом, чтобы оно разместилось между меню File и Help.
4. Выполните двойной щелчок на пустом прямоугольнике внутри меню Edit (под заголовком), чтобы снова открыть диалоговое окно Menu Item Properties для определения новых команд меню.
5. В поле ID введите id_edit_undo, а в Caption - &undo\tCtrl+z. Теперь в меню Edit появится команда Undo.
6. Выполните двойной щелчок на пустом поле внизу меню Edit (под командой Undo) и в диалоговом окне Menu Item Properties отметьте опцию Separator. Под командой Undo будет вставлен разделитель.
7. Выполните двойной щелчок на пустом поле внизу меню Edit, затем введите в поле ID значение id_edit_CLEAR_all, а в Caption - sDelete All. В меню добавится команда Delete All. Теперь меню Edit завершено (рис. 11.1).
8. Закройте окно редактора меню и сохраните результаты, выбрав команду Save All в меню File или щелкнув на кнопке Save All панели инструментов Standard.
S MiniDraw .с IDR_MAIN FRAME (Menu) ИИЕ1
№ » Mi "l Undo ГАМ! QahwAl
r.":,:::,:::..::.:.:::.;:^i

Рис. ii.i. Сформированное меню Edit в редакторе меню Developer Studio
Для команды Undo не нужно определять комбинацию клавиш Ctrl+Z, так как мастер АррWizard определил ее при первичной генерации кода исходной программы. Кроме того, мастер назначил для команды Undo комбинацию клавиш Alt+Backspace, обычную для ранних графических приложений.
Примечание
При проектировании меню с помощью редактора можно создавать каскадные меню, размещать их команды в столбцах и задавать пунктам некоторые начальные установки (например, можно сделать опцию выбранной по умолчанию или отметить команду меню как недоступную). Информация об использовании редактора меню для реализации всех особенностей меню содержится в следующих разделах справочной системы: Visual C++ Documentation, Using Visual C++, Visual C++ User's Guide, Resource Editors, Menu Editor.
Удаление данных документа_
Каждый раз, когда пользователь выбирает в меню File команду New, MFC (а именно, функция OnFileNew класса CWinApp) вызывает виртуальную функцию CDocument:: DeleteContents для удаления содержимого текущего документа перед инициализацией нового. В последующих версиях программы MiniDraw эта функция будет также вызываться перед открытием существующего документа.
Чтобы удалить данные, сохраняемые этим классом, необходимо написать новую версию этой функции в виде члена класса документа.
Переопределение виртуальной функции является общераспространенным и эффективным способом настройки MFC. Чтобы сгенерировать объявление и оболочку функции DeleteContents, воспользуйтесь мастером ClassWizard.
1. Выберите в меню View команду ClassWizard... или нажмите Ctrl+W. Появится диалоговое окно мастера ClassWizard.
2. Откройте вкладку Message Maps, позволяющую определить функции-члены.
3. В списке Class Name выберите CMiniDrawDoc. Это имя класса выбирается потому, что необходимо определить виртуальную функцию, принадлежащую классу документа.
4. В списке Object IDs выберите пункт CMiniDrawDoc, что приведет к отображению в списке Messages имен виртуальных функций, определенных в родительских классах. Каждую из этих функций можно переопределить. Все пункты списка Messages (кроме идентификаторов сообщений, начинающихся с wm_) — это виртуальные функции (пусть имя списка Messages (сообщения) не вводит вас в заблуждение). Обратите внимание: при выборе имени функции в нижней части диалогового окна мастера появляется ее описание.
5. В списке Messages выберите пункт DeleteContents и щелкните на Add Function. Заключительное диалоговое окно мастера показано на рис. 11.2.
6. Щелкните на кнопке Edit Code. Мастер AppWizard вызовет оболочку функции DeleteContents, сгенерированную внутри файла MiniDrawDoc.cpp.
MFC ClassWizard
Message Maps J Member Variables Bejeet
Automation | ActiveXEvents | Class Info Class name:
ijMiniDraw __§:. JCMmiDtawOoc
СЛ. \МгЛг«ЛМгЛ|аиОи.п.С\ ЛМпСилОос cpp ОДесфп' Messaflet:
ID APP.AB0UT ID_APP EXIT ID_EDlf*_CLEAR ALL ID_EDIT_COFY ID_EDIT CUT ID_EDITJ>ASTE
Member jjnctionj
H C'AleCofitent:
v OnN ewD ocument
V Serialize
Dascrvtioft Deietes Hie documents data wthout dectroyrq the document
CanCloseFrame *.j
DeleteContents ШК1
Ge(Fif4tViewPo«ition
GetNextView
0 nChangedViewList
GnCtaseDocument
OnCmoWsg
AddCto«
Qelate Function
Г"
OK
Cancel
Рис. 11.2. Заключительное диалоговое окно мастера ClassWizard при переопределении виртуальной функции DeleteContents
Теперь добавьте следующие выделенные полужирным шрифтом строки в функцию DeleteContents, сгенерированную мастером ClassWizaгd.
Предыдущая << 1 .. 98 99 100 101 102 103 < 104 > 105 106 107 108 109 110 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100