- •2.3. Цикл сообщений 15
- •2.4. Функция окна 16
- •1. Концепция программирования под Windows. Основные понятия
- •1.1. Программная среда Windows
- •1.2. Интерфейс вызовов функций в Windows
- •1.3. Библиотеки динамической загрузки
- •1.5. Интерфейс gdi
- •1.6. Многозадачность в Windows
- •1.7. Взаимодействие программ и Windows
- •1.8. Основы программирования под Windows
- •1.8.1.Функция WinMain()
- •1.8.2. Функция окна
- •1.8.3. Цикл сообщений
- •1.8.4. Класс окна
- •1.8.5. Специфика программ для Windows
- •1.8.6. Типы данных в Windows
- •1.8.7. Соглашение об использовании имен
- •1 Вертикальная полоса прокрутки .9. Элементы окна
- •2. Каркас программы под Windows. Создание окна
- •2.1. Каркас программы для Windows 95
- •2.1. Определение класса окна
- •2.2. Создание окна
- •2.3. Цикл сообщений
- •2.4. Функция окна
- •3. Порядок выполнения работы
1.8.5. Специфика программ для Windows
Как вы уже заметили, структура Windows-программ отличается от структуры программ других типов. Это вызвано двумя обстоятельствами: во-первых, способом взаимодействия между программой и Windows, описанным выше; во-вторых, правилами, которым следует подчиняться для создания стандартного интерфейса Windows-приложения (т.е. чтобы сделать программу "похожей" на Windows-приложение).
Цель Windows — дать человеку, который хотя бы немного знаком с системой, возможность сесть за компьютер и запустить любое приложение без предварительной подготовки. Для этого Windows предоставляет дружественный интерфейс пользователя. Теоретически, если вы сумели запустить одно Windows-приложение, то сумеете запустить и любое другое. Конечно, на практике придется немного потренироваться, чтобы научиться использовать большинство программ с максимальной эффективностью. Однако это связано исключительно с тем, что программа делает, а не с тем, как ею пользоваться. Ведь, фактически, значительная часть кода Windows-приложения предназначена именно для организации интерфейса с пользователем.
Хотя создание удобного интерфейса "под Windows" является основной задачей при написании любой Windows-программы, такой интерфейс не создается автоматически .
То есть вполне можно написать программу, в которой элементы интерфейса используются неэффективно. Чтобы этого избежать, необходимо целенаправленно применять методику, описанную в данной книге. Только программы, написанные таким способом, будут выглядеть и работать действительно так, как надлежит Windows-программам.
Чтобы отойти от философии создания традиционного Windows-интерфейса, должны быть достаточно веские основания. Иначе пользователи вашей программы будут разочарованы. В общем, если вы собираетесь писать приложения для Windows, дайте пользователям возможность работать с обычным интерфейсом и руководствуйтесь стандартной методикой разработки.
1.8.6. Типы данных в Windows
Как вы вскоре убедитесь, в Windows-программах не слишком широко применяются стандартные типы данных из С или C++, такие как hit или char*. Вместо них используются типы данных, определенные в различных библиотечных (header) файлах. Наиболее часто используемыми типами являются HANDLE, HWND, BYTE, WORD, DWORD, UINT, LONG, BOOL, LPSTR и LPCSTR. Тип HANDLE обозначает 32-разрядное целое, используемое в качестве дескриптора. Есть несколько похожих типов данных, но все они имеют ту же длину, что и HANDLE, и начинаются с литеры Н. Дескриптор — это просто число, определяющее некоторый ресурс. Например, тип HWND обозначает 32-разрядное целое — дескриптор окна. В программах, использующих библиотеку MFC, дескрипторы применяются не столь широко, как это имеет место в традиционных программах. Тип BYTE обозначает 8-разрядное беззнаковое символьное значение, тип WORD — 16-разрядное беззнаковое короткое целое, тип DWORD — беззнаковое длинное целое, тип UINT — беззнаковое 32-разрядное целое. Тип LONG эквивалентен типу long. Тип BOOL обозначает целое и используется, когда значение может быть либо истинным, либо ложным. Тип LPSTR определяет указатель на строку, а LPCSTR — константный (const) указатель на строку.