Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uchebnik.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
557.61 Кб
Скачать

1.2 Программирование в среде ос Windows

1.2.1 Основные понятия

Главным элементом программы в среде Windows является окно. Для каждого окна определяется своя процедура обработки сообщений. Подобные процедуры, вызываемые самой системой, называются процедурами обратного вызова (CALLBACK).

Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами. События, происходящие с этими элементами (и самим окном), приводят к приходу сообщений в процедуру окна. У каждого окна имеется свой идентификатор (дескриптор, handle) окна.

ОС Windows является событийно-управляемой операционной системой [1].Т.е. выполнение той или иной процедуры в приложении инициируется при наступлении определенного события (щелчка мыши, нажатия клавиши и т.п.). Для оповещения приложений о наступлении того или иного события используется механизм сообщений. Таким образом, приложение должно постоянно обрабатывать посланные ему сообщения: какие-то из этих сообщений будут обрабатываться с помощью определенных процедур, какие-то игнорироваться.

Для того чтобы приложение могло определить, какому окну было послано сообщение, в каждом сообщении передается идентификатор окна, которому адресуется данное сообщение.

В общем случае, при посылке сообщения приложению, ОС передает следующую информацию [2].

typedef struct tagMSG { // msg

HWND hwnd;

UINT message;

WPARAM wParam;

LPARAM lParam;

DWORD time;

POINT pt;

} MSG;

где

hwnd - идентификатор окна, оконная процедура которого получает сообщение

message - определяет номер (код) сообщения .

wParam - определяет дополнительную информацию о сообщении. Точное значение этого поля зависит от кода сообщения (значения поля message).

lParam - определяет дополнительную информацию о сообщении. Точное значение этого поля зависит от кода сообщения (значения поля message).

time - определяет время, когда было размещено сообщение в очереди сообщений окна.

pt - определяет позицию курсора, в координатах экрана, в момент, когда было размещено сообщение.

Однако, микропроцессор не обрабатывает типы данных под названием "HWND", "UINT", "WPARAM" и т.д. - это так называемые логические типы данных. Микропроцессор оперирует двоичными числами, и с этой точки зрения, большинство параметров являются 32-х разрядными двоичными числами1.

Необходимо отметить, что при обработке строк символов (заголовков окна, текстов сообщений) в качестве параметра передается указатель на строку. С учетом того, что в ОС Windows в основном используется плоская модель памяти (см. раздел 2) , указатель является 32-х разрядным числом5. При этом, согласно все ключевые функции создания окон, вывода текста, манипулирования строками и т.п. обрабатывают строки в кодировке Unicode (в Unicode для кодирования символов может использоваться от 1 до 4 байт - UTF-8, однако в Windows используется кодировка UTF-16, предполагающая кодирование любого символа 16 битами). Если какой-либо функции Windows передать при вызове строку в кодировке ANSI (для кодирования символа используется 1 байт), то эта строка сначала будет преобразована в строку в кодировке Unicode, и лишь затем обработана. Поэтому, для повышения производительности приложений предпочтительней использовать строки в кодировке Unicode.

Классическая структура программы под Windows состоит из следующих разделов кода [2]:

  • Регистрация класса окон

  • Создание главного окна

  • Цикл обработки очереди сообщений

  • Процедура главного окна

В программе могут присутствовать и другие разделы, но вышеперечисленные разделы образуют основной скелет программы. Пример программы приведен в приложении А.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]