Создать меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu
Категория реферата: Рефераты по информатике, программированию
Теги реферата: скачать ответы, quality assurance design patterns системный анализ
Добавил(а) на сайт: Gref.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Постановка задачи
Наиболее очевидным средством управления приложением является меню. Строка меню выводится на экран непосредственно под строкой заголовка. Это меню называется главным. Выбор элемента меню влечет за собой выдачу приложению сообщения WM_COMMAND, содержащего идентификатор пункта меню. Идентификаторы анализируются в оконной процедуре приложения, что обеспечивает соответствующую реакцию на полученное сообщение. Каждый пункт меню определяется тремя характеристиками. Первая определяет то, что будет отображаться в данном пункте меню – это либо строка текста, либо картинка. Вторая характеристика определяет либо константу, посылаемую оконной процедуре в сообщении WM_COMMAND, либо всплывающее меню, которое выводится на экран, когда пользователь выбирает данный пункт меню. Третья характеристика указывает, является ли данный пункт меню разрешенным (enabled), запрешенным (disabled), недоступным (grayed) или помеченным (checked). Эта характеристика пункта меню не является обязательной.
Меню можно создать тремя способами. Можно определить меню в файле описания ресурсов, создать меню без файла описания ресурсов непосредственно в программе с помощью функций CreatMenu, AppendMenu и InsertMenu или с помощью функции LoadMenuIndirect, создав предварительно структуру MENUITEMPLATE. Наиболее простым и понятным при программировании под Windows95 на языке ассемблера является определение меню в файле описания ресурсов с помощью любого текстового редактора.
Моя задача заключается в создание меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu. Одним из средств создания меню без использования файла описания ресурсов является функции CreateMenu с последующим добавлением необходимого числа пунктов с помощью функции AppendMenu.
Создание меню без описания ресурсов с помощью функций CreateMenu и CreatePopupMenu
Windows-приложение на ассемблере содержит один сегмент данных .data и один сегмент кода .code. В программе использовано 20 функций API. Параметры этим функциям передаются через стек, результат возвращается в регистре ЕАХ.
Директива mode1 задает плоскую модель памяти (flat) и стиль передачи параметров при входе в процедуры программы и выходе из них (stdcall). Модель памяти flat обозначает плоскую модель памяти. В соответствии с плоской моделью памяти компилятор создает программу, которая содержит 32-битовый сегмент для данных и кода программы. Указание этой модели памяти заставляет компоновщик создать исполняемый файл с расширением .exe.
Параметр stdcall определяет порядок передачи параметров через стек справа налево.
Директива include включае в программу файл win32.inc.
Функции Win32 API, используемые в программе должны быть объявлены с помощью директивы extrn для того, чтобы компилятор мог сгенерировать правильный код.
При создании окна приложения с помощью CreateMenu получаем дескриптор меню и используем его в качестве одного из параметров функций CreateWindowExA. Затем с помощью функции CreatePopupMenu получаем дескриптор выпадающего меню и вызовом AppendMenu определяем все пункты наших меню.
Результат работы программы приведен на Рис.1.
Текст программы
p386 ; эта директива разрешает транслятору обрабатывать команды
; процессора i386
jumps ; транслятор автоматически преобразует команду
;условной
; передачи управления в комбинацию условной и безусловной
; команд если условная команда в силу ограниченности
; области своего действия ;не обеспечивает передачу
; управления по нужному адресу
model flat, STDCALL ; выбирается модель памяти для 32- разрядного
; программирования и правила передачи
; параметров функциям STDCALL, далее
; действующие по умолчанию
Рекомендуем скачать другие рефераты по теме: экзамен, контрольная работа 10 класс.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата