- •Методические указания
- •Оглавление
- •Теоретический материал
- •Введение
- •Типы данных Windows. Типы указателей Windows. Использование памяти
- •Венгерская нотация. Префиксы данных
- •Общая структура Windows-приложений
- •Описание класса (стиля) окна. Структура wndclass
- •Создание (визуализация) окна
- •Сообщения. Схема обработки. Прототипы функций-обработчиков сообщений
- •Ресурсы Windows-приложений
- •Встроенные редакторы ресурсов
- •Средства организации вывода данных
- •Средства организации ввода данных
- •Вывод растровых изображений в Windows-приложениях
- •Автоматические шаблоны (каркасы) windows-приложений (тип empty, simple)
- •Создать шаблон Windows-приложения (тип Empty) и изучить его свойства
- •Модифицировать шаблон
- •Создать шаблон Windows-приложения (тип Simple) и изучить его свойства
- •Типовой шаблон (каркас) windows-приложения (тшп)
- •Изучение свойств типового шаблона
- •Изучить листинг типового шаблона
- •Воспроизвести типовой шаблон
- •Изучить свойства типового шаблона
- •Модификация типового шаблона
- •Изменить интерфейс типового шаблона
- •Добавить строку приветствия в типовой шаблон
- •Использование типового шаблона
- •Организовать вывод данных с применением функций
- •Добавить ресурс - меню
- •Организовать ввод данных с применением меню и пользовательского диалогового окна
- •Автоматический шаблон (каркас) windows-приложения (тип hello)
- •Изучение свойств шаблона (тип Hello)
- •Создать шаблон Windows-приложения (тип Hello)
- •Изучить ресурсы шаблона
- •Изучить свойства шаблона
- •Модификация шаблона (тип Hello)
- •Получить типовой шаблон приложения (тшп) из шаблона (тип Hello)
- •Организовать ввод-вывод числовых данных с применением пользовательского диалогового окна
- •Индивидуальные задания
-
Добавить ресурс - меню
В проект ТШП (WinStandardTemplateMENU), созданный из шаблона Windows-приложения (тип Simple), внести изменения: сконструировать и добавить простейшее меню, настроить его свойства, подключить к приложению. Компилировать. Изучить сгенерированный текст описания меню. Опции режимов меню указаны в [ПРИЛОЖЕНИЕ. ОпцииМеню]. Результаты привести в ОТЧЕТЕ. Примерный вид создаваемого меню показан ниже
При текстовом описании меню могут использоваться два типа операторов: MENUITEM и POPUP. Оператор MENUITEM определяет конечный пункт меню, а оператор POPUP — выпадающее меню, которое может содержать подпункты, также задаваемые с помощью операторов MENUITEM и POPUP. Операторы имеют следующий формат:
MENUITEM "ItemName", MenuID [, Опции ]
POPUP "PopupName" [, Опции ] .
Параметр ItemName задает название пункта меню, например File или Help. MenuID — это уникальное целое значение, идентифицирующее пункт меню. Оно посылается приложению при выборе данного пункта. Обычно ID-значения хранятся в виде констант в библиотечном файле, который затем включается как в программный файл, так и в rc-файл ресурсов. Соответственно параметр PopupName определяет название выпадающего меню.
ПОРЯДОК (СХЕМА) ВЫПОЛНЕНИЯ ЗАДАЧИ.
1. Создать ресурсный файл и подключить его к проекту:
- создать файл описания ресурсов (или просто файл ресурсов *.rc), выполнив ГМ-Project-AddToProject-New-Files, и выбрать тип – Resource Script, а в качестве имени задать <ИмяПриложения.rc>. Если ИмяПриложения – main, то соответственно после создания файла ресурсов *.rc в папке проекта появятся файлы main.rc, resourсe.h;
- подключить файл ресурсов к приложению командой #include "resource.h" ;
- выполнить приложение (меню не появится!).
2. Спроектировать и описать ресурс:
- разработать вид и состав меню. Здесь два пункта: ВВОД - ЦЕЛОЕ, ВЕЩЕСТВЕННОЕ, СТРОКА и ВЫВОД - ЦЕЛОЕ, ВЕЩЕСТВЕННОЕ, СТРОКА;
- добавить новый ресурс-меню в ресурсный файл приложения ГМ-Insert-Resource-Menu;
- создать меню;
- в свойствах меню определить его дескриптор-идентификатор ID (пусть, например, ID = IDR_MENU1);
- выполнить приложение (меню не появится!).
3. Присоединить меню (его имя определено как IDR_MENU1) к приложению:
- в функции WinMain() определить ссылку на меню
wcApp.lpszMenuName = (LPTSTR) IDR_MENU1;
- выполнить приложение - меню визуализируется, но не реагирует на выбор пунктов.
4. Настроить обработку событий – выбор пункта меню (в свойствах пунктов меню найти идентификаторы пунктов, например ID_MENUITEM40001 - ID_MENUITEM40006). Внести изменения в функцию WndProc (…)
LRESULT CALLBACK WndProc (…)
{
HDC hdc;
PAINTSTRUCT ps;
switch (messg)
{
case WM_PAINT:
……………
case WM_DESTROY:
…………….
default:
…………..
}
return 0;
} ,
добавив фрагмент реакции на выбор пунктов меню, например
case WM_COMMAND: // СООБЩЕНИЕ ОТ МЕНЮ
switch (wParam) // КОД СООБЩЕНИЯ – ВЫБРАННЫЙ ПУНКТ МЕНЮ
{
case ID_MENUITEM40001:
MessageBox( hWnd,"Выбран пункт - …","МЕНЮ",MB_OK);
break;
case ID_MENUITEM40002:
MessageBox(hWnd," Выбран пункт - …"," МЕНЮ ",MB_OK);
break;
………………………
default:
return DefWindowProc(hWnd, messg, wParam, lParam);
}
break;
Здесь реакция на выбор пунктов меню состоит в подтверждении сделанного выбора через выполнение соответствующей команды MessageBox. Выполнить приложение – убедиться в корректности работы меню.