Создание меню

Лабораторная работа №4

«Создание меню. Диалоговые окна: работа с кнопками и текстовыми полями в Visual C++»

Указания к выполнению лабораторной работы № 6

Создание меню

Первая программа этой лабораторной работы будет простой. Она добавит в меню File новую команду Print Welcome. Когда пользователь выберет ее, в клиентской области окна должен появиться текст «Добро пожаловать в меню!»

1.1. Воспользуемся AppWizard и создадим программу с именем menus с однодокументным интерфейсом (SDI).

1.2. С помощью редактора меню Visual C++ включим новую команду в меню File. Чтобы запустить редактор меню перейдите на вкладку ResourseView в окне просмотра. Откроется перечень ресурсов программы menus. Найдите в списке строку Menu и откройте ее. Дважды щелкните на строке IDR_MAINFRAME – это приведет к запуску редактора меню (рис. 1).

Рис. 1. Редактор меню Visual C++

Так как мы собираемся добавить в меню новую команду Print Welcome, щелкните на меню File, потом на Print Preview и нажмите клавишу Insert. После этого в меню появится новая команда. Дважды щелкните на ней – откроется диалоговое окно Menu Item Properties (рис. 2), содержащее свойства команды.

Рис. 2.

Занесите в поле Caption строку Print Welcome и закройте окно. Новой команде автоматически присваивается идентификатор ID_FILE_PRINTWELCOME. Новая команда внесена в меню. Закройте редактор меню. Следующим шагом станет подключение команды к коду программы, чтобы стало возможным обрабатывать ее вызов из меню.

1.3. ClassWizard поможет подключить команду меню к обработчику, который будет запускаться при ее вызове из меню. Откройте окно ClassWizard (рис.3).

Рис. 3. Подключение команды меню к методу в программе на Visual C++.

Идентификатор новой команды ID_FILE_PRINTWELCOM уже присутствует в списке Object IDs. Проследите, чтобы в списке Class name был выбран класс виды CMenusView. Выделите строку ID_FILE_PRINTWELCOM в списке Object IDs, затем щелкните на строке Command в списке Messages. ClassWizard предложит присвоить обработчику имя OnFilePrintWelcome() – нажмите кнопку Ок. После этого новый метод появится в списке Member functions окна ClassWizard.

1.4. Дважды щелкните на строке OnFilePrintWelcome() в списке Member functions, и в окне справа появится код метода:

void CMenusView::OnFilePrintwelcome()

{

// TODO: Add your command handler code here

}

Этот метод будет вызываться при выполнении пользователем команды Print Welcome, поэтому в него следует поместить соответствующий код. В нашем примере при выполнении команды должна выводиться строка «Добро пожаловать в меню!», поэтому выделим место для хранения этой строки:

public:

virtual ~CMenusDoc();

CString StringData;

В конструкторе документа StringData объект будет инициализироваться пустой строкой:

CMenusDoc::CMenusDoc()

{

StringData = "";

}

Далее в методе OnFilePrintWelcome(), принадлежащему объекту вида, получим указатель pDoc на объект документа, занесем в объект StringData строку «Добро пожаловать в меню!» и отобразим ее в окне:

void CMenusView::OnFilePrintwelcome()

{

CMenusDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDoc->StringData = "Добро пожаловать в меню!";

Invalidate();

}

1.5. Добавим в метод OnDraw() код для вывода строки:

void CMenusView::OnDraw(CDC* pDC)

{

CMenusDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->TextOut(0, 0, pDoc->StringData);

}

Запустите программу, результат ее работы показан на рис. 4.

Рис. 4

Разобравшись с основами, попробуем создать новое меню, заблокировать его команды, добавим в программу подменю, клавиши ускоренного вызова, организуем вызов справочной информации в строке состояния, научимся определять акселераторы.

1.6. Создадим при помощи AppWizard SDI-программу с именем fullmenus. Откройте ее ресурс меню, IDR_MAINFRAME, в редакторе меню (рис. 5).

Рис. 5

Начнем с добавления меню Demo. Оно должно располагаться между меню File и Edit. Выделим меню Edit в редакторе и нажмем клавишу Insert. В строке появится новое меню, дважды щелкним на нем и присвоим ему имя Demo в окне Menu Item Properties. В строке появится меню Demo (рис. 5).

1.7. Теперь мы должны добавить в меню Demo команды. Редактор меню уже включил в него пустую команду – щелкните на ней и дайте ей имя Grayed (рис. 6).

Рис. 6

Редактор автоматически присваивает ей идентификатор ID_DEMO_GRAYED. Эта команда будет заблокированной, то есть недоступной для пользователя. Аналогичным образом добавьте команды Checked и Submenus. Достаточно дать командам эти имена, и редактор меню автоматически присвоит им нужные идентификаторы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: