- •Лабораторна робота №1 Загальні теоретичні відомості:
- •Питання для самоконтролю:
- •Лабораторна робота №2 Системний реєстр Windows
- •Огляд системного реєстру
- •Скарбниця імен
- •Призначений для користувача модуль
- •Системний блок
- •Загальний модуль
- •Ключі конфігурації
- •Конфігураційні файли win.Ini і system.Ini
- •Питання для самоконтролю:
- •Лабораторная работа №3
- •Основы программирования в операционной системе Windows
- •Вызов функций api
- •Структура окна
- •Принципы построения оконных приложений
- •Структура окна
- •Параметры dwExStyle:
- •Параметры dwStyle :
- •12. Функция ExitProcess :
- •17. Функция BeginPaint:
- •Сообщения, посылаемые списку
- •Вопросы для подготовки к сдаче лабораторной работы.
- •Лабораторная работа №4
- •Язык описания ресурсов
- •Пиктограммы
- •Курсоры
- •Акселераторы
- •Api – функции
- •Вопросы для подготовки к сдаче лабораторной работы.
- •Лабораторная работа №5
- •Типы многозадачности
- •Использование многопоточности в приложениях Delphi
- •Синхронизации потоков
- •Критические секции
- •Пример создания многопоточного приложения в Delphi:
- •Лабораторная работа №6 «Специальные объекты синхронизации»
- •Событие (event)
- •Мьютекс (mutex )
- •Семафор (semaphore)
- •Crytical Sections
Структура окна
WNDCLASS STRUC
CLSSTYPE DD ? ; стиль окна
CWNDPROC DD ? ; указатель на процедуру окна
CLSCEXTRA DD ? ; инф-я о доп. байтах для структуры
CLWNDEXTRA DD ? ; информация о доп. байтах для окна
CLSHINSTANCE DD ? ; дескриптор приложения
CLSICON DD ? ; идентификатор пиктограммы окна
CLSHCURSOR DD ? ; идентификатор курсора окна
CLBKGROUND DD ? ; идентификатор кисти окна
CLMENUNAME DD ? ; имя-идентификатор меню
CLNAM DD ? ; специфицирует имя класса окон
WNDCLASS ENDS
Структура сообщения
MSGSTRUCT STRUC
MSHWND DD ? ;идент. Окна, получающего сообщение
MSMESSAGE DD ? ; идентификатор сообщения
MSWPARAM DD ? ; доп. информация о сообщении
MSLPARAM DD ? ; доп. информация о сообщении
MSTIME DD ? ; время посылки сообщения
MSPT DD ? ; курсор, во время посылки сообщения
MSGSTRUCT ENDS
Константы
Стили окна
CS_VREDRAW equ 1
CS_HREDRAW equ 2
CS_GLOBALCLASS equ 4000H
WS_TABSTOP equ 10000H
WS_SYSMENU equ 80000H
WS_VISIBLE equ 10000000H
WS_CHILD equ 40000000H
WS_BORDER equ 800000H
WS_THICKFRAME equ 40000H
WS_VSCROLL equ 200000H
WS_OVERLAPPEDWINDOW equ WS_TABSTOP+WS_SYSMENU
В программе стиль главного окна программы задается следующим образом:
STYLE EQU CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLASS
Стиль кнопки
BS_PUSHBUTTON equ 0
BS_DEFPUSHBUTTON equ 1
BS_CHECKBOX equ 2
BS_AUTOCHECKBOX equ 3
BS_RADIOBUTTON equ 4
BS_GROUPBPX equ 7
BS_LEFTTEXT equ 20H
В программе стиль кнопки определяется следующим образом:
STYLBTN equ WS_CHILD+BS_DEFPUSHBUTTON+WS_VISIBLE+S_TABSTOP
Некоторые API-функции
Функция MessageBoxA :
Создает и отображает диалог, содержащий указанное сообщение и заголовок, а также предопределенные пиктограммы и текстовые кнопки.
int MessageBox(
HWND hWnd, // дескриптор окна
LPCTSTR lpText, // адрес строки текста диалога
LPCTSTR lpCaption, // адрес заголовка диалога
UINT uType // стиль окна диалога
);
2. Функция GetModuleHandleA :
Возвращает дескриптор приложения.
HMODULE GetModuleHandle(
LPCTSTR lpModuleName // адрес приложения
);
3. Функция LoadCursorA :
Загружает указанный курсор из исполняемого файла, связанного с экземпляром приложения или файла ресурсов.
HCURSOR LoadCursor(
HINSTANCE hInstance, // дескриптор экземпляра приложения
LPCTSTR lpCursorName //строка с именем курсора или идентификатор ресурса
);
4. Функция LoadIconA :
Загружает указанную пиктограмму из исполняемого файла, связанного с экземпляром приложения, или файла ресурсов.
HICON LoadIcon(
HINSTANCE hInstance, // дескриптор экземпляра приложения
LPCTSTR lpIconName // строка с именем курсора или идентификатор ресурса
);
5. Функция RegisterClassA :
Регистрирует класс окна, атрибуты которого определены в структуре WndClass, для последующего использования. Класс окна может регистрироваться только один раз.
ATOM RegisterClass(
CONST WNDCLASS *lpWndClass // адрес структуры окна
);
6. Функция CreateWindowExA :
Создает перекрытое, всплывающее или дочернее окно с расширенным стилем.
HWND CreateWindowEx(
DWORD dwExStyle, // расширенный стиль окна
LPCTSTR lpClassName, // спецификация имени класса окна
LPCTSTR lpWindowName, // заголовок окна
DWORD dwStyle, // стиль окна
int x, // горизонтальная позиция окна
int y, // вертикальная позиция окна
int nWidth, // ширина окна
int nHeight, // высота окна
HWND hWndParent, // дескриптор родительского, дочернего окна
HMENU hMenu, // дескриптор меню
HINSTANCE hInstance, // дескриптор приложения
LPVOID lpParam // pointer to window-creation data
);