Кафедра микропроцессорной техники — КиберПедия 

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Кафедра микропроцессорной техники

2020-04-01 82
Кафедра микропроцессорной техники 0.00 из 5.00 0 оценок
Заказать работу

Кафедра микропроцессорной техники

 

Курсовая работа

 

ТЕМА: Создать меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu.

 

 

Пояснительная записка

 

 

Руководитель                                      В.П.Кулюкин

 

 

Слушатель гр. СП-923                         Г.Г.

 

Г.

Содержание

Введение...................................................................................................... 3

Постановка задачи...................................................................................... 5

Создание меню без описания ресурсов с помощью функций CreateMenu и CreatePopupMenu....................................................................................... 6

Текст программы........................................................................................ 7

Заключение............................................................................................... 13

Библиографический список...................................................................... 14

Введение

Ассемблер- один из самых старых из существующих сегодня языков программирования.Когда-то это был самый основной язык, без которого нельзя было заставить компьютер сделать что-либо полезное.

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

Если коротко, то ассемблер- это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами машинногшо языка.

Отсюда понятно, что несмотря на общее название, язык Ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на Ассемблере, и идей, отражением которых этот язык является.

Известно, что к программированию на языке ассемблера обращаются тогда, когда от программы требуется максимальная скорость исполнения, когда необходимо обеспечить взаимодействие с нестандартными внешними устройствами, когда необходимо полностью использовать возможности процессора и операционной системы. На языке ассемблера можно запрограммировать все, на что способна соответствующая вычислительная машина, то есть ассемблер является машинно-ориентированным языком программирования. Программируя на ассемблере иногда в силу привычки, иногда в силу необходимости, особенно при организации интерфейса пользователя, приходится многократно программировать одни и те же элементарные задачи. В языках высокого уровня эта проблема решена применением стандартных функций и процедур. В ассемблере эта проблема могла бы быть решена за счет библиотек стандартных функций как на уровне исходных текстов, так и объектных кодов, но такие библиотеки не стандартизованы и не распространяются вместе с компиляторами. С появлением Windows 95 ситуация несколько изменилась. Создание приложений на языке ассемблера представляет собой весьма сложную задачу в связи с высоким уровнем интеграции прикладной программы и операционной системы, но теперь нет необходимости многократно решать проблемы пользовательского интерфейса и управления исполнением команд на уровне машинных команд [I]. Они решаются теперь с помощью операционной системы за счет обращения к функциям интерфейса прикладного программирования – Application Programming Interface (API).

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

rc. Файл ресурсов после обработки компилятора ресурсов и получения двоичного файла с расширением res с помощью компоновщика объединяется с исполняемым файлом.

 

 


Постановка задачи

   Наиболее очевидным средством управления приложением является меню. Строка меню выводится на экран непосредственно под строкой заголовка. Это меню называется главным. Выбор элемента меню влечет за собой выдачу приложению сообщения WM_COMMAND, содержащего идентификатор пункта меню. Идентификаторы анализируются в оконной процедуре приложения, что обеспечивает соответствующую реакцию на полученное сообщение. Каждый пункт меню определяется тремя характеристиками. Первая определяет то, что будет отображаться в данном пункте меню – это либо строка текста, либо картинка. Вторая характеристика определяет либо константу, посылаемую оконной процедуре в сообщении WM_COMMAND, либо всплывающее меню, которое выводится на экран, когда пользователь выбирает данный пункт меню. Третья характеристика указывает, является ли данный пункт меню разрешенным (enabled), запрешенным (disabled), недоступным (grayed) или помеченным (checked). Эта характеристика пункта меню не является обязательной.

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

Моя задача заключается в создание меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu. Одним из средств создания меню без использования файла описания ресурсов является функции CreateMenu с последующим добавлением необходимого числа пунктов с помощью функции AppendMenu.

 

Текст программы

1. p386 ; эта директива разрешает транслятору обрабатывать команды

               ; процессора i386

2. jumps        ;транслятор автоматически преобразует команду

                                      ;условной

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

               ; команд если условная команда в силу ограниченности

               ; области своего действия;не обеспечивает передачу

               ; управления по нужному адресу

3. model flat, STDCALL; выбирается модель памяти для 32- разрядного

                                          ; программирования и правила передачи

                                        ; параметров функциям STDCALL, далее

                                        ; действующие по умолчанию

4. include win32.inc; файл описания структур и констант

5. L equ <LARGE>; последовательности символов LARGE,

                                   ; являющейся именем операции, объявляющей

                                   ; следующий за ней операнд 32-разрядным,

                                    ; присваивается имя L

6. IDM_QUIT           equ      100

7. IDM_ABOUT                equ 101

8. MF_ENABLED         equ          0

9. MF_POPUP            equ      10h

10. MF_OWNERDRAW equ     100h

;Функции Win32 API, используемые программой

Newhwnd     dd 0

33.        lppaint     PAINTSTRUCT <?>

34.        msg         MSGSTRUCT <?>

35.        wc          WNDCLASS <?>

HInst        dd    0

Fl                dw 0

SzAppName db 'Сообщение',0

HMenu                  dd 0

Hsubmenu    dd 0

Item1         db ' Меню ',0

Item2         db ' Выход ',0

Item3         db 'Возврат',0

47.       .code             ; переопределенное имя, означающее начало

                                             ; сегмента кода

48.        start:

Push L 0

Call GetModuleHandleA

51.        mov [hInst], eax

;инициализация структуры WndClass

 

52. mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW +

                 CS_GLOBALCLASS

53.        mov [wc.clsLpfnWndProc], offset WndProc

54.        mov [wc.clsCbClsExtra], 0

55.        mov [wc.clsCbWndExtra], 0

56.        mov eax, [hInst]

57.        mov [wc.clsHInstance], eax

58.        push L IDI_APPLICATION

Push L 0

Call LoadIconA

61.        mov [wc.clsHIcon], eax

62.        push L IDC_ARROW

Push L 0

Call LoadCursorA

65.        mov [wc.clsHCursor], eax

66.        mov [wc.clsHbrBackground], COLOR_WINDOW + 1

67.        mov dword ptr [wc.clsLpszMenuName],0

68.        mov  dword ptr [wc.clsLpszClassName], offset szClassName

Push offset wc

Call RegisterClassA

Call CreateMenu

72.        mov [hMenu],eax

Push L 0                ; lpParam

74.        push [hInst]            ; hInstance

75.        push [hMenu]             ; menu

Push L 0                ; parent hwnd

77.        push L CW_USEDEFAULT    ; height

78.        push L CW_USEDEFAULT    ; width

79.        push L CW_USEDEFAULT    ; y

80.        push L CW_USEDEFAULT    ; x

81.        push L WS_OVERLAPPEDWINDOW; Style

Push L 0                ; extra style

Call CreateWindowExA

86.        mov [newhwnd], eax

Call CreatePopupMenu

88.        mov [hsubmenu], eax

Push offset item2

90.        push L IDM_QUIT

Push 0

Push eax

Call AppendMenuA

Push offset item3

95.        push L IDM_ABOUT

Push 0

97.        push [hsubmenu];eax

Call AppendMenuA

Push     offset item1

100. push [hsubmenu]

101. push MF_POPUP

102. push [hMenu]

Call AppendMenuA

Nop

105. push L SW_SHOWNORMAL

106. push [newhwnd]

Call ShowWindow

108. push [newhwnd]

Call UpdateWindow

110. push [newhwnd]

Call DrawMenuBar

112. msg_loop:

Push L 0

Push L 0

Push L 0

Push offset msg

Call GetMessageA

Cmp ax, 0

119. je     end_loop

Push offset msg

Call TranslateMessage

Push offset msg

Call DispatchMessageA

124. jmp msg_loop

125. end_loop:

126. push [msg.msWPARAM]

Call ExitProcess

128.;---- Оконная процедура ----

129. WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\

Wparam:DWORD, lparam:DWORD

LOCAL hDC:DWORD

132. cmp [wmsg], WM_DESTROY

Je wmdestroy

134. cmp [wmsg], WM_SIZE

Je wmsize

136. cmp [wmsg], WM_CREATE

Je wmcreate

138. cmp [wmsg],WM_PAINT

Je wmpaint

140.;**************************************

141. cmp [wmsg],WM_COMMAND

Je    wmcommand

143.;**************************************

Jmp defwndproc

145. wmcommand:

Mov eax,lparam

Cmp ax,0

Jne  m1

Mov eax,wparam

150. cmp ax,IDM_ABOUT

Jne  m2

152. call MessageBoxA,0,offset szHello,offset szAppName,MB_OK

Jmp m1

154. m2: cmp ax,IDM_QUIT

Jne  m1

Push 0

Call PostQuitMessage

M1: mov eax,0

Jmp finish

160. wmcreate:

Mov eax, 0

Jmp finish

163. defwndproc:

164. push [lparam]

165. push [wparam]

166. push [wmsg]

167. push [hwnd]

Call DefWindowProcA

Jmp finish

170. wmdestroy:

Push L    0

Call PostQuitMessage

Mov eax, 0

Jmp finish

175. wmsize:

Mov eax, 0

Jmp finish

178. wmpaint:

Push offset lppaint

180. push [hwnd]

Call BeginPaint

182. mov [hDC],eax

Push offset lppaint

184. push [hwnd]

Call EndPaint

Mov eax,0

Jmp finish

188. finish:

Ret

WndProc     endp

191.;---------------------------------

Public WndProc

193. end start                       ; конец программы

рис1. Окно программы


Заключение

 

Моя задача состояла в создании программыбез файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu. Это приложение не выполняет никакой полезной работы и служит для демонстрации некоторых возможностей системы в организации интерфейса пользователя.

Библиографический список

1. Зубков С.В. Assembler. Для DOS Windows и Unix. М.: ДМК, 1999

2. Пустоваров В.И. АССЕМБЛЕР. Программирование и анализ корректности машинных программ.

3. Применение TURBO ASSEMBLER для программирования ПЭВМ. Часть1,2.: Методические указания к лабораторному практикуму по дисциплине: «Системное программное обеспечение» / Составитель В.П.Кулюкин. Екатеринбург: изд. ИПК УГТУ, 2000.

 

 

Кафедра микропроцессорной техники

 

Курсовая работа

 

ТЕМА: Создать меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu.

 

 

Пояснительная записка

 

 

Руководитель                                      В.П.Кулюкин

 

 

Слушатель гр. СП-923                         Г.Г.

 

Г.

Содержание

Введение...................................................................................................... 3

Постановка задачи...................................................................................... 5

Создание меню без описания ресурсов с помощью функций CreateMenu и CreatePopupMenu....................................................................................... 6

Текст программы........................................................................................ 7

Заключение............................................................................................... 13

Библиографический список...................................................................... 14

Введение

Ассемблер- один из самых старых из существующих сегодня языков программирования.Когда-то это был самый основной язык, без которого нельзя было заставить компьютер сделать что-либо полезное.

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

Если коротко, то ассемблер- это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами машинногшо языка.

Отсюда понятно, что несмотря на общее название, язык Ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на Ассемблере, и идей, отражением которых этот язык является.

Известно, что к программированию на языке ассемблера обращаются тогда, когда от программы требуется максимальная скорость исполнения, когда необходимо обеспечить взаимодействие с нестандартными внешними устройствами, когда необходимо полностью использовать возможности процессора и операционной системы. На языке ассемблера можно запрограммировать все, на что способна соответствующая вычислительная машина, то есть ассемблер является машинно-ориентированным языком программирования. Программируя на ассемблере иногда в силу привычки, иногда в силу необходимости, особенно при организации интерфейса пользователя, приходится многократно программировать одни и те же элементарные задачи. В языках высокого уровня эта проблема решена применением стандартных функций и процедур. В ассемблере эта проблема могла бы быть решена за счет библиотек стандартных функций как на уровне исходных текстов, так и объектных кодов, но такие библиотеки не стандартизованы и не распространяются вместе с компиляторами. С появлением Windows 95 ситуация несколько изменилась. Создание приложений на языке ассемблера представляет собой весьма сложную задачу в связи с высоким уровнем интеграции прикладной программы и операционной системы, но теперь нет необходимости многократно решать проблемы пользовательского интерфейса и управления исполнением команд на уровне машинных команд [I]. Они решаются теперь с помощью операционной системы за счет обращения к функциям интерфейса прикладного программирования – Application Programming Interface (API).

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

rc. Файл ресурсов после обработки компилятора ресурсов и получения двоичного файла с расширением res с помощью компоновщика объединяется с исполняемым файлом.

 

 


Постановка задачи

   Наиболее очевидным средством управления приложением является меню. Строка меню выводится на экран непосредственно под строкой заголовка. Это меню называется главным. Выбор элемента меню влечет за собой выдачу приложению сообщения WM_COMMAND, содержащего идентификатор пункта меню. Идентификаторы анализируются в оконной процедуре приложения, что обеспечивает соответствующую реакцию на полученное сообщение. Каждый пункт меню определяется тремя характеристиками. Первая определяет то, что будет отображаться в данном пункте меню – это либо строка текста, либо картинка. Вторая характеристика определяет либо константу, посылаемую оконной процедуре в сообщении WM_COMMAND, либо всплывающее меню, которое выводится на экран, когда пользователь выбирает данный пункт меню. Третья характеристика указывает, является ли данный пункт меню разрешенным (enabled), запрешенным (disabled), недоступным (grayed) или помеченным (checked). Эта характеристика пункта меню не является обязательной.

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

Моя задача заключается в создание меню без файла описания ресурсов с помощью функций CreateMenu и CreatePopupMenu. Одним из средств создания меню без использования файла описания ресурсов является функции CreateMenu с последующим добавлением необходимого числа пунктов с помощью функции AppendMenu.

 


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.122 с.