Cтандартні класи вікон та їх типи

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт
Предмет:
Екологія

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ Національний університет «Львівська політехніка» ІЕПТ ім. В’ячеслава Чорновола Кафедра загальної екології та екоінформаційних систем ЗВІТ по лабораторній роботі №4 на тему: “ Cтандартні класи вікон та їх типи ” Львів – 2012 Мета – зрозуміти поняття вікна в операційній системі Windows. ТЕОРЕТИЧНІ ПОЛОЖЕННЯ Все, що бачить користувач на екрані в системі WINDOWS є вікном. Вікно – це графічна оболонка, через яку програма може спілкуватися з користувачем. Якщо програмі не потрібно спілкуватись, то вона може і не створювати вікон. Вікно може володіти набором інших вікон, які називаються дочірніми. Кожне вікно має як певний набір параметрів, так і може відрізнятися певною специфікою спілкування з користувачем. Такі специфічні особливості називаються класом вікна. Існують стандартні класи, наприклад, вікно–регулювач, вікно-кнопка, вікно для вводу тексту, вікно-підказка та інші, які ви знайдете в лабораторній роботі. Кожний стандартний клас має унікальну назву, яка дійсна для всіх версій операційних систем WINDOWS. Вікно створюється за допомогою спеціальної функції CreateWindowExA. В параметрах цієї функції вказується наступна інформація: Вказівник на MDI – структуру (або 0); Хендл програми (отримується функцією GetModuleHandle); Хендл меню або дочірнього вікна (або 0); Хендл вікна-власника (або 0); Висота вікна; Ширина вікна; Координата Y; Координата X; Прапорці стилю вікна (див. далі); Вказівник на назву вікна (або 0); Вказівник на назву класу (див. далі); Прапорці властивостей вікна (див. далі). Керувати вікном можна за допомогою внутрішнього механізму WINDOWS, який базується на понятті повідомлення (в програмі позначено WM_...). Отже, вікно – це такий об’єкт WINDOWS, який крім текстово-графічної інформації може отримувати та надсилати спеціальні структури даних, які називаються повідомленнями. Структура кожного повідомлення стандартна і складається з наступних змінних: MsHWND dd 0 ; хендл вiкна, процедура якого отримала повiдомлення; msMESSAGE dd 0 ; код повiдомлення (кожна подiя має свiй); msWPARAM dd 0 ; додатковий параметр 1 (залежить вiд подiї); msLPARAM dd 0 ; додатковий параметр 2 (залежить вiд подiї); msTIME dd 0 ; час, коли було надiслано повiдомлення; ptX dd 0 ; координата X миші, коли надсилалося повiдомлення; ptY dd 0 ; координата Y миші, коли надсилалося повiдомлення. Повідомлення сигналізує про деяку подію в системі або у вікні, наприклад, вичерпався час таймера, користувач натиснув клавішу, відпустив клавішу, порухав мишу, клацнув кнопкою, та інші. Для того, щоб відправити повідомлення до довільного вікна (наприклад, щоб змінити його розмір) необхідно заповнити цю структуру даних та скористуватися функцією SendMessageA, а для прийому повідомлення від певного вікна необхідно вказати діапазон прийому, хендл вікна та адресу структури повідомлення і скористатися функцією GetMessageA. Коли повідомлення надійде, операційна система сама заповнить всі дані структури (див. програму). З кожним стандартним класом вікна зв’язана певна віконна стандартна процедура WndProc, яка малює вікно та обробляє всі повідомлення, що надходять у вікно. Програміст має можливість вставити у віконну процедуру свій фрагмент програми. Такі дії називаються субкласуванням. Саме ідеєю субкласування можна пояснити відокремлення процесів створення вікна, циклу прийому повідомлень та їх обробку у вигляді віконної процедури ВИКОНАННЯ РОБОТИ Код програми Button .386 .model flat,STDCALL extrn InitCommonControls:Proc extrn GetModuleHandleA:Proc extrn ExitProcess:Proc extrn CreateWindowExA:Proc extrn GetMessageA:Proc extrn DispatchMessageA:Proc extrn TranslateMessage:Proc ; Визначення типів (стилів) вікон: WS_POPUP equ 80000000h WS_VISIBLE equ 010000000h WS_DLGFRAME equ 400000h WS_EX_TOPMOST equ 8h ; Код повідомлення про натиснуту клавішу: WM_KEYDOWN equ 100h BS_AUTOCHECKBOX equ 3h .data MSG: ; Структура стандартного повідомлення WINDOWS msHWND dd 0 ; хто надіслав msMESSAGE dd 0 ; яку інформацію msWPARAM dd 0 ; про що msLPARAM dd 0 ; і як msTIME dd 0 ; коли ptX dd 0 ; де (X), ptY dd 0 ; (Y) AppHWnd dd 0 NewHWnd dd 0 WindowCaption db 'Domashovets O.O',0 CLASSNAME db 'Button',0 ; Ім’я стандартного класу ;======================================= .code Start: call InitCommonControls push 0h call GetModuleHandleA mov AppHWnd,eax push 0 ; MDI-структура push AppHWnd ; програмний модуль push 0 ; меню push 0 ; власник push 100 ; висота push 160 ; ширина push 250 ; координата y push 300 ; координата x push WS_POPUP or WS_VISIBLE or BS_AUTOCHECKBOX push offset WindowCaption ; Заголовок вікна push offset CLASSNAME ; Ім’я класу вікна push WS_EX_TOPMOST ; Властивості call CreateWindowExA ; Створити вікно mov NewHWnd,eax ; Зберегти хендл вікна ;======================================= MSG_LOOP: ; Цикл прийому повідомлень push 0 ; діапазон прийому - push 0 ; всі можливі повідомлення push NewHWnd ; від даного вікна push offset MSG ; Адреса структури повідомлення call GetMessageA cmp msMESSAGE,WM_KEYDOWN jnz CONTINUE_LOOP cmp msWPARAM,1bh ; код <ESC> jz STOP CONTINUE_LOOP: push offset MSG call TranslateMessage push offset MSG ; Направити повідомлення у ві- call DispatchMessageA ; конну процедуру. jmp MSG_LOOP ;============================== STOP: push 0 call ExitProcess End Start / ComboBox .386 .model flat,STDCALL extrn InitCommonControls:Proc extrn GetModuleHandleA:Proc extrn ExitProcess:Proc extrn CreateWindowExA:Proc extrn GetMessageA:Proc extrn DispatchMessageA:Proc extrn TranslateMessage:Proc extrn SendMessageA:proc ; Визначення типів (стилів) вікон: WS_POPUP equ 80000000h WS_VISIBLE equ 010000000h WS_DLGFRAME equ 400000h WS_EX_TOPMOST equ 8h ; Код повідомлення про натиснуту клавішу: WM_KEYDOWN equ 100h BS_AUTOCHECKBOX equ 3h CB_ADDSTRING equ 143h CBS_SORT equ 100h CBS_DROPDOWN equ 2h CBS_HASSTRINGS equ 200h .data STR1 db 'Domashovets',0 STR2 db ' Oxana',0 STR3 db 'group KN-38',0 MSG: ; Структура стандартного повідомлення WINDOWS msHWND dd 0 ; хто надіслав msMESSAGE dd 0 ; яку інформацію msWPARAM dd 0 ; про що msLPARAM dd 0 ; і як msTIME dd 0 ; коли ptX dd 0 ; де (X), ptY dd 0 ; (Y) AppHWnd dd 0 NewHWnd dd 0 WindowCaption db 'стандартний клас вікна',0 CLASSNAME db 'ComboBox',0 ; Ім’я стандартного класу ;======================================= .code Start: call InitCommonControls push 0h call GetModuleHandleA mov AppHWnd,eax push 0 ; MDI-структура push AppHWnd ; програмний модуль push 0 ; меню push 0 ; власник push 100 ; висота push 160 ; ширина push 250 ; координата y push 300 ; координата x push WS_POPUP or WS_VISIBLE or BS_AUTOCHECKBOX push offset WindowCaption ; Заголовок вікна push offset CLASSNAME ; Ім’я класу вікна push WS_EX_TOPMOST ; Властивості call CreateWindowExA ; Створити вікно mov NewHWnd,eax ; Зберегти хендл вікна push WS_POPUP or WS_VISIBLE or WS_DLGFRAME \ or CBS_SORT or CBS_DROPDOWN or CBS_HASSTRINGS call SendMessageA,NewHWnd,CB_ADDSTRING,0,offset STR1 call SendMessageA,NewHWnd,CB_ADDSTRING,0,offset STR2 call SendMessageA,NewHWnd,CB_ADDSTRING,0,offset STR3 ;======================================= MSG_LOOP: ; Цикл прийому повідомлень push 0 ; діапазон прийому - push 0 ; всі можливі повідомлення push 0;NewHWnd ; від даного вікна push offset MSG ; Адреса структури повідомлення call GetMessageA cmp msMESSAGE,WM_KEYDOWN jnz CONTINUE_LOOP cmp msWPARAM,1bh ; код <ESC> jz STOP CONTINUE_LOOP: push offset MSG call TranslateMessage push offset MSG ; Направити повідомлення у ві- call DispatchMessageA ; конну процедуру. jmp MSG_LOOP ;============================== STOP: push 0 call ExitProcess End Start / Висновок: під час виконання лабораторної роботи я зрозуміла, що таке вікна в операційній системі Windows. Все, що бачить користувач на екрані в системі WINDOWS є вікном. Вікно – це графічна оболонка, через яку програма може спілкуватися з користувачем. Якщо програмі не потрібно спілкуватись, то вона може і не створювати вікон. Вікно може володіти набором інших вікон, які називаються дочірніми
Антиботан аватар за замовчуванням

11.11.2013 00:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!