Реферат по предмету "Компьютеры и цифровые устройства"


Создание меню без файла описания ресурсов на основе функции LoadMenuIndirect

Министерство образования Российской ФедерацииИнститут переподготовки кадровУральского государственного техническогоуниверситетаКафедра микропроцессорной техникиКурсовая работаТЕМА Создание меню без файла описания ресурсов наоснове функции LoadMenuIndirect.Руководитель доц к.т.н. В.П.КулюкинСлушатель гр. СП-923 И.Г.г.Нягань2001г.Введение.Известно, что кпрограммированию на языке ассемблера обращаются тогда,

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

пользователя, приходится многократно программировать одни и те жеэлементарные задачи. В языках высокого уровня эта проблема решена применениемстандартных функций и процедур. В ассемблере эта проблема могла бы быть решеназа счет библиотек стандартных функций как на уровне исходных текстов, так иобъектных кодов, но такие библиотеки не стандартизованы и не распространяютсявместе с компиляторами. С появлением Windows95 ситуация несколько изменилась.

Создание приложений на языке ассемблерапредставляет собой весьма сложную задачу в связи с высоким уровнем интеграцииприкладной программы и операционной системы, но теперь нет необходимостимногократно решать проблемы пользовательского интерфейса и управленияисполнением команд на уровне машинных команд I . Они решаются теперь с помощью операционной системыза счет обращения к функциям интерфейса прикладного программирования Application Programming Interface

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

Файл ресурсов после обработкикомпилятора ресурсов и получения двоичного файла с расширением res с помощью компоновщика объединяется с исполняемымфайлом.Общая часть. Наиболее очевидным средствомуправления приложением является меню. Строкаа меню выводится на экраннепосредственно под строкой заголовка. Это меню называется главным. Выборэлемента меню влечет за собой выдачу приложения сообщения

WD COMMAND,содержащего идентификатор пункта меню. Идентификаторы анализируются в оконнойпроцедуре приложения, что обеспечивает соответствующую реакцию на полученноесообщение. Каждый пунк меню определяется тремя характеристиками. Перваяопределяет то, что будет отображаться вданном пункте меню это либо строка текста, либо картинка. Втораяхарактеристика определяет либо константу, посылаемую оконной процедуресообщении

WM COMMAND, либо всплывающее меню, которое выводится на экран,когда пользователь выбирает данный пункт меню. Третья характеристика указывает,является ли данный пункт меню разрешенным enabled , запрешенным disabled , недоступным grayed или помеченным checked . Эта характеристика пункта меню не являетсяобязательной.Для того, чтобы включить менюв приложение, необходимо реализовать следующую последовательность шагов

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

приложения. Для того,чтобы вести предметный разговор, поставим себе задачу разработать для окнанашего приложения главное меню. При этом мы исследуем возможности вывода в окноприложения текста и графики, а также покажем способы решения общих проблем,связанных с разработкой приложения. Наше меню достаточно простое и состоит изтрех элементов Текст , Графика , О приложении . Иерархическая структура менюпредставлена.

DrawText Примитивы Эффекты Павлин Текст Графика О приложении TextOut Кружева описать схемуменю в файле ресурсов. Для выполнения этого описания используются специальныеоператоры. составить текствключаемого файла, необходимого для компиляции ресурсного файла компилироватьресурсный файл. подключить менюна стадии регистрации того окна приложения, для работы с которым оно будетиспользоваться.

Меню можно создать тремяспособами. Можно определить меню в файле описания ресурсов, создать меню безфайла описания ресурсов непосредственно в программе с помощью функций CreatMenu, AppendMenu и InsertMenu или с помощью функции LoadMenuIndirect, создав предварительно структуру MENUITEMPLATE. Наиболее простым и понятным при программировании подWindows95 на языке ассемблера является определение

меню вфайле описания ресурсов с помощью любого текстового редактора.Основная часть. Моя задача заключается в том,чтобы написать программу на тему Создать меню без файла описания ресурсов наоснове функций LoadMenuIndirect .Одним из средств созданияменю без использования файла описания ресурсов является функция LoadMenuIndirect. Для применения этой функции необходимо создатьшаблон меню, определяемый структурамиMENUITEMTEMPLATEHEADER

и MENUITEMTEMPLATE. Полный шаблон меню состоит из заголовка и хотя бы одного описанияпункта меню. Заголовок структура MENUITEMTEMPLATEHEADER cостоит из двухполей размером в слово. В первом слове содержится номер версии функции. Для Windows NT и Win16 это 0, для Windows95-1. Во втором слове содержится смещение до первойструктуры MENUITEMTEMPLATE. Если междузаголовком и описанием первого пункта меню нет дополнительной информации,

этополе содержит 0.Описания пунктов меню,следущие за заголовком, должны быть выравнены на границе двойного слова.Структура MENUITEMTEMPLATE имеет, какправило, пять полей. Шестое поле имеет смысл для пункта меню, указывающего навсплывающее меню.Вкачестве примера приводится окно с главными и всплывающими меню, созданными спомощью функции LoadMenuIndirect. Программа.p386jumpsmodel flat,STDCALLinclude win32.inc файл описания структур и константL

equ lt LARGE gt IDM QUIT equ 100IDM ABOUT equ 101MF ENABLED equ 0MF POPUP equ 1h Функции Win32 API,используемые программойextrn BeginPaint PROCextrn CreateWindowExA PROCextrn DefWindowProcA PROCextrn DispatchMessageA PROCextrn EndPaint PROCextrn ExitProcess PROCextrn GetMessageA PROCextrn GetModuleHandleA

PROCextrn LoadCursorA PROCextrn LoadIconA PROCextrn RegisterClassA PROCextrn PostQuitMessage PROCextrn ShowWindow PROCextrn TranslateMessage PROCextrn UpdateWindow PROCextrn LoadMenuIndirectA PROCextrn MessageBoxA PROC.datanewhwnd dd 0lppaint PAINTSTRUCT lt ? gt msg MSGSTRUCT lt ? gt wc WNDCLASS lt ? gt hInst dd 0fl dw 0szTitleName db

Это нашеокно ,0szClassName db ASMCLASS32 ,0szHello db Привет! ,0szAppName db Сообщение ,0hMenu dd 0 align 4MenuTemplate dw 1,0 Заголовокменю. 1 - признак структурыдля функции Windows95 align 4 dd 0 типпункта dd 0,MF ENABLED,0 IDM ABOUT dw 81h dw amp , M , e , n , u , 1 ,0 align 4 dd 0,0,0,IDM QUIT dw 0 dw E , amp , x , i , t ,0,0 align 4 dd 0,0,IDM

ABOUT dw 0 dw amp , Q , u , i , t , 1 ,0 align 4 dd 0,0,0 IDM QUIT dw 81h Признаквспл. меню dw Q , u , i , t , 2 ,0,0,0 align 4 dd 0,0,IDM ABOUT dw 0 dw Q , u , i , t , 3 ,0,0 align 4 dd 0,0,IDM QUIT dw 80h dw E , amp , x , i , t ,0,0.codestart push L 0 call GetModuleHandleA mov hInst , eax инициализация структуры

WndClass mov wc.clsStyle , CS HREDRAW CS VREDRAW CS GLOBALCLASS mov wc.clsLpfnWndProc , offset WndProc mov wc.clsCbClsExtra , 0 mov wc.clsCbWndExtra , 0 mov eax, hInst mov wc.clsHInstance , eax push L IDI APPLICATION push L 0 call LoadIconA mov wc.clsHIcon , eax push L IDC ARROW push L 0 call LoadCursorA mov wc.clsHCursor , eax mov wc.clsHbrBackground ,

COLOR WINDOW 1 mov dword ptr wc.clsLpszMenuName ,0 mov dword ptr wc.clsLpszClassName , offsetszClassName push offset wc call RegisterClassA push offset MenuTemplate call LoadMenuIndirectA mov hMenu ,eax push L 0 lpParam push hInst hInstance push hMenu menu push L 0 parent hwnd push L CW USEDEFAULT height push L CW USEDEFAULT width push L CW USEDEFAULT y push L CW

USEDEFAULT x push L WS OVERLAPPEDWINDOW Style push offset szTitleName Title string push offset szClassName Class name push L 0 extra style call CreateWindowExA mov newhwnd , eaxpush L SW SHOWNORMAL push newhwnd call ShowWindow push newhwnd call UpdateWindowmsg loop push L 0 push L 0 push L 0 push offset msg call

GetMessageA cmp ax, 0 je end loop push offset msg call TranslateMessage push offset msg call DispatchMessageA jmp msg loopend loop push msg.msWPARAM call ExitProcess we never get to here Оконная процедура WndProc proc uses ebx edi esi, hwnd DWORD, wmsg DWORD, wparam DWORD, lparam DWORD LOCAL hDC DWORD cmp wmsg , WM DESTROY je wmdestroy cmp wmsg ,

WM SIZE je wmsize cmp wmsg , WM CREATE je wmcreate cmp wmsg ,WM PAINT je wmpaint cmp wmsg ,WM COMMAND je wmcommand jmp defwndprocwmcommand mov eax,lparam cmp ax,0 jne m1 mov eax,wparam cmp ax,IDM ABOUT jne m2 call MessageBoxA,0,offset szHello,offsetszAppName,MB OK jmp m1m2 cmp ax,IDM QUIT jne m1 push 0 call PostQuitMessagem1 mov eax,0 jmp finishwmcreate mov eax,

0 jmp finishdefwndproc push lparam push wparam push wmsg push hwnd call DefWindowProcA jmp finishwmdestroy push L 0 call PostQuitMessage mov eax, 0 jmp finishwmsize mov eax, 0 jmp finishwmpaint push offset lppaint push hwnd call BeginPaint mov hDC ,eaxpush offset lppaint push hwnd call EndPaint mov eax,0 jmp finish finish retWndProc endp public

WndProcend start



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Управление проектом Delphi
Реферат Этапы разработки программ Тестирование и отладка Документирование программ
Реферат Ситуационные концепции менеджмента
Реферат Зарубежный опыт борьбы с организованной преступностью и возможность его применения в современых условиях в РФ
Реферат Информационные технологии в гостинице, на примере гостиницы "Орзу"
Реферат Анемия. Острая, железодефицитная, хроническая анемии
Реферат Максим Багданович
Реферат Система вертикального школьного управления
Реферат Архитектура электронно вычислительных машин
Реферат Four Characters Of Shakespere Essay Research Paper
Реферат Государственное регулирование рынка и цен
Реферат Аппаратура, используемая для очистки атмосферы от промышленных выбросов пыли
Реферат Исторические экскурсы в курсе алгебры 7 класса как средство развития познавательного интереса
Реферат Formula 1 Essay Research Paper Formula 1
Реферат Exemplum Essay Research Paper The Immigrant and