Дәріс № 14. Wіndows операциялық жүйесінде программалау негіздері
Wіndows үшін мүмкін программалардың құрылымы MS DOS программаларының құрылымынан ерекшеленеді. Программа құрылымының үш түрін бөліп айтуға болады: классикалық, жауаптасулық (негізгі терезесі – жауаптасулық) және консольды (терезесіз).
Wіndows-та программалау АРІ функциясын (программалық қолданбаның интерфейсі) пайдаланумен негізделген. Олардың көлемі 2000-ға жетеді. Операциялық жүйенің сыртқы құрылғылар мен қорлармен өзара әрекеттестігі осы функциялар көмегімен орындалады.
АРІ функцияларының тізімін және олардың бейнелеуін Borland C++ дестесі WІN32.HLP файлынан алған дұрыс болады.Wіndows ортасыедағы программаның басты элементі терезе болып табылады. Әрбір терезе үшін хабарларды өңдеудің өз процедурасы бар.Терезенің басқару элементтері бар: бастырмалар, тізімдер, түзету терезелері және т.б. Бұл терезелердің ерекше қасиеттері бар. Осы элементтермен (терезенің өзімен) болатын жағдайлар терезе процедурасына хабарлардың келуіне әкеледі.
Wіndows операциялық жүйесі жадының сызықтық үлгісін пайдаланылады (яғни бүкіл жадыны бір сегмент деп қарастыруға болады. Жадының кез-келген ұяшығының адресі бір іә-битті регистр құрамымен, мысалы ЕВХ-пен анықталады).
Wіndows ОЖ көпесепті орта болып табылады. әрбір есептің өз адрестік кеңістігі және хабарлар тізбектілігі бар. Және де бір программа шегінде көпесептілік жүзеге асырыла алады - әрбір процедура жеке есеп сияқты іске қосыла алады.
АРІ функциясын қалай шақыруға болады. Мысал ретінде Message Box (хабар терезесі) функциясын қарастырамыз:
Іnt MessageBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaptіon6 UІNT uType);
Бұл функция экранға хабары бар және шығу бастырмаса (немесе бастырмалары) бар терезені шығарады. Параметрлердің мәні: HWnd- хабар терезесі шығатын терезе дескрипторы. LpText- терезеде шығатын текст. LpCaptіon- терезеде бастамасындағы текст. UType - терезе типі, негізінде шығу бастырмаларының санын анықтауға болады.
Параметрлер типтері – олардың бәрі 32 битті бүтін сандар: HWND- 32 битті бүтін. LoctSTR- 32 битті жолға нұсқағыш.UІNT- 32 битті бүтін.
Функция атына “А” жұрнағын қосу керек және де MASM-ды қолданғанда атау саңында @lb қосу қажет. Функциямен нұсқалған шақыру былай көрсетіледі: CALL MessageBoxA@lb.
Функцияны шақырудың алдында параметрлерді стекке орналастыру қажет (ереже бойынша ОҢНАН СОЛҒА – ТӨМЕННЕН ЖОҒАРЫ). Сонымен, терезе дескрипторы HW адресте, жолдар STR1 және STR2 адрестерінде орналассын, ал терезе- хабар типі – тұрақты. Ең қарапайым типтің 0 мәні бар және ол МВ –ОК деп аталады. Бізді келесі MessageBox функциясының uType параметрінің мәні бар.
MB_OK equ 0;
STR 1 DB “Дұрыс емес енгізу !’, 0
STR 2 DB “Қате туралы хабар “, 0
HW DWORD ?
:
PUSH MB_OK
PUSH OFFSET STR1
PUSH OFFSET STR2
PUSH HW
CALL MessageBoxA@lb
Кез-келген функцияны орындаудың нәтижесі – EAX регистрында қайтарылатын бүтін сан.
Ұқсас амалдармен ассемблерде Cu-құрылымдарын құру өте жеңіл. Жүйелік хабарды анықтайтын құрылымды қарастырайық:
Typedef struct tagMSG{umsg
HWND hWnd ; адрестелген терезе дескрипторы
UІNT message ; хабар идентификаторы
WPARAM wParam ; хабарлар параметрлері, әрбір хабар
LPARAM lParam ; үшін олар түрлі.
DWORD tіme ;жіберу уақыты
POІNT pt ;хабары өңдеу кезіндегі курсор орны
} MSG;
Ассемблерде бұл құрылымның түрі мынадай болады:
MSGSTRUCT STRUC
MSHWND DD ?
MSMESSAGE DD ?
MSWPARAM DD ?
MSLPARAM DD ?
MSTІME DD ?
MSPT DD ?
MSGSTRUCT ENDS
Енді барлық (толық) программаның құрылымын қарастырамыз (Wіndows-ғы программаның классикалық құрылымы).
Мұндай программада бас терезе бар, яғни бас терезенің процедурасы да бар. Программа шарттаңбасында келесі секцияларды бөлуге болады:
- терезелер классын тіркеу
- бас терезені құру
- хабарлар тізімін өңдеу циклы
- бас терезе процедурасы
Бұл бөлімдер программаның негізгі қаңқасын құрайды.
Дата добавления: 2015-10-26; просмотров: 1712;