Дипломированных специалистов «Информатика и вычислительная техника»



Download 12,06 Mb.
Pdf ko'rish
bet223/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   219   220   221   222   223   224   225   226   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Меню в Windows-приложениях
Меню в системе Windows являются, пожалуй, самым распространенным элемен-
том пользовательского интерфейса. Мы не будем особенно вдаваться в детали раз-


Углубленное программирование на ассемблере для Win32 407
работки приложения с меню, так как это уже делалось при рассмотрении каркас-
ного приложения. Содержание этого процесса стандартное, поэтому мы остано-
вимся только на специфических моментах его реализации при разработке прило-
жения на ассемблере. Для того чтобы включить меню в приложение, необходимо
реализовать следующую последовательность шагов.
1. Разработка сценария меню. Перед тем как приступить к процессу включения
меню в конкретное приложение, разработаем его логическую схему. Этот шаг
необходим для того, чтобы уже на стадии проектирования обеспечить эргоно-
мические свойства приложения. Ведь меню — это один из немногих элементов
с которым пользователь вашего приложения будет постоянно иметь
дело. Поэтому схема меню должна иметь наглядную иерархическую структуру
с логически увязанными между собой пунктами, что поможет пользователю
эффективно задействовать все возможности приложения. Для того чтобы вес-
ти предметный разговор, поставим себе задачу разработать для окна нашего
приложения главное меню. При этом мы исследуем возможности вывода в окно
приложения текста и графики, а также покажем способы решения общих про-
блем, связанных с разработкой приложения. Наше меню будет довольно про-
стым и состоять из трех пунктов: Текст, Графика и 0 приложении, — причем пер-
вые два пункта будут открывать доступ к подменю. Иерархическая структура
меню представлена на рис. 16.2.
О
-
— DrawText
— Примитивы
Отрезок
Прямоугольник
— Эффекты
Павлин
Кружева
Рис.
Иерархическая структура меню
2. Описание схемы меню в файле ресурсов. Для выполнения этого этапа требуют-
ся специальные операторы. В нашем случае файл ресурсов будет выглядеть
следующим образом:
файла
M E N U DISCARDABLE
{
POPUP
{
IDM_DRAWTEXT
MENUITEM
}
POPUP
{
POPUP
{
MENUITEM
MENUITEM
POPUP


408 Глава
Создание Windows-приложений на ассемблере
}
}
MENUITEM
IDM_ABOUT
}
3. Составление текста включаемого файла, необходимого для компиляции ресурс-
ного файла. В нашем случае файл называется
и выглядит следующим
образом:
MYMENU 999
101
102
103
IDM_PEACOCK 104
105
106
В этом файле идентификаторам пунктов меню назначаются константы, кото-
рые впоследствии будут передаваться в оконную процедуру в
слове
параметра wParam сообщения
что имени самого меню
также назначена константа. К этому моменту мы вернемся чуть позже.
4. Компиляция ресурсного файла. Для этого используется утилита brc32.exe:
[ключи ...]
Если утилита заканчивает свою работу нормально, то создается файл с расши-
рением
В случае, если утилита обнаруживает ошибки в исход-
ном ресурсном файле, она выдает на экран соответствующие диагностические
сообщения. Для удобства работы с ними их можно записать в файл, перенапра-
вив вывод сообщений с экрана в файл, используя оператор командной строки
[ключи ...]
>
например, так:
brc32
> р
5. Подключение меню на стадии регистрации того окна приложения, для работы
с которым оно будет использоваться. Для этого существуют два основных спо-
соба:
D первый способ — поместить в поле
экземпляра структуры
WNDCLASS (строка 101 листинга 16.4) указатель на поле, содержащее имя
меню:
menu db "MYMENU"
ptr
offset menu
D второй способ — назначить ресурсу меню символическую константу, кото-
рая расположена в поле имени оператора
файла ресурсов:
56 M E N U D I S C A R D A B L E ;оператор из файла ресурсов


Углубленное программирование на ассемблере для Win32 409
Чтобы использовать упомянутую на
шаге символическую констан-
ту, необходимо вставить в файлы, из которых собирается приложение, дополни-
тельные строки:
Файл ресурсов:
MYMENU
Файл
tfdefine MYMENU 56
si Файл menu.inc:
MYMENU equ 56
И Строка 101 из листинга 16.4 должна выглядеть так:
m o v
p t r
M Y M E N U
Или так:
mov dword ptr
56
Вторым способом мы фактически смоделировали макрос
из-
вестный Windows-программистам, пишущим приложения на языке C/C++.
После внесения всех изменений в верхней части окна появится строка меню.
Далее необходимо в оконную функцию включить команды, реализующие реак-
цию на выбор пунктов этого меню. Эта информация передается в младшем слове
поля wParam сообщения WM_COMMAND. В листинге 16.7 приведен измененный текст
каркасного приложения, дополненный меню.
Листинг
Пример приложения с использованием меню
<1>
приложения для W i n 3 2 с использованием меню
<2>
. 3 8 6
<3> locals
применение локальных меток в программе
<4>
flat,
;модель памяти flat,
<5>
- передача параметров в стиле С (справа
<6>
процедура чистит за собой стек
<7> include
файл с описаниями базовых структур
;и констант Win32
<8> include menu.inc
файл с определением имен
меню
<9> ;0бъявление внешними используемых в данной программе
;функций Win32
<10> extrn
< . . . >
<37> extrn
<38> ;объявление оконной функции объектом,
за пределами данного кода
<39> public WindowProc
<41> hwnd dd 0
<42>
dd 0
<43>
OSVERSIONINFO 
<44> wcl WNDCLASSEX 
<45> message MSG 
<46> ps PAINTSTRUCT 
<47>
RECT
<48>
db
0
<49> szTitleName db
приложение Win32 на
0
<50>
db
Ну как вам процесс разработки приложения
на
<51>
$-MesWindow продолжение


 Глава
Создание Windows-приложений на ассемблере
Листинг
 (продолжение)
<52>
db
0
<53>
db
0
<54>
db
0
<55>
<56> start proc near
<57> ;точка входа в программу:
<58>
стартового кода
<59>
<60>
55-72 листинга 16.4
<62> ;конец стартового кода
<63>
<64>

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   219   220   221   222   223   224   225   226   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish