Листинг 6.8

LRESULT API ENTRY ChldWndProc (HWND hWndC.UINT message.
WPARAM wParam.LPARAM lParam)
{
RECT R;
switch (message) {
case WM_CHAR:
if (LOWORD(wParam)-VK_RETURN || i>-20) {

//Ввод закончен Str[i] - 0:

PostMessage(GetParent(hWndC).WM_COMMAND. MAKEL0NG(NumC. i- sMax); //Код извещения равен i- sMax. Послали сообщение основному окну DestroyWindow(hWndC); //и уничтожаем дочернее. UnregisterClass("ReadStг".GetModuleHandle(NULL)); i - 0;

}
else
{
if(++i<-sMax)

Str[i-l]=(char )L0W0RD(wParam); //Дописываем символ в строку InvalidateRect(hWndC.NULL.1): //и посылаем WM_PAINT для обновления

//текста

//После достижения конца строки Password продолжается увеличение i

}
break;
case WM_PAINT:

//Это сообщение порождается при обработке введенного символа в дочернем //окне или по событиям в родительском окне (например, при изменении //размера родительского окна).

продолжение &

Дочерние окна

Листинг 6.8 {продолжение)

{
PAINTSTRUCT ps;
GetCIientRect(Get Pa rent(hWndC).&R):

MoveWi ndow(hWndC.R.1eft.R.bottom-i Hei ght.R.ri ght.R.bottom-i Hei ght.1): BeginPaint(hWndC.Sps); SetBkMode(ps.hdc. TRANSPARENT); TextOutCps.hdc.0.0."Введи пароль: ".14);

TextOut(ps.hdc.l5*8.0.Sym. j); //На экране отображается не введенная //строка, а равная ей по длине часть строки Sym. состоящая из //символов-заполнителей. EndPaint(hWndC.&ps);

}
return 0; default:
return DefWi ndowProc(hWndC.message.wPa ram.1 Pa ram);
}
return 0: }

Если во время ввода пароля щелкнуть левой кнопкой мыши в рабочей области родительского окна, то функция InitStrO будет вызвана повторно, но процесс ввода пароля не прервется, так как переменная i, которая служит счетчиком введенных символов пароля, функцией InitStrO не обнуляется. Данное поведение может напоминать работу модального окна, создаваемого функцией MessageBoxC), но в отличие от него функция InitStrO возвращает управление сразу же после создания окна, а не ждет его уничтожения. После завершения Ini tStr() приложение ожидает получения строки, не занимая процессорного времени.


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