...

Листинг 2.34.

Функция обработки сообщений

function WindowFunc(hWnd:HWND; msg:UINT; wParam:WPARAM;

lParam:LPARAM):LRESULT; stdcall;

var

hOldFont: HFONT;

strBuf: String;

hEditDC: HDC;

begin

case msg of

WM_CLOSE:

if (hWnd = hMainWnd) then PostQuitMessage(0);

WM_CTLCOLOREDIT: //Сообщения от Edit перед перерисовкой

begin

//Зададим тексту Edit выбранный цвет

hEditDC := HDC(wParam);

SetTextColor(hEditDC, curColor);

GetCurrentObject(hEditDC, OBJ_BRUSH);

end;

WM_COMMAND:

if (HIWORD(wParam) = BN_CLICKED) then

begin

//Определим, какая кнопка нажата

case LOWORD(wParam) of

1001: //Открытие файла

begin

SetText(2001, \'Открыт файл:\' + #13 + #10 +

ShowOpen(\'Все файлы|*.*||\'));

end;

1002: //Сохранение файла

begin

SetText(2001, \'Путь для сохранения:\' + #13 + #10 +

ShowSave(\'Все файлы|*.*||\'));

end;

1003: //Выбор цвета

begin

curColor := ShowChooseColor(curColor);

Str(curColor, strBuf);

SetText(2001, \'Выбранный цвет:\' + #13 + #10 + strBuf);

end;

1004: //Выбор шрифта

begin

if (ShowChooseFont(font) = True) then

begin

//Замена шрифта в Edit

hOldFont := HFONT(

SendDlgItemMessage(hMainWnd,2001,WM_GETFONT, 0,0));

hCurFont := CreateFontIndirect(font);

SendDlgItemMessage(hMainWnd, 2001, WM_SETFONT,

Integer(hCurFont),

Integer(True));

SetText(2001, \'Текст, записанный выбранным

шрифтом\');

if (hOldFont <> 0) then DeleteObject(hOldFont);

end;

end;

1010: //Выбор папки

begin

SetText(2001, \'Выбранная папка:\' + #13 + #10 +

ShowChooseFolder());

end;

1011: //Подключение сетевого ресурса

begin

ShowConnection();

end;

1012: //Отключение сетевого ресурса

begin

ShowDisconnect();

end;

1013: //Окно «О программе»

begin

ShowAbout(\'Standart windows\',

\'Демонстрация использования стандартных \' +

\'окон диалога из чистого API-приложения\');

end;

end;

end;

else

begin

//Обработка по умолчанию

WindowFunc := DefWindowProc(hWnd, msg, wParam, lParam);

Exit;

end;

end;

WindowFunc := S_OK; //Сообщение обработано

end;

Обработка сообщений здесь довольно проста, за исключением изменения шрифта текстового поля. Обратите внимание на следующий отрывок листинга 2.34:

Загрузка...