После первого щелчка в рабочей области родительского окна левой кнопкой мыши и до завершения ввода пароля дескриптор Chi d не будет равен нулю. Чтобы продемонстрировать вызов Unregi sterClass(), функция при повторном вызове уничтожает окно и отменяет регистрацию класса. Возможно, проще было бы регистрировать класс и создавать окно только при выполнении условия Chld==0.
Графические элементы управления Графические элементы управления представляют собой дочерние окна заранее зарегистрированных в Windows классов Static, Edit, Button, ComboBox и многих других. Окно класса Stat i с предназначено для вывода в него текста при помощи функции SetWindowTextC), окно Edit позволяет пользователю вводить строки текста. В отличие от рассмотренного выше примера, исходный текст оконной процедуры графического элемента управления скрыт от программиста. Ему даже не предоставлено доступных функций, таких, как InitStrC) в предыдущем примере. Приложение взаимодействует с графическим элементом управления, посылая сообщения функциями PostMessageO, SendMessageC) и получая в родительском окне сообщение WM_C0MMAND или WM_N0TIFY от дочернего окна. При этом параметры сообщения WM_C0MMAND содержат данные, перечисленные в следующем списке: О 1 Pa ram - дескриптор дочернего окна; О LOWORD(wParam) - идентификатор дочернего окна; О НI WORD (wPa ram) - код извещения, позволяющий определить причину посылки сообщения WMC0MMAND в родительское окно.
При помощи подобных предопределенных классов становится очень легко отображать на экране соответствующие органы управления. Так, для создания кнопки нужно использовать функцию CreateWindow(). В листинге 6.10 показано, как с ее помощью можно в окне hWnd отобразить окно класса button.
Дочерние окна
Листинг 6.10
HWND hNext - CreateWindow("button", "Продолжить", WS_CHILD I WSJISIBLE | BSJUSHBUHON, 10. 50. 90. 20.
hWnd. (HMENU) 10001. GetModuleHandle(NULL). NULL); На экране появится показанное на рис. 6.1 изображение кнопки с надписью Продолжить.