- •Int cbClsExtra;
- •Int cbWndExtra;
- •Создание и отображение окна
- •Int nWidth,
- •Int nHeight,
- •Оконная процедура
- •Int winapi MessageBox(
- •6) Дочернее окно может по своему дескриптору Chld получить дескриптор родительского окна при помощи функции:
- •8) При уничтожении родительского окна сообщение wm_destroy также рассылается всем дочерним окнам.
- •Параметры:
- •10) При уничтожении дочернего окна функцией DestroyWindow() родительскому окну тоже передается сообщение wm_destroy.
- •4) После того, как дочернее окно было создано, оно может посылать сообщение wm_command, уведомляющие pодительское окно об изменении своего состояния.
- •7) В программе функция InitStr() объявлена следующим образом:
- •Void InitStr(hwnd hWnd, char *s, int Max, char Sy);
- •Void InitStr(hwnd hWnd,char *s,int Max,char Sy)
- •11) Код функции обработки пароля приведён в листинге:
- •If(IsIconic(hwnd)) ShowWindow(hwnd,sw_restore);
- •If (!RegClass(WndProc,szMainClass,color_desktop))
8) При уничтожении родительского окна сообщение wm_destroy также рассылается всем дочерним окнам.
9) Для передачи сигналов от дочернего окна родительскому используется сообщение WM_PARENTNOTIFY, передаваемое в оконную процедуру родительского окна при создании и закрытии дочернего окна, а также при щелчках мыши в дочернем окне.
Сообщение WM_PARENTNOTIFY посылается дочерним окном родительскому окну при его создании или разрушении, а также при нажатии в нем кнопки мыши, в то время как курсор находится над дочерним окном.
Синтаксис
WM_PARENTNOTIFY:
fwEvent = LOWORD(wParam); // флаг события
idChild = HIWORD(wParam); // идентификатор дочернего окна
lValue = lParam; // дескриптор дочернего окна, или координаты курсора
Параметры:
fwEvent |
Определяет событие, о котором уведомляется родитель. Этот параметр может быть одним из следующих значений:
|
||||||||||||||
idChild |
Если параметр fwEvent равен WM_CREATE или WM_DESTROY, то idChild определяет идентификатор дочернего окна. В других случаях, idChild не определен. |
||||||||||||||
lValue |
Содержит дескриптор дочернего окна (полученный в LOWORD(lParam)), если параметр fwEvent равен WM_CREATE или WM_DESTROY; в других случаях, lValue содержит x- и y-координаты курсора. x-координата находится в младшем слове, а y-координата находится в старшем слове. |
10) При уничтожении дочернего окна функцией DestroyWindow() родительскому окну тоже передается сообщение wm_destroy.
Ввод строки пароля в дочернем окне
В программе для Windows ввод строки может состоять из трех этапов.
1) На первом этапе создаётся главное окно приложения, устанавливаются начальные значения рабочих переменных, обозначается на экране место для отображения вводимой строки и осуществляется иная подготовительная работа.
2) На втором этапе создается дочернее окно. Его оконная процедура принимает символы по мере их поступления и заносит в строку.
3) На третьем этапе процесс извещается о получении строки. Для реализации этого этапа можно создать функцию InitStr().
4) После того, как дочернее окно было создано, оно может посылать сообщение wm_command, уведомляющие pодительское окно об изменении своего состояния.
Параметр |
Описание |
LOWORD (wParam) |
Идентификатор дочернего окна |
HIWORD (wParam) |
Код уведомления |
lParam |
Описатель дочернего окна |
Поэтому, после создания дочеpних окон, pодительское окно должно обрабатывать сообщения WM_COMMAND, чтобы быть способным получать коды уведомления от дочеpних окон.
5) Ввод пароля можно организовать при помощи функции InitStr(), примерный синтаксис которой приведен ниже:
InitStr(HWND,<строка приёма пароля>,<размер строки>,<символ-заполнитель>)
6) Ввод пароля в строку char PassWord[7] организуется по щелчку левой кнопкой мыши в главном окне. В оконной процедуре главного окна WndProc вызывается функция запуска ввода пароля.
case WM_LBUTTONDOWN:
InitStr(hWnd, PassWord, 8, '*');
break;