
- •Программирование для Windows
- •Литература
- •Вам необходимо знать и уметь
- •Первая программа
- •Соглашения операционной системы Windows
- •Вызовы функций Windows
- •Идентификаторы, написанные прописными буквами
- •Новые типы данных
- •Описатели
- •Венгерская нотация
- •Точка входа программы
- •Оконная процедура
- •Регистрация класса окна
- •Создание окна
- •Отображение окна
- •Цикл обработки сообщений
- •Оконная процедура
- •Обработка сообщений
- •Воспроизведение звукового файла
- •Сообщение wm_paint
- •Сообщение wm_destroy
- •Сложности программирования для Windows
- •Синхронные и асинхронные сообщения
- •Думайте о пользователе
- •Лекция3. Приступаем с изучению компонент
- •Урок 4. Класс tObjectи его потомки
- •Урок 5. Работа с кнопками
- •Урок 6. Компонент ActionList
- •Урок 7. Работаем с меню (класс tMainMenu)
- •Урок 8. Работаем с контекстным меню (класс tPopupMenu)
- •Урок 9. Компонент Edit
- •Урок 10. Работаем с двумя формами
- •Урок 11. Текст (компоненты tLabel и tStaticText)
- •Урок 12. Компонент ListBox
- •Урок 13. Компонент ComboBox
- •Урок 14. Используем api-функции
- •Урок 15. Разные MessageBox'ы
- •Урок 16. Компонент CheckBox
- •Урок 17. Компонент RadioButton
- •Урок 18. Класс tStrings
- •Урок 19. Класс tStringList
- •Урок 20. Работаем с сетью. Клиент (класс tClientSocket)
- •Урок 21. Работаем с сетью. Сервер (класс tServerSocket)
- •Урок 22. Компонент ImageList
- •Урок 23. Пересчитываем компоненты на форме
- •Урок 24. Форма - добавление методов
- •Урок 25. Форма - добавление полей
- •Урок 27. Значок на панели задач (компонент tTrayIcon)
- •Урок 28. Работаем со сплиттером
- •Урок 29. Компонент Panel
- •Урок 30. Совместное использование сплиттера и Panel'ей
- •Урок 31. Компонент HotKey
- •Урок 32. Компонент StatusBar
- •Урок 33. Установка главной формы приложения
- •Урок 34. Рисование на форме
Соглашения операционной системы Windows
Перед тем как заняться деталями, давайте рассмотрим HELLOWIN.C в целом. В файле имеется только две функции: WinMainиWndProc.WinMain— это точка входа в программу. Это аналог стандартной функции main языка С. В любой программе для Windows имеется функцияWinMain.
WndProc— это "оконная процедура" для окна HELLOWIN. Каждое окно, независимо от того, является ли оно большим, как главное окно приложения для Windows, или маленьким, как кнопка, имеет соответствующую оконную процедуру. Оконная процедура — это способ инкапсулирования кода, отвечающего за ввод информации (обычно с клавиатуры или мыши) и за вывод информации на экран. Оконная процедура делает это, посылая "сообщения" окну. Не беспокойтесь о том, как именно это происходит. Позже у вас будет масса времени для того, чтобы попытаться решить эту проблему.
В HELLOWIN.C отсутствуют инструкции для непосредственного вызова WndProc:WndProcвызывается только из Windows. Однако, вWinMainимеется ссылка наWndProc, поэтому эта функция описывается в самом начале программы, еще до определенияWinMain.
Вызовы функций Windows
Весь основной функционал Windows реализуются посредством вызовов функций примерно также, как используются библиотечные функции С, напримерstrlen.
HELLOWIN вызывает не менее 17 функций Windows. Здесь перечислены эти функции в порядке их появления в программе (с кратким описанием каждой функции):
LoadIcon— загружает значок для использования в программе.
LoadCursor— загружает курсор мыши для использования в программе.
GetStockObject— получает графический объект (в этом случае для закрашивания фона окна используется кисть).
RegisterClassEx— регистрирует класс окна для определенного окна программы.
CreateWindow— создает окно на основе класса окна.
ShowWindow— выводит окно на экран.
UpdateWindow— заставляет окно перерисовать свое содержимое.
GetMessage — получает сообщение из очереди сообщений.
TranslateMessage— преобразует некоторые сообщения, полученные с помощью клавиатуры.
DispatchMessage— отправляет сообщение оконной процедуре.
PlaySound— воспроизводит звуковой файл.
BeginPaint— инициирует начало процесса рисования окна.
GetClientRect— получает размер рабочей области окна.
DrawText— выводит на экран строку текста.
EndPaint— прекращает рисование окна.
PostQuitMessage — вставляет сообщение "завершить" в очередь сообщений.
DefWindowProc— выполняет обработку сообщений по умолчанию.
Эти функции описаны в документации или системе контекстной подсказки, поставляемой с вашим компилятором, а описаны они в различных заголовочных файлах из WINDOWS.H.
Идентификаторы, написанные прописными буквами
В дальнейшем вы обратите внимание на использование в HELLOWIN.H нескольких идентификаторов, полностью написанных прописными буквами. Эти идентификаторы задаются в заголовочных файлах Windows. Некоторые из этих идентификаторов содержат двухбуквенный или трехбуквенный префикс, за которым следует символ подчеркивания:
CS_HREDRAW |
DT_VCENTER |
WM_CREATE |
CS_VREDRAW |
IDC_ARROW |
WM_DESTROY |
CW_USEDEFAULT |
IDI_APPLICATION |
WM_PAINT |
DT_CENTER |
SND_ASYNC |
WS_OVERLAPPEDWINDOW |
DT_SINGLELINE |
SND_FILENAME |
|
Это просто числовые константы. Префикс показывает основную категорию, к которой принадлежат константы, как показано в данной таблице:
Префикс |
Категория |
CS |
Опция стиля класса |
IDI |
Идентификационный номер иконки |
IDC |
Идентификационный номер курсора |
WS |
Стиль окна |
CW |
Опция создания окна |
WM |
Сообщение окна |
SND |
Опция звука |
DT |
Опция рисования текста |
Программируя для Windows, почти никогда не нужно запоминать числовые константы. Фактически для любой числовой константы, которая используется в Windows, в заголовочных файлах имеется идентификатор.