- •Лабораторна робота №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
Акселераторы
Акселератор позволяет выбирать пункт меню просто сочетанием клавиш. Это очень удобно и быстро. Таблица акселераторов является ресурсом, имя которого совпадает с именем того меню (ресурса), пункты которого она определяет.
Вот пример такой таблицы. Определяется один акселератор на пункт меню MENUP, имеющий идентификатор 4.
MENUP ACCELERATORS
{
VK_F5, 4,VIRTKEY
}
А вот общий вид таблицы акселераторов:
Имя ACCLERATORS
{
Клавиша 1, Идентификатор пункта меню (1) [,тип][,параметр]
Клавиша 2, Идентификатор пункта меню (2) [,тип][,параметр]
Клавиша 3, Идентификатор пункта меню (3) [,тип][,параметр]
…
Клавиша N, Идентификатор пункта меню (N) [,тип][,параметр]
}
Клавиша– это любой символ в кавычках, либоASCII-код символа, либо виртуальная клавиша. Если вначале стоит код символа, то тип задается какASCII. Если используется виртуальная клавиша, то тип определяется какVIRTUAL. Все названия (макроимена) виртуальных клавиш можно найти вinclude– файлах (windows.h).
Параметр может принимать одно из следующих значений: NOINVERT,ALT,CONTROL,SHIFT. ЗначениеNOINVERTозначает, что не подсвечивается выбранный при помощи акселератора пункт меню. ЗначениеALT, SHIFT, CONTROLозначают, что, кроме клавиши, определенной в акселераторе, должна быть нажата одна из управляющих клавиш. Кроме этого, если клавиша определяется в кавычках, то нажатие при этом клавишиCONTROLопределяется знаком ^: ^A.
Для того чтобы акселераторы работали, необходимо выполнить два условия:
должна быть загружена таблица акселераторов. Для этого используется функция LoadAccelerators;
сообщения, пришедшие от акселератора, следует преобразовать в сообщение WM_COMMAND. Здесь нам пригодится функцияTranslateAccelerator.
Функция TranslateAcceleratorпреобразует сообщенияWM_KEYDOWNиWM_SYSKEYDOWNв сообщенияWM_COMMANDиWM_SYSCOMMANDсоответственно. При этом в старшем слове параметраWPARAMпомещается 1 как отличие для акселератора. В младшем слове, как вы помните, содержится идентификатор пункт меню. СообщениеWM_SYSCOMMANDгенерируется для пунктов системного меню или меню окна.
Функция TranslateAcceleratorвозвращает ненулевое значение, если было произведено преобразование сообщения акселератора, в противном случае возвращает 0.
Api – функции
Функция LoadIconA
Загружает указанный ресурс пиктограммы из исполняемого файла, связанного с экземпляром приложения.
HICON LoadIcon (
HINSTANCE hInstance, //дескриптор экземпляра приложения
LPCTSTR lpIconName //строка с именем пиктограммы или
); //идентификатор ресурса
Функция Shell_NotifyIconA
Посылает сообщение системе добавить, изменить или удалить иконку в системной области (System Tray).
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage, //идентификатор сообщения
PNOTIFYICONDATA pnid //точка входа в структуру
);
Функция LoadMenu
Загружает меню из ресурса в контекст приложения
HMENU LoadMenu(
HINSTANCE hInstance, //дескриптор приложения
LPCTSTR lpMenuName); //имя ресурса
Функция SetMenu
Назначает новое меню указанному окну.
BOOL SetMenu(
HWND hWnd, //дескриптор окна
HMENU hMenu //дескриптор меню
);
Функция DrawMenuBar
Перерисовывает меню указанного окна
BOOL DrawMenuBar(
HWND hWnd //дескриптор окна
);
Функция LoadCursorA
Загружает системный курсор или курсор определенный в файле ресурсов
HMENU LoadCursor(
HINSTANCE hInstance, //дескриптор приложения
LPCTSTR lpCursorName //строка с именем курсора или
); //идентификатор ресурса
Функция LoadBitmapA
Загружает битовую картинку определенную в файле ресурсов
HMENU LoadBitmap(
HINSTANCE hInstance, //дескриптор приложения
LPCTSTR lpBitmapName //строка с именем битовой картинки
); //или идентификатор ресурса
Функция LoadStringA
Загружает строку, определенную в файле ресурсов
HMENU LoadString (
HINSTANCE hInstance, //дескриптор приложения
LPCTSTR lpStringName //строка с именем строки или
); //идентификатор ресурса
Функция SetFocus
Устанавливает фокус на заданное окно
Функция DestroyMenu
Удаляет меню из памяти
Функция GetMenuItemInfo
Получает информацию о выбранном пункте меню
