4. Следующий за этим блок кода, обрабатывающий событие прорисовки формы, приведен в листинге 4.15. Листинг 4.15

case WM_PAINT:

RECT rt;

hdc = BeginPaint(hWnd, &ps);

GetClientRect(hWnd, &rt);

FillRect(hdc, &rt, CreateSolidBrush(0xFFFF00));

//LoadString(g_hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

//DrawText(hdc, szHello, _tcslen(szHello), &rt,

//DT_SINGLELINE | DT_VCENTER | DT_CENTER);

EndPaint(hWnd, &ps);

break;

Следует обратить внимание на закомментированные строки. Это именно то изменение, которое нужно внести в код. Переведя эти строки в состояние комментария, можно предотвратить вывод на форму надписи «Hello, Word!». Добавленный в код метод FillRect закрашивает ее в цвет Magenta. Теперь нужно скомпилировать проект и запустить его. Результат выполнения программы показан на рис. 4.5.

Рис. 4.5. Результат выполнения программы Buttons.

Стоит заметить, что две нижние кнопки в правом ряду можно перетаскивать при помощи мыши. 5. Внимательно расмотрев код, можно понять, что, несмотря на разницу в поведении и внешнем виде, практически все кнопки были созданы одной и той же функцией CreateWindow. Правый ряд кнопок был создан при помощи усовершенствованного варианта этой функции CreateWindowEx.

ВНИМАНИЕ!

Несмотря на разницу в поведении и назначении, все основные элементы управления Windows (кнопки, полосы прокрутки, поля ввода текста и т. д.) представляют собой окна Windоws. Они генерируют сообщение WM_COMMAND, создаются при помощи функции Create-Window, и разница между создаваемыми элементами определяется только аргументами, которые передаются этой функции. Этот ряд элементов управления носит общее название Windows Control.

Функции CreateWindow и CreateWindowEx Синтаксис функции CreateWindow достаточно прост.

HWND CreateWindow(

LPCTSTR lpClassName,

LPCTSTR lpWindowName,

DWORD dwStyle,

int x,

int y,

int nWidth,

int nHeight,

HWND hWndParent,

HMENU hMenu,

HANDLE hInstance,

PVOID lpParam);

Перейти на страницу:

Похожие книги