Курсовая работа: Вывод на экран текущего каталога в графическом режиме (со скроллингом)

Курсовая работа: Вывод на экран текущего каталога в графическом режиме (со скроллингом)




🛑 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Министерство образования Российской Федерации
Уральского государственного технического университета
На тему: Вывод на экран текущий каталог в графическом режиме (со скролингом)


Ассемблер- один из самых старых из существующих сегодня языков программирования.Когда-то это был самый основной язык, без которого нельзя было заставить компьютер сделать что-либо полезное.
Постепенно ситуация менялась. Появились более удобные средства общения с компьютером. Но в отличии от других языков ассемблер не умирал, более того он немог этого сделать в принципе.
Если коротко, то ассемблер- это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами машинногшо языка.
Отсюда понятно, что несмотря на общее название, язык Ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на Ассемблере, и идей, отражением которых этот язык является.
Windows-приложение на ассемблере содержит один сегмент данных .data и один сегмент кода .code. В программе использовано 28 функций API. Параметры этим функциям передаются через стек, результат возвращается в регистре ЕАХ.
Регистр mode1 задает модуль сегментации (flat) и стиль генерации кода при входе в процедуры программы и выходе из них (stdcall). Модель памяти flat обозначает плоскую модель памяти. В соответствии с этой моделью компилятор создает программу, которая содержит 32-битовый сегмент для данных и кода программы. Указание этой модели памяти заставляет компоновщик создать исполняемый файл с расширением .exe. Параметр stdcall определяет порядок передачи параметров через стек справа налево.
Директива include включае в программу файл win32.inc.
Функции Win32 API, используемые в программе должны быть объявлены с помощью директивы extrn для того, чтобы компилятор мог сгенерировать правильный код.
Строки 35-68 содержат описание сегмента данных, в котором определяются переменные и экземпляры структур, используемые в программе. Для запуска приложения под управлением Windows необходимо выполнить ряд шагов, содержание которых заключается в вызове ряда функций Win32.API:
* Выполнение главной функции, которая выполняет следующие действия;
Запускает цикл обработки сообщений;
Завершает цикл обработки сообщения;
* Организация обработки сообщений в оконной процедуре.
Оконная процедура определяет то, что выводится в рабочую область окна, и то, как окну реагировать на пользовательский ввод.Создание окна выполняется функцией Win32 API CreateWindowEx. Для этого ей нужно передать множество параметров. Для создания окна необходимы 2 шага: сначала определение класса окна, а лишь затем непосредственно его создание.
После выполнения функции CreateWindowExA создается окно, но это пока произойдет только лишь внутри самой Windows, - на экране это новое окно пока еще не отобразится. Для того чтобы созданное окно появилось на экране, применяем функцию ShowWindowA. В качестве параметров этой функции передается дескриптор hWnd окна, которое необходимо отобразить на экране, и константа, задающая начальный вид окна.
Приложение может иметь несколько оконных функций. Их количество определяется количеством классов окон, зарегестрированных в системе функцией Register Class(Ex).
Windows требует, чтобы оконная функция сохраняла значения регистров ebi, edi и esi ,т.к. оконная функция должна быть рекурсивной.По завершении работы оконная функция формирует значения в регистре EAX. Если сообщение обрабатывалось в оконной функции, то в eax необходимо поместить нулевое значение.
Полосы прокрутки - этоэлементы управления, предназначенные для регулирования вертикального и горизонтального положения на экране ассоциированных с ними объектов. Разница между полосами прокрутки, являющимися частью окна и полосами прокрутки - дочерними окнами, состоит в том, что дочерние окна имеют встроенный клавиатурный интерфейс, позволяющий воздействовать на полосу прокрутки с помощью клавиатуры. Сообщение SB_LINEUP генерируется обеими полосами при щелчке на верхней или левой стрелке, а сообщение SB_LINEDOWN - в случае нажатия нижней или правой стрелки. Чтобы полоса прокрутки функционировала корректно необходимо определить для нее диапозон прокрутки и задать позицию бегунка.
Встроенная полоса прокрутки, к сожалению, досталась только управлению с помощью курсора мыши. По умолчанию для полос прокрутки, являющимися частью окна, этот диапозон(число шагов мужду крайними позициями бегунка) определен от 0 до 100. Для того, чтобы изменить диапозон прокрутки необходимо вызвать функцию SetScrollRange
В Windows не смотря на то, что операции ввода осуществляемые приложением, ограничены рабочей областью его окна, программа должна быть готова обновить информацию в этой области по требованию системы.
В программе использован ряд функций Windows API, которые как бы являются основными, когда речь идет об оконных процедурах (CreateWindow, ShowWindow и др.).
Рассмотрим подробнее процедуры, которые организованы на основе стиля окна.
InvalidateRect - эта функция добавляет прямоугольник к области модификации указанных окон. Область модификации является частью области клиентского окна, которая должна быть повторно перересована.
hWnd определяет окно, чья область изменилась, если этот параметр равен 0, то Windows изменяет все окна и посылает оконной процедуре сообщение *WM_ERASEBKGND and WM_NCPAINT*;
lpRect указатель на структуру RECT, которая содержит координаты клиентского прямоугольника, который будет добавлен к области модификациибласти. Если этот параметр равен ноль, то вся область клиента добавляется к области модификации.
BErase определяет должен ли быть стерт фон в пределах области модификации. Если этот параметр true, фон стирается при вызове BeginPaint
GetClientRect - отыскивает координаты области клиента окна. Клиентские координаты определяют координаты верхнего левого и правого нижнего углов. Координаты верхнего левого угла равны (0,0).
hWnd : определяет окно, координаты которого надо найти.
lpRect: указатель на структуру, которая получит кооридинаты.
При правильном завершении функции возвращается значение, отличное от 0.
SetScrollRange - функция устанавливает минимальное и максимальное значения позиций для указанной полосы прокрутки. Может также использоваться для скрытия стандартной полосы прокрутки.
hWnd : определяет, что это стандартное окно с полосой прокрутки или просто полоса прокрутки, в зависимости от значения параметра nBar.
nBar: определяет полосу прокрутки. Этот параметр может принимать разные значения. Он устанавливает диапазон управления, если полоса окно. Устанавливает диапазон стандартной вертикальной или горизонтальной полосы прокрутки. Определяет минимальную прокручиваемую позицию. Определяет, должна ли быть полоса прокрутки повторно оттянута. Если истина, то да, должна быть.
ScrollWindow - функция, которая прокручивает содержание области клиента указанного окна.
hWnd : определяет дескриптор окна, где клиентская область должна быть прокручена.
XAmount: определяет состав модуля для горизонтальной прокрутки.
YAmount: определяет состав модуля для вертикальной прокрутки.
lpRect: указатель на структуру RECT , определяющую часть области клиента для прокрутки. Если этот параметр равен 0, то прокручивается вся клиентская область
lpClipRect: указатель на структуру RECT , содержащую координаты прямоугольника отсечения.
Если функция выполнилась правильно, то она возвращает значение, отличное от ноля.
SetScrollPos - функция, которая устанавливает позицию бегунка в указанной полосе прокрутки и изменяет эту позицию.
hWnd : идентифицирует полосу прокрутки или окно со стандартной полосой прокрутки, в зависимости от значения параметра nBar.
Этот параметр может принимать одно из следующих значений:
- SB_CTL - устанавливает позицию бегунка в управлении полосы прокрутки, hWnd - дискриптор полосы прокрутки.
- SB_GORS - устанавливает позицию бегунка в стандартной горизонтальной полосе прокрутки.
- SB_VERT - устанавливает позицию бегунка в стандартной вертикальной полосе прокрутки.
nPos: параметр, определяющий новую позицию бегунка. Она должна быть в пределах прокручиваемого диапазона.
bRedraw: параметр, определяющий оттянута ли повторно полоса прокрутки, для того чтобы отобразить новую позицию бегунка. Если этот параметр истина, то полоса прокрутки повторно оттянута.
Если функция неправильно завершена, то возвращается ноль.
p486 ; эта директива разрешает транслятору
; обрабатывать команды процессора i486
2. jumps ; транслятор автоматически преобразует
; команду условной передачи управления в комбинацию
; условной и безусловной команд, если условная команда в
; cилу ограниченности области своего действия не
; обеспечивает передачу управления по нужному адресу
3. model flat,STDCALL ; выбирается модель памяти для 32-
; разрядного программирования и правила
;передачи параметров функциям STDCALL,
4. include win32.inc ; файл, содержащий описания структур
5. L equ ; последовательности символов LARGE,
; объявляющей следующий за ней операнд ; 32-разрядным, присваивается имя L
6. extrnginPaint:PROC ; описание импортируемых из
22. extrn SetCurrentDirectoryA:PROC
49. Buffer db 'Помни о порядке передачи параметров функции!',0
69. .code ;предопределенное имя, означающее
72. call GetModuleHandleA ;возвращает базовый адрес модуля,
;указывающий, куда был отображен в адресном
; пространстве процесса EXE- или DLL файла
73. mov [hInst], eax ; результат выполнения функции сохраняется в качестве переменной hInst
75. ;************************************************
76. mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW ; стиль класса
77. mov [wc.clsLpfnWndProc], offsetWndProc ;адрес оконной процедуры
78. mov wc.clsCbClsExtra], 0 ;определяет дополнительное число
; байтов для структуры класса окна,
79. mov [wc.clsCbWndExtra], 0 ; задает в байтах объем памяти,
; каждой такой структуры каждого окна
81. mov [wc.clsHInstance], eax ; содержит базовый адрес данного
82. call LoadIconA, 0, IDI_APPLICATION ; заданнаяпоумолчанию
84. call LoadCursorA, 0 ,IDC_ARROW ; стандартнаястрелкакурсора
86. mov [wc.clsHbrBackground],COLOR_WINDOW +1
87. mov dword ptr [wc.clsLpszMenuName], 0
88. mov dword ptr [wc.clsLpszClassName], offset szClassName
89. call RegisterClassA, offset wc ; регистрируетклассокна,
; атрибуты которого определены ;в структуре WNDCLASS
90. call CreateWindowExA, 0,offset szClassName,offset szTitleName, \
; создает окно, имеющее указанный тип
; и принадлежащее указанному классу
91. WS_OVERLAPPEDWINDOW OR WS_VSCROLL,CW_USEDEFAULT, \
92. CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,0,0, \
95. call ShowWindow, [newhwnd], SW_SHOWNORMAL ; показываеткаким
96. call UpdateWindow, [newhwnd] ; обновляет изображение
98. call GetMessageA, offset msg, 0, 0, 0 ;считывает сообщение
100. call DispatchMessageA, offset msg ; передаетсообщение
101. call TranslateMessage, offset msg
104. call ExitProcess, [msg.msWPARAM] ;
105. ;*************************************************
107. ;**************************************************
108. WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\
111. cmp [wmsg], WM_DESTROY ; посылаетсяоконнойпроцедуресразу
113. cmp [wmsg], WM_SIZE ; посылается оконной процедуре после того,
115. cmp [wmsg], WM_CREATE ; передача оконной процедуре нового
; окна после того, как окно создано,
117. cmp [wmsg],WM_PAINT ; обеспечивают перерисовку окна, когда
; часть или вся рабочая область окна
123. callGetDC,[hwnd] ;дескриптор контекстного устройства
125. call GetTextMetricsA,[hDC],offset tm
127. mov bx,[tm.tmExtLeading] ; межстрочноерасстояние
128. addbx,[tm.tmHeight] ;высота (добавка к координате строки)
130. callReleaseDC,[hwnd],[hDC] ; отказ от контекстного устройства
134. call DefWindowProcA,[hwnd],[wmsg],[wparam],[lparam]
137. callGetClientRect,[hwnd],offsetrc ;определение клиентской
138. movzxeax,[wordptrwparam] ;преобразование содержимого wparam в
139. cmp eax,SB_LINEDOWN ; щелчок мыши на стрелке вниз,
; приводит к прокрутке на одну строку
141. cmp eax,SB_LINEUP ; щелчокмышинастрелкевверх,
; приводит к прокрутке на одну строку
143. cmp eax,SB_ENDSCROLL ;отпускание любого органа управления
; удерживания ее на полосе прокрутки
146. mov [cyStep],1 ; прибавить шаг
154. endvscroll_1: mov eax,[cyPos] ;посылаемпозициюбегункав
158. sbbeax,[charht] ;расчет межстрочного расстояния
163. call ScrollWindow,[hwnd],0,ecx,0,0 ; определяемдескрипторокна,
164. callInvalidateRect,[hwnd],offsetrc,TRUE ; определяем окно с
165. callSetScrollPos,[hwnd],SB_VERT,[cyPos],TRUE ;установление
166. call UpdateWindow,[hwnd] ;обновление изображения окна,
173. wmsize: ;для перерисовки нового размера окна
;значение старшего слова означает высоту
188. call FindFirstFileA,offset fn,offset w32fd
192. call FindNextFileA,[hFindFile],offset w32fd
216. call BeginPaint,[hwnd],offset lppaint ;получиликонтекст
218. moveax,[cyPos] ; начальная позиция бегунка
219. mov ecx,[charht] ;получили координату вывода в пикселях
223. mov [cory],5 ; занесли по у -5
225. call FindFirstFileA,offset fn,offset w32fd ;отыскиваем
230. m3: movdl,w32fd.cFileName[esi] ;отрисовка первой строки
236. cmp [cyPos],0 ; если не ноль, то переход на метку
240. call TextOutA,[hDC],5,[cory],offset buf_v,[num] ; вывод
243. call FindNextFileA,[hFindFile],offset w32fd ; следующийфайл
248. m4: mov dl,w32fd.cFileName[edi] ; получилиимя
259. call TextOutA,[hDC],5,[cory],offset buf_v,esi ;вывод
262. kon: call EndPaint,[hwnd],offset lppaint ;отдали
Моя задача состояла в создании учебной программы, демонстрирующей вывод на экран в графическом режиме заданный каталог со скролингом. С полосами прокрутки связан единственный недостаток, который заключается в том, что приложениями невозможно управлять без мыши. Но так как большинство приложений Windows поддерживают работу с мышью, это вряд ли стоит считать серьезным недостатком. Необходимо было выполнить целый ряд действий, прежде чем приложение смогло адекватно реагировать на сообщения, посылаемые полосами прокрутки.
Windows 98: руководство разработчика: Пер.с англ. – К.: Издательская группа BHV, 1999. – T.1. –672 c.
Зубков С.В. Asstmbler. Для DOC, Windows Unix. M.: ДМК, 1999.640 с.

Название: Вывод на экран текущего каталога в графическом режиме (со скроллингом)
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа
Добавлен 13:08:39 11 апреля 2002 Похожие работы
Просмотров: 65
Комментариев: 19
Оценило: 4 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Если Вам нужна помощь с учебными работами, ну или будет нужна в будущем (курсовая, дипломная, отчет по практике, контрольная, РГР, решение задач, онлайн-помощь на экзамене или "любая другая" учебная работа...) - обращайтесь: https://clck.ru/P8YFs - (просто скопируйте этот адрес и вставьте в браузер) Сделаем все качественно и в самые короткие сроки + бесплатные доработки до самой сдачи/защиты! Предоставим все необходимые гарантии.
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Курсовая работа: Вывод на экран текущего каталога в графическом режиме (со скроллингом)
Контрольная работа по теме Основы расчетов оплаты труда на предприятии общественного питания
Сочинение По Ф Сологубу Зависть
Дипломная работа по теме Особенности социальной адаптации детей после развода родителей
Контрольная работа по теме Тактика задержания и ареста
Курсовая работа: Разработка туристского продукта для установленного целевого сегмента
Земли оздоровительного назначения
Купи Диплом Купить Дипломную Работу
Реферат: Наклонно-направленные скважины
Реферат: Особенности экспертизы мебельных товаров на примере
Реферат: Механизм развития античной цивилизации
Реферат: Противоположны ли наука и религия?
Сочинение 11 Класс Егэ
Дипломная работа: Автомобильная система видеонаблюдения
Доклад по теме Системы дыхания
Курсовые Работы По Лингвистике
Реферат: Інвестиційна діяльність комерційних банків
Курсовая работа: Теория массового обслуживания с ожиданием. Скачать бесплатно и без регистрации
Реферат: Девочка с яблоком Тропинина. Скачать бесплатно и без регистрации
Контрольная работа: Международные акты по утилизации отходов
Реферат: Строительство пятиэтажного жилого дома в кирпичном исполнении
Реферат: Виргиния
Доклад: Права исключительные и неисключительные
Доклад: Испытаем силу художественной литературы

Report Page