Учебные материалы по математике | Методы оконной функции visual basic | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Методы оконной функции visual basic


79.Первый способ отображения информации в окне, использующий API-функции ядра (процедура Main: регистрация класса, создание и отображение окна приложения, цикл обработке сообщений, оконная функция). Пример.

Первый способ основан на не посредственном создании отображении главного окна приложения, получении его дескриптора и обработки сообщений, посылаемых окну ядром Windows. Этот способ включает описание класса окна, его регистрацию, отображение, а так же описание оконной функции, обрабатывающей все сообщения, посылаемые ядром Windows программе.

Каждая программа, которая самостоятельно создает главное окно приложения(первый способ), должна состоять из двух обязательных частей:•процедуры Main(«стартующий»объект), являющейся точкой входа в программу, в которой определяются атрибуты класса окна, осуществляется регистрация класса, формируется стиль окна, создается экземпляр окна в памяти, отображается окно, и наконец, запускается цикл обработки сообщений;

•оконной функции, обрабатывающей все сообщения Windows.

80.Второй способ отображения информации в окне, использующий API-функции ядра (форма Visual Basic и оконная функция). Пример.

Второй способ Вам уже знаком и отличается от первого способа лишь тем, что основана использовании стандартного окна(формы), предлагаемого средой VB. Единственное, что необходимо здесь делать, так это получать от ОС дескриптор формы(обычно он уже определен в виде свойства) или его объекта для отображения на нем графической информации, изменять, если это необходимо атрибуты окна и класса окна функциями SetWindowLong, SetClassLong.

81. Методы оконной функции.

Оконная функция Window обрабатывает сообщения, посылаемые окну ядром Windows. Имя оконной функции присваивает пользователь при регистрации класса, а вызывается она непосредственно ядром Windows. Окно всегда создается на основе класса окна, в котором должны быть описаны основные характеристики главного окна. В частности, при определении адреса оконной функции используется скрытая функция AddressOf в качестве аргумента дополнительной функции GetAddress.wc. lpfnwndproc= GetAddress(AddressOfWindow) К атрибутам класса относят: наличие и тип иконки, курсора, шаблон заполнения фона, наличие меню и ряд других параметров. Для того чтобы можно было использовать в дальнейшем созданный класс окна, его необходимо зарегистрировать в Windows вызовом API-функции RegisterClass (ClassAsWNDCLASS) AsLong Значение, отличное от нуля, возвращаемое этой функцией, означает успешное завершение операции регистрации. Константы, определяющие стиль окна, имеют префикс CS. Стили CS_VREDRAW OrCS_HREDRAW используются, если содержимое окна должно быть перерисовано при изменении размеров по вертикали и горизонтали. Чтобы окно получало сообщения о двойном нажатии кнопок мыши(константы сообщений WM_LBUTTONDBLCLK, WM_MBUTTONDBLCLK, WM_RBUTTONDBLCLK),необходимо еще установить стиль окна CS_DBLCLKS. Поле hInstanse определяет дескриптор на сегмент данных экземпляра программы или дескриптор exe-файла, что позволяет Windows запускать несколько экземпляров одной и той же программы, при использовании одного экземпляра программного кода. Поле hIcon определяет дескриптор иконки для всех окон в минимизированном состоянии, созданных на основе этого класса. Для получения дескриптора стандартной(предопределенной в системе) иконки необходимо воспользоваться функцией LoadIcon с нулевым значением первого параметра. В Windows предопределены 5 типов иконок. Поле hCursor определяет дескриптор курсора, используемого в программе. Для использования стандартного курсора в программе необходимо воспользоваться функцией LoadCursor с нулевым значением первого параметра. В Windows предопределены 12 типов курсоров. Поле hbrBackground определяет дескриптор кисти в качестве шаблона заполнения фона всех окон, созданных на основе этого класса. С помощью API-функции GetStockObject осуществляется выбор стандартного шаблона кисти, например, черного цвета:wc. Hbr Background=GetStockObject(Black_brush) Имеется способ задания цвета фона окна, используя дескриптор кисти одного из объектов Windows(окна,

рамки, заголовка и т. п.), определенный в виде константы с префиксом color_, увеличенной на единицу, например :wc. hbrBackground= COLOR_APPWORKSPACE+1

Оконная функция Wind осуществляет непосредствен-ную обработку сообщений. Первый параметр оконной функции-дескриптор окна, которому принадлежит сообщение, то есть дескриптор, возвращаемый функцией CreateWindowEx. Второй параметр-идентификатор(константа) сообщения, остальные-зависят от типа сообщения.

82.Константы сообщений при работе с мышью и клавиатурой. Программная обработка констант сообщений.

Процедура Translate Message передает структуру типа MSG обратно ядру Windows для преобразования константы сообщения, содержащей виртуальный код клавиши, в константу сообщения, содержащую физический код клавиши. Существует много кодовых таблиц, в которых одинаковым по функциональному назначению клавишам соответствуют различные физические коды. В кодировке Win-1251 символ кириллицы «А» имеет код 192, в кодировке ISO -176, а в кодировке КОИ-8 -225 (табл.18). Поэтому, чтобы не зависеть от конкретной кодовой таблицы, используемой в компьютере, применяют виртуальный код клавиш. Эту процедуру можно опустить, если Вы не работаете с клавиатурой. Например, если Вы нажали или отпустили клавишу на клавиатуре, то ядро сгенерирует сообщение структуры

MSG, в которой поле message будет содержать константу WM_KEYDOWN или WM_KEYUP, а поле wparam-код виртуальной клавиши. Перечислим некоторые коды виртуальных клавиш. VK_CONTROL –нажата клавиша CTRL;

VK_SHIFT –нажата клавиша SHIFT;

VK_MENU –нажата клавиша ALT;

VK_RETURN –нажата клавиша ENTER;

VK_BACK –нажата клавиша BACKSPACE;

VK_F1… VK_F9 –нажата клавиша из диапазона F1… F9; VK_INSERT –нажата клавиша INSERT;

VK_DELETE –нажата клавиша DELETE;

VK_SPACE –нажата клавиша SPACE;

VK_M-нажата клавиша M;

VK 1-нажата клавиша 1.

При помощи функции Translate Message константы сообщений WM_KEYDOWN и WM_KEYUP, содержа-щихся в поле message, преобразуются в константы WM_CHAR и WM_DEADCHAR, а код виртуальной клавиши, содержащийся в поле wparam, будет содержать код ANSI-клавиши. Процедура DispatchMessage выполняет диспетчеризацию сообщения, то есть вновь направляет сообщение в оконную функцию. Оконная функция Wind осуществляет непосредственную обработку сообщений. Первый параметр оконной функции-дескриптор окна, которому принадлежит сообщение, то есть дескриптор, возвращаемый функцией CreateWindowEx. Второй параметр-идентификатор (константа) сообщения, остальные-зависят от типа сообщения. Обычно wparam(3-йпараметр) содержит код сообщения(например, код виртуальной клавиши или код символа ANSI), в старшем слове параметра lparam содержится дескриптор окна, а в младшем слове-целое значение, уникальное для конкретного типа сообщения. Для ряда сообщений lparam содержит пару координат манипулятора мыши. Наша оконная функция обрабатывает всего лишь три сообщения-WM_PAINT, WM_LBUTTONUP, WM_DESTROY. Сообщение WM_PAINT позволяет отображать графическую информацию в окне и перерисовывать содержимое окна после его сворачивания. При нажатии и последующем отпускании и левой кнопки мыши генерируется сообщение WM_LBUTTONUP, которое поступает в цикл обработки сообщений оконной функции. В результате с помощью функции SendMessage генерируется сообщение к ОС Windows-WM_CLOSE, которое означает, что ОС должна закрыть окно (дескриптор ghWnd). Тоже сообщение посылается к Windows и при выборе команды Закрыть из системного меню или после нажатия клавиш ALT+F4. Определив, какому окну принадлежит сообщение, Windows генерирует ответное сообщение WM_DESTROY, которое, попав в оконную функцию, завершает процесс графического отображения информации в окне(функция EndPaint) и с помощью процедуры PostQuitMessage генерирует последнее сообщение — WM_QUIT. Получив это сообщение, функция GetMessege возвращает нулевое значение, и цикл обработки сообщений заканчивается и программа завершается. Ввод информации может происходить не только с клавиатуры, но и с использованием манипулятора мышь. При этом ядро Windows, прежде чем поместить сообщение в очередь, проверяет, не исходит ли предыдущее сообщение также от мыши, так как в большинстве случаев необходимо знать лишь конечную точку перемещения мыши. Таблица45

Константы сообщений Действие над мышью WM_MOUSEMOVE Перемещение WM_LBUTTONDOWN Нажата левая кнопка WM_LBUTTONUP Отпущена левая кнопка WM_MBUTTONDOWN Нажата средняя кнопка WM_MBUTTONUP Отпущена средняя кнопка WM_RBUTTONDOWN Нажата правая кнопка WM_RBUTTONUP Отпущена правая кнопка WM_LBUTTONDBLCLK Двойное нажатие левой кнопки WM_MBUTTONDBLCLK Двойное нажатие средней WM_RBUTTONDBLCLK Двойное нажатие правой кнопки

83.Методы SetWindowLong, SetClassLong, SetWindowPos.

Функция SetWindowLong заменяет атрибут стpуктуpы класса окна новым значением и возвращает предыдущее значение класса окна. Имеет следующие паpаметpы: hWnd-дескриптор окна; nIndex-одна из констант: GWL_EXSTYLE, GWL_STYLE, GWL_WNDPROC или положительное смещение в байтах для доступа к дополнительным четыpех байтным значениям; dwNewLong—значение атрибута замены. Функция SetClassLong (ByValhwndAsLong, ByValnIndexAsLong, ByValdwNewLongAsLong) –устанавливает в нужное поле структуры WndClass соответствующее значение и возвращает старое значение поля или ноль, если ошибка. Она является парной функцией к функции GetClassLong. Имеет следующие параметры: hWnd-дескриптор окна; nIndex-одна из

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020