![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Программа демонстрирующая иерархию окон Windows |
Министерство образования РФ ИНСТИТУТ ПЕРЕПОДГОТОВКИ КАДРОВ Уральского государственного технического университетаКафедра микропроцессорной техники Оценка проекта Члены комиссии Программа демонстрирующая иерархию окон Wi dows Курсовая работа руководитель: Кулюкин В.П. слушатель гр.СП-923: 2001г. Содержание:Введение 1. Оконные приложения Wi dows. 2. Каркасное Wi dows-приложение на ассемблере 3. Иерархия окон 4. «Программа демонстрирующая иерархию окон Wi dows» 5.Библиографический список Введение В подавляющем большинстве книг о программировании для Wi dows изложение, как правило, ведется на базе языка C/C , реже — на базе Pascal. А что же ассемблер — в стороне? Конечно, нет! Мы не раз обращали ваше внимание на правильное понимание места ассемблера в архитектуре компьютера. Любая программа на языке самого высокого уровня в своем внутреннем виде представляет собой последовательность машинных кодов. А раз так, то всегда остается теоретическая возможность написать ту же программу, но уже на языке ассемблера: Непонимание или недооценка такой возможности приводит к тому, что достаточно часто приходится слышать фразу, подобную следующей: «Ах, опять этот ассемблер, но ведь это что-то несерьезное!» Также трудно согласиться с тезисом, который чаще всего следует вслед за этой фразой. Суть его сводится к утверждению того, что мощность современных компьютеров позволяет не рассматривать проблему эффективности функционирования программы в качестве первоочередной. Гораздо легче решить ее за счет увеличения объема памяти, быстродействия центрального процессора и качества компьютерной периферии. Чем обосновать необходимость разработки Wi dows-приложений на языке ассемблера? Приведем следующие аргументы: языке ассемблера позволяет программисту полностью контролировать создаваемый им программный код и оптимизировать его по своему усмотрению; компиляторы языков высокого уровня помещают в загрузочный модуль программы избыточную информацию. Эквивалентные исполняемые модули, исходный текст которых написан на языке ассемблера, имеют в несколько раз меньший размер; при программировании на ассемблере сохраняется полный доступ к аппаратным ресурсам компьютера; приложение, написанное на языке ассемблера, как правило, быстрее загружается в оперативную память компьютера; приложение, написанное на языке ассемблера, обладает, как правило, более высокой скоростью работы и реактивностью ответа на действия пользователя. Разумеется, эти аргументы не следует воспринимать, как некоторую рекламную кампанию в поддержку языка ассемблера. Но нельзя забывать и о том, что существует бесконечное множество прикладных задач, ждущих своей очереди на компьютерную реализацию. Далеко не все из этих задач требуют применения тяжеловесных средств разработки, результатом работы которых являются столь же тяжеловесные исполняемые файлы. Многие прикладные задачи могут быть изящно исполнены на языке ассемблера, не теряя привлекательности. 1. Оконные приложения Wi dows. Wi dows поддерживает два типа приложений: оконное приложение — строится на базе специального набора функций (API), составляющих графический интерфейс пользователя (GUI, Graphic User I erface).
Оконное приложение представляет собой программу, которая весь вывод на экран производит в графическом виде. Первым результатом работы оконного приложения является отображение на экране специального объекта — окна. После того как окно отображено на экране, вся работа приложения направлена на то, чтобы поддерживать его в актуальном состоянии; Основной тип приложений в Wi dows — оконные, поэтому с них мы и начнем знакомство с процессом разработки программ для этой операционной системы. Любое оконное Wi dows-приложение имеет типовую структуру, основу которой составляет так называемое каркасное приложение. Это приложение содержит минимально необходимый программный код для обеспечения функционирования полноценного Wi dows-приложения. Не случайно во всех источниках в качестве первого Wi dows-приложения рекомендуется изучать и исследовать работу некоторого каркасного приложения, так как именно оно отражает основные особенности взаимодействия программы с операционной системой Wi dows. Более того, написав и отладив один раз каркасное приложение, вы будете использовать его в необходимую терминологию и сможем больше внимания уделить логике работы Wi dows-приложения, а не деталям его реализации. Минимальное приложение Wi dows состоит из трех частей: главной функции; цикла обработки сообщений; оконной функции. Выполнение любого оконного Wi dows-приложения начинается с главной функции. Она содержит код, осуществляющий настройку (инициализацию) приложения в среде операционной системы Wi dows. Видимым для пользователя результатом работы главной функции является появление на экране графического объекта в виде окна. Последним действием кода главной функции является создание цикла обработки сообщений. После его создания приложение становится пассивным и начинает взаимодействовать с внешним миром посредством специальным образом оформленных данных — сообщений. Обработка поступающих приложению сообщений осуществляется специальной функцией, называемой оконной. Оконная функция уникальна тем, что может быть вызвана только из операционной системы, а не из приложения, которое ее содержит. Таким образом, Wi dows-приложение, как минимум, должно состоять из трех перечисленных элементов. Каркасное Wi dows-приложение на ассемблере содержит один сегмент данных .da a и один сегмент кода . code. Сегмент стека в исходных текстах Wi dows-приложений непосредственно описывать не нужно. Wi dows выделяет для стега объем памяти, размер которого задан программистом в файле с расширением . def. Текст листинга 2 достаточно большой. Поэтому для обсуждения разобьем erо комментариями на характерные фрагменты, каждый из которых затем поясним необходимой степенью детализации. 2. Каркасное Wi dows-приложение на ассемблере ;Пример каркасного приложения для Wi 32 .386 locals ;разрешает применение локальных меток в программе .model fla , S DCALL ;модель памяти fla Я ;S DCALL - передача параметров в стиле С (справа налево), ; вызываемая процедура чистит за собой стек Ш i clude wi dowA.i c ;включаемый файл с описаниями базовых структур ;и констант Wi 32 т ;Объявление внешними используемых в данной программе функций Wi 32 (ASCII): ex r Ge ModuleHa dleA:PROC ex r Ge Versio ExA:PROC В ex r Ge Comma dLi eA:PROC ex r Ge E viro me S ri gsA:PROC ex r Ge E viro me S ri gsA:PROC ex r Ge S ar upI foA:PROC ex r LoadIco A:PROC ex r LoadCursorA:PROC ex r Ge S ockObjec :PROC ex r Regis erClassExA:PROC ex r Crea eWi dowExA:PROC ex r ShowWi dow:PROC ex r Upda eWi dow:PROC ex r Ge MessageA:PROC ex r ra sla eMessage:PROC ex r Dispa chMessageA:PROC ex r Exi Process:PROC ex r Pos Qui Message:PROC ex r DefWi dowProcA:PROC ex r PlaySou dA:PROC ex r ReleaseDC:PROC ex r ex Ou A:PROC ex r Ge DC:PROC ex r Begi Pai :PROC ex r E dPai :PROC ;объявление оконной функции объектом, видимым за пределами данного кода public Wi dowProc .d
a a hw d dd 0 hI s dd 0 hdc dd 0 ;lpVersio I forma io OSVERSIO I FO wcl W DCLASSEX message MSG ps PAI S RUC szClass ame db 'Приложение Wi 32 ',0 sz i le ame db 'Каркасное приложение Wi 32 на ассемблере'.0 MesWi dow db 'Это процесс разработки приложения на ассемблере?' MesWi dowLe = $-MesWi dow playFileCrea e db 'crea e.wav',0 playFilePai db 'pai .wav',0 playFileDes roy db 'des roy.wav',0 . code s ar proc ear ;точка входа в программу: ;начало стартового кода ;вызовы расположенных ниже функций можно при необходимости раскомментировать, :но они не являются обязательными в данной программе ;вызов BOOL Ge Versio Ex(LPOSVERSIO I FO lpVersio I forma io ) ; push offse lpVersio I forma io ; call Ge Versio ExA ;далее можно вставить код для анализа информации о версии Wi dows ;вызов LP S R Ge Comma dLi e(VOID) - получить указатель на командную строку ; call Ge Comma dLi eA :врегистре еах адрес ;вызов LPVOID Ge E viro me S ri gs (VOID) - получить указатель ;на блок с переменными окружения ; call Ge E viro me S ri gsA ;врегистре еах адрес ;вызов VOIDGe S ar upI fo(LPS AR UPI FO lpS ar upI fo) ;указатель ;на структуру S AR UPI FO ; push offse lpS ar upI fo ; call Ge S ar upI foA ;вызов HMODULE Ge ModuleHa dleA (LPC S R lpModule ame) push ULL ;0->Ge ModuleHa dle call Ge ModuleHa dleA ;получить значение базового адреса, mov hI s , eax ; o которому загружен модуль. ;далее hI s будет использоваться в качестве дескриптора данного приложения ;конец стартового кода Wi Mai : ;определить класс окна A OM Regis erClassEx(CO S W DCLASSEX lpW dClassEx), ; где lpW dClassEx - адрес структуры W dClassEx ;для начала инициализируем поля структуры W dClassEx mov wcl.cbSize, ypeW DCLASSEX -.размер структуры :в wcl.cbCIZE mov wcl.s yle,CS HREDRAW CS VREDRAW mov wcl.pf W dProg,offse Wi dowProg ;адрес оконной процедуры mov wcl.cbCisEx ra,0 mov wcl.cbW dEx ra,0 mov eax,hI s mov ;дискриптор приложения в поле hI s a ce структуры wcl mov wcl.hI s a ce, eax ;готовим вызов HICO LoadIco (HI S A CE hI s a ce, LPC S R lpIco ame) push IDI APPLICA IO ,-стандартный значок push 0 ; ULL саП LoadIco A mov wcl.hIco , eax ,-дескриптор значка в поле hIco I ;структуры wcl ;готовим вызов HCURSOR LoadCursorA (HI S A CE hI s a ce, LPC S R M ;lpCursor ame) push IDC ARROW ,-стандартный курсор - стрелка push 0 саll LoadCursorA mov wcl.hCursor,eax ;дескриптор курсора в поле hCursor ;структуры wc1 ;определим цвет фона окна - белый ;готовим вызов HGDIOBJ Ge S ockObjec (i f Objec ) push WHI E BRUSH саП Ge S ockObjec mov wcl.hbrBackgrou d, eax mov dword p rwcl.lpszMe u ame, 0 ;без главного меню mov dwordp rwcl.lpszClass ame,offse szC1ass ame; имя ;класса окна mov wcl.hIco Sm, 0 ;регистрируем класс окна - готовим вызов Regis erClassExA (&w dclass) push offse wcl саП Regis erClassExA es ax, ах;проверить на успех регистрации класса окна jz e d cyc1 msg ;неудача ;создаем окно: ;готовим вызовHW D Crea eWi dowExA(DWORDdwExS yle, LPC S R1pClass ame, ; LPC S R 1pW1 dow ame, DWORD dwS yle, i x, i у, i Wid h, ;i Heigh , ; HW D hW dPare , HME U hMe u, HA DLE hI s a ce, LPVOID ;lpParam) push 0 ;lpParam push hI s ;hI s a ce push ULL ;me u push ULL ;pare hw d push CW USEDEFAUL ;высота окна push CW USEDEFAUL ;ширина окна push CW USEDEFAUL ;координата у левого верхнего угла ;окна push CW USEDEFAUL ;координата х левого верхнего угла push WS OVERLAPPEDWI DOW ;стиль окна push offse sz i le ame ;строка заголовка окна push offse szClass ame ;имя класса окна push ULL саll Crea eWi dowExA mov hw d,eax ;-дескриптор окна ;показать окно: ;готовим вызов BOOL ShowWi dow( HW D hW d, i CmdShow ) push SW SHOW ORMAL push hw d call ShowWi dow ;перерисовываем содержимое окна ;готовим вызов BOOL Upda eWi dow( HW D hW d ) push hw d call Upda eWi dow ;запускаем цикл сообщений: ;готовим вызов BOOL Ge MessageA( LPMSG lpMsg, HW D hW d, ; UI wMsgFil erMi ,UI wMsgFil erMax) cycl msg: push 0 push 0 push ULL push offse message cal 1 Ge MessageA cmp ах, 0 je e d cycl msg ;трансляция ввода с клавиатуры ;готовим вызов BOOL ra s1a eMessage( CO S MSG lpMsg ) push offse message call ra sla eMessage ;отправим сообщение оконной процедуре ;готовим вызов LO G D1spa chMessage( CO S MSG lpmsg ) push offse message call Dispa chMessageA jmp cycl msg e d cycl msg: ;выход из приложения ;готовим вызов VOID Exi Process( UI uExi Code ) push ULL call Exi Process s ar e dp ; - - - - - - - - - - - - --Wi dowProc-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Wi dowProc proc argP0 w d:DWORD, PPmes:DWORD, @@wparam:DWORD, @@lparam:DWORD uses ebx, edi, es1 ;эти регистры обязательно должны сохраняться local @@hdc:DWORD cmp @@mes, WM DES ROY je wmdes roy cmp @@mes, WM CREA E je wmcrea e cmp @@mes, WM PAI je wmpai jmp defaul wmcrea e: ;обозначим создание окна звуковым эффектом ;готовим вызов функции BOOL PlaySou d(LPCS R pszSou d, HMODULE hmod, DWORD ;fdwSou d ) push S D SY C S D FILE AME push ULL push offse playFileCrea e call PlaySou dA mov eax, О;возвращаемое значение - 0 jmp exi w dproc wmpai : push S D SY C S D FILE AME push ULL push offse playFIilePai call P1aySou dA ;получим контекст устройства HDC Begi Pai (HW D w d,LPPAI S RUC ;LPpAI ) push offse ps push @@hw d call Begi Pai mov @@hdc,eax ;выведем строку текста в окно BOOL ex Ou ( HDC hdc.
Среди действительно безграничных возможностей программы выделю основные, отличающие ее от утилит-конкурентов, такие как: □ поддержка Radmin-сервером одновременно нескольких сессий дистанционного управления; □ полноэкранный, масштабируемый и оконный режимы просмотра Рабочего стола удаленного компьютера, а также использование технологии видеозахвата (в Windows NT4/2000/XP); □ обмен файлами с удаленным компьютером и удаленное выключение нужного компьютера без необходимости соединения в режиме просмотра; □ работа с буфером обмена; □ автоматическое отсоединение при потере соединения; □ поддержка высоких разрешений экрана (до 2048×2048 при 32-битном цвете). Большое внимание в программе уделено обеспечению безопасности. Программа поддерживает систему безопасности Windows NT4/2000/XP. Доступ к удаленному компьютеру контролируется паролем, при этом используется аутентификация с запросом и подтверждением, подобная применяемой в Windows NT4, но предусмотрен более длинный секретный ключ
1. Жесткое внедрение DLL в Windows-программы
3. Как ломать программы Windows (C) ED!SON [UCF], перевод Mr.Boco/TCP
4. Стандартные прикладные программы Windows XP
5. Программа управления самолётом в режиме автопилота
9. Рецензия на программу "Тема" - "журналистская этика"
10. Кирилло-Мефодьевское братство: программа его деятельности
11. "Северное" и "Южное" общества декабристов, их программы. Восстание декабристов
12. Компьютерные вирусы и антивирусные программы
14. Netscape Navigator для Windows`95. Обзор возможностей
15. Анализ системы безопасности Microsoft Windows 2000 Advanced Server и стратегий ее использования
16. Организация Linux - сервера для Windows клиентов
17. Программа эмуляции развития популяций животных
19. Создание клиентских частей SQL БД под ОС Windows`95 и WindowsNT
25. Разработка программы- тренажера "Управление электросетями"
26. Кадры с использованием программы Microsoft Access 97
27. Разработка лабораторного практикума "Создание тестирующей программы"
28. Обучающая программа "Графика" программированию в графическом режиме на языке turbo-pascal 7.x
30. Создание проекта с использованием программы GeniDAQ и контроллеров серии АДАМ-4000
31. Разработка игровой программы на языке программирования Turbo Pascal
33. Разработка системы задач (алгоритмы-программы) по дискретной математике
34. Учебник по созданию Shareware-программ
35. Общая характеристика системы Windows
36. WINVN - программа для чтения телеконференций
37. Сравнение операционных систем /DOS, UNIX, OS (2, WINDOWS/ (Write)
41. Отчет по работе с программами SysInfo, PrintFx, FontEdit, Snipper
42. Текстовый редактор Word для Windows
43. Компьютерной программе Visio v.4.0
46. Инсталляция Windows XP. Конфигурирование оболочки Windows XP, оптимизация работы
47. Контрольные по информатике для заочников (вопросы по Windows, Word, Excel)
48. Офисные программы (текстовый редактор WORD)
49. Настройка программы Microsoft Excel
51. Анализ криптостойкости методов защиты информации в операционных системах Microsoft Window 9x
52. Access-одна из программ MS Office
53. Слои изображения в программе Photoshop
57. Программы системы 1С: Предприятие. Администрирование в программах 1С: Предприятие
58. Архиваторы. Программа Архиватор ARJ
59. Средства мультимедиа в Windows Millenium Edition
62. Программа социологического исследования /выбор формы обучения/ (Контрольная)
65. Идея и программа анархизма Бакунина
66. Компьютерная программа для расчета режимов резания деревообрабатывающего круглопильного станка
67. Программа для расчета цеха серийного производства
73. Обзор регионального рынка бухгалтерских программ
74. Прогнозирование банкротства и разработка антикризисной программы предприятия
75. Разработка программы стимулирования сбыта
77. Прогнозирование банкротства и разработка антикризисной программы предприятия
79. Источники финансирования учреждений культуры и культурных программ. Технология планирования.
80. Составление производственной программы
82. Математические модели в программе логического проектирования
83. Программа лекционных и практических занятий спецкурса "экономическая психология"
84. РОЛЬ И АНАЛИЗ АНИМАЦИОННЫХ ПРОГРАММ СРЕДИЗЕМНОМОРСКИХ ОТЕЛЕЙ ТУРЦИИ
85. Программа курса "Технология выездного туризма"
89. Программа Модернизации России С.Ю. Витте
90. Создание первого в континентальной Европе компьютера с хранимой в памяти программой
91. Вычисление интеграла методом Ньютона-Котеса (теория и программа на Паскале)
92. Взаимодействие основных частей ЭВМ при выполнении программы
95. Программа вступительных экзаменов по русскому языку в 2004г. (МГУ)
96. О доходности партнёрских программ
97. Как заработать в партнерской программе
98. Разработка маркетинговой программы
99. Программа вступительных экзаменов по математике в 2004г. (МГУ)