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



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

<65> ;строки
л и с т и н г а 16.4
<бб>
<67>
dword ptr
<68> ;строки 102-149 листинга 16.4
<69>
<70> start endp
<71> ; ----- .......... -- ..... Wi
roc ------- ...... ----- ..... - - - ...... - - -
<72>
proc
<73> arg
<74> uses ebx,
ebx ;эти регистры обязательно должны сохраняться
<75>
<76>
<77>
<78> cmp
<79> je
<80> cmp
WM_PAINT
<81> je
<82> cmp
<83> je
<84>
default
<85> wmcreate:
<86>
строки 176-212 листинга 16.4
послать сообщение
готовим вызов VOID
nExitCode)
<87>
<88>
<89>
<90>
<91> push 0
<92> call
mov eax, 0
значение - 0
jmp exit_wndproc
<95> wmcommand:
<96>
процедуры обработки сообщений от меню
<97>
(DWORD
DWORD
<98> push
<99> push
<100> call
<101> jmp exit_wndproc
<102> default:
<103>
по умолчанию
<104>
вызов
Msg
<105> push
<106> push
<107> push
<108> push @@hwnd
<109> call
<110> jmp
<112>
<113> ret


Углубленное программирование на ассемблере для Win32
endp
-
сообщений от меню
arg
<119>
<120>
<121>
<122>
<123>
<124>
<12S>
<126>
<127>
<128>
<129>
<130>
<131>
<132>
<133>
<134>
<135>
<136>
<137>
<138>
<139>
<140>
<141>
<142>
<143>
<144>
<145>
<146>
<147>
<148>
<149>
<150>
<151>
<152>
<153>
<154>
<1S5>
<156>
<157>
<158>
<159>
<160>
<161>
<162>
<163>
<164>
<165>
<166>
<167>
<168>
<169>
<170>
<171>
<172>
<173>
<174>
<175>
<176>
uses ebx
local
mov ebx,
bx идентификатор меню
cmp
je
cmp
je
cmp bx,
je
cmp bx,
je
cmp
je
cmp b x , IDM_LACES
je
cmp bx,
je
jmp
;получаем контекст устройства HDC GetDC(HWND hWnd)
push
call GetDC
mov
eax
;получаем размер рабочей области
;BOOL GetClientRect(HWND hWnd, LPRECT IpRect)
push offset IpRect
push
call
выводим строку текста в окно
int
hDC, LPCTSTR IpString, int nCount
LPRECT IpRect,
uFormat)
push
push offset IpRect
push -1
push offset
push @@hdc
call
контекст int ReleaseDC(HWND hWnd, HDC
push
push
call ReleaseDC
jmp @@exit
push
call GetDC ;получаем контекст устройства
mov @@hdc, eax
строку текста в окно BOOL TextOut(HDC
nYStart, LPCTSTR IpString, int cbString)
push lenTXT
push offset
push 150
push 10
push
call TextOutA
push @@hdc
push
hDC)
int
call ReleaseDC освобождаем контекст устройства
jmp
push


 Глава 16. Создание Windows-приложений на ассемблере
Листинг
<177>
<178>
<179>
<180>
<181>
<182>
<183>
<184>
<185>
<186>
<187>
<188>
<189>
<190>
<191>
<192>
<193>
<194>
<195>
<196>
<197>
<198>
<199>
<200>
<201>
<202>
<203>
<204>
<205>
<206>
<207>
<208>
<209>
<210>
<211>
<212>
<213>
<214>
<215>
<216>
<217>
<218>
<219>
<220>
<221>
<222>
<223>
push offset szTitleName
push offset
push
call MessageBoxA
jmp @@exit
push MB_ICONINFORMATION+MB_OK
push offset szTitleName
push offset
push
call MessageBoxA
jmp @@exit
push MB_ICONINFORMATION+MB_OK
push offset szTitleName
push offset @@TXT_PEACOCK
push
call MessageBoxA
jmp
push M.B_ICONINFORMATION+MB_OK
push offset szTitleName
push offset
push
call MessageBoxA
jmp
push
push offset szTitleName
push offset
push
call MessageBoxA
jmp
• • •
mov
0
ret
ABOUT db
0
LACES db
0
@@TXT PEACOCK db
0
@@TXT RECTANGLE db
0
LENGTHdb
0
TEXTOUT db
выведен функцией TEXTOUT'
lenTXT
TEXTOUT
db
выведен функцией
MenuProcendp
end start
Строки 98-100 листинга 16.7 показывают, что для обработки сообщения WM_
COMMAND вызывается процедура MenuProc. Подход, при котором программа на ас-
семблере структурируется на более мелкие части с использованием механизма
процедур, при программировании для Windows особенно полезен и должен быть
преобладающим. Для большей наглядности мы не задействуем макрокоманды.
Применение макрокоманд полезно и даже необходимо, так как они позволяют по-
лучать компактный и структурированный код.
В заключение этого раздела обратитесь к файлам, прилагаемым к книге, где
в каталоге данной главы вы найдете все исходные тексты, необходимые для сбор-
ки и запуска приложения (см. листинг 16.7). Собрав с помощью утилиты make.exe
исполняемый файл, вы увидите, что реакция программы на выбор большинства


Углубленное программирование на ассемблере для Win32
пунктов меню стандартная и заключается в выводе сообщения с использованием
функции Win32 API MessageBox. Определена реакция лишь на два пункта меню
Текст — пункты DrawText и TextOut. При их выборе на экран выводится текст. Тем
самым демонстрируются различные способы вывода текста в окно приложения.
Далее в материале этой и последующих глав мы определим реакцию и на осталь-
ные пункты меню.
Давайте теперь рассмотрим еще одну ключевую проблему программирования
для Windows — перерисовку изображения. Для того чтобы понять ее смысл и важ-
ность, в любом порядке выберите пункты меню Текст DrawText и Текст TextOut На
экране появятся строки текста. Далее сверните и разверните окно приложения.
Строки текста исчезнут, оставив только
которая выводится как реакция на
сообщение WM_PAINT. Причина этой ситуации в том, что Windows не хранит содер-
жимое окна, и заботиться о его восстановлении после различных действий с окном
должно приложение, создавшее это окно. Windows лишь посылает приложению
сообщение
в случаях, когда с окном были произведены некоторые дей-
ствия, например, свертывание-развертывание окна, изменение его размеров и т. д.
Приложение, получив сообщение WM_PAINT, в качестве реакции на
должно
обновить в необходимой степени содержимое своего окна. Более подробно эта про-
блема и пути ее решения рассмотрены в любом хорошем учебнике по программи-
рованию для Windows. Отметим лишь, что в конечном итоге все сводится к необ-
ходимости организовать вывод в окно приложения как реакцию на сообщение
Существует несколько подходов к решению проблемы перерисовки. Мы
рассмотрим наиболее общий и широко используемый.

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   220   221   222   223   224   225   226   227   ...   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