Чтобы не пользоваться глобальной переменной hWnd, дочернее окно может по своему дескриптору Chid получить дескриптор родительского окна при помощи функции GetParent (Chid).

Ввод строки пароля в дочернем окне Если в родительское окно поступает сообщение WMPAINT и дефектная область пересекается с дочерним окном, это сообщение будет передано также и дочернему окну. Это приводит к тому, что выполнение функции Invâl idâteRect(hWnd.NULL. TRUE) вызовет поступление сообщения WM_PAINT во все дочерние окна.

При уничтожении родительского окна сообщение WM_DESTROY также рассылается всем дочерним окнам.

Для передачи сигналов от дочернего окна родительскому используется сообщение WM_PARENTNOTIFY, передаваемое в оконную процедуру родительского окна при создании и закрытии дочернего окна, а также при щелчках мыши в дочернем окне. Можно сказать, что дочернее окно, получая сообщения WM_CREATE, WM_LBUTT0ND0WN, WM_MBUTT0ND0WN, WM_RBUTT0ND0WN или WM_DESTROY, использует WM_PARENTNOTI FY для пересылки кодов этих сообщений окну-предку в младшем слове поля 1 Ра ram. Оконная процедура родительского окна получает в параметрах 1 Pa ram, wParam вместе с сообщением WM_PARENTNOTYFY данные, зависящие от типа события в дочернем окне.

При создании дочернего окна функцией CreateWi ndow( ) в параметре L0W0RDC1 Рагат) передается дескриптор дочернего окна, в параметре HIWORD(wParam) - номер окна, а в LOWORD(wParam) - константа WM_CREATE, равная единице.

Дескриптор, полученный в L0W0RDOРагат), родительское окно может в дальнейшем использовать для посылки сообщений дочернему окну при помощи функции PostMessageO.

При уничтожении дочернего окна функцией DestroyWindow( ) родительскому окну аналогично тоже передается код WM_DESTROY.

Ввод строки пароля в дочернем окне Дочерние окна широко применяются в Windows, чтобы скрыть от приложения внутренние детали реализации графических органов управления. Это можно продемонстрировать на примере организации ввода текстовой строки.

При разработке приложения на языке С++ разработчику потребуется всего один оператор для ввода строки. В программе для Windows ввод строки может состоять из трех этапов, разделенных как во времени, так и по локализации программного кода. На первом этапе устанавливаются начальные значения рабочих переменных, обозначается на экране место для отображения вводимой строки и осуществляется иная подготовительная работа. Функции, реализующей этот этап, могут передаваться дескриптор окна, из которого затребован ввод строки, адрес и размер буфера для ввода символов, а также другие необходимые данные. На втором этапе создается дочернее окно. Его оконная процедура принимает символы по мере их поступления и заносит в строку. И на завершающем этапе процесс извещается о получении строки. Для реализации этого этапа в функцию Ini tStr( ) можно включить еще один параметр, в котором указывается имя функции завершения, которая вызывается после ввода последнего символа строки. Примерный синтаксис функции InitStr( ) приведен ниже:


⇐ Предыдущая| |Следующая ⇒