К органам управления Windows относятся различные виды кнопок, окна-списки, окна-редакторы, строки текста, полосы просмотра и пр. С точки зрения Windows это обычные дочерние окна (родительским окном при этом может быть не только окно диалога, но и перекрывающееся окно).
Взаимодействие между родительским окном (окно диалога) и органами управления осуществляется посредством сообщений. Когда пользователь производит какое-то действие с органом управления (нажимает кнопку «ОК», завершает ввод текста в окно-редактор и т.п.), функции окна-родителя передается сообщение WM_COMMAND. В этом сообщении параметр wParam содержит индекс органа управления как одной из составных частей окна диалога, а параметр lParam - специальную дополнительную информацию.
Последовательность действий, которую нужно выполнить для создания дочернего окна, следующая:
1) Зарегистрировать класс окна.
2) Создать дочернее окно функцией CreateWindow, указав зарегистрированный класс окна.
3) В функцию окна органа управления определить дескриптор дочернего окна при помощи функции GetParent.
4) По тому или иному действию пользователя «уведомлять» родительское окно соответствующими сообщениями при помощи функции SendMessage.
Для органов управления как дочерних окон не требуется регистрировать класс окна - в Windows определены стандартные классы окон - органов управления: «button», «edit», «scrollbar», «listbox» и пр. Эти классы, наряду с родительскими классами окон, рассмотренными ранее, образуют стандартную иерархию окон-объектов Windows, для стандартных органов управления определены также стандартные функции окон.
При использовании стандартных классов Windows процедура создания органа управления упрощается до одной строки: вызова функции CreateWindow с указанием стандартного класса. Стандартные органы управления посылают функции родительского окна стандартные сообщения Windows, определенные в файле windows.h. Для каждого класса органов управления определены свои сообщения, которыми они обмениваются с функцией родительского окна.
Рассмотрим классы органов управления, определенные в Microsoft Windows.