Вывод текста в окно.
1) Сообщение WM_PAINT
Для вывода текста в окно нельзя воспользоваться ни одной из функций стандартной библиотеки. Все эти функции ориентированны на консольный вывод на экран. В Windowsприложения должны совместно использовать экран. Для этого они создают перекрывающиеся и перемещаемые окна. Windowsзащищает приложения по необходимости перерисовки содержимого окна. В этом случае в очередь приложения записывается сообщения с идентификатором WM_PAINT. Для того, чтобы упросить работу по перерисовке приложения разрабатываются таким образом, чтобы весь вывод в окно осуществлялся в одном месте, а именно при обработки сообщения WM_PAINT. Изображения, созданные во время обработки других сообщений будут закрашены. Если логика работы приложения требует изменить содержимое окна в произвольном месте программы, то в этом случае приложение может передать функции окна сообщение WM_PAINT используя явный вызов следующих функций
void UpdateWindow(HWND hwnd);
void InvalidateRect(HWND hwnd, LPRECT rect, BOOL erase);
Последняя функция позволяет объявить прямоугольную область окна, как требующую обновления. Второй параметр функции — указатель на структуру, определяющую прямоугольную область. Если третий параметр задан как TRUE, то фон окна подлежит стиранию.
2) Контекст отображения.
Приложение должно хранить информацию о своем текущем состоянии, пользуясь которой функция окна в любой момент может перерисовать своё окно. Структура данных, описывающая состояние окна называется контекстом отображения. В этой структуре находятся характеристики окна, которые используются для вывода текста и изображений, такие как цвет фона, цвет кисти, шрифт, толщина и вид линий и т. д. Контекст отображений используется функциями интерфейса графических устройств GDI, которые являются подмножеством функций WINAPI32.Перед выводом в окно приложение должно создать контекст отображения. Windowsзаполнит структуру значениями по-умолчанию. Приложение может переопределить отдельные характеристики. После окончания вывода приложение должно обязательно вызвать функцию, которая освобождает полученный ранее контекст. При обработке сообщения WM_PAINT для создания и освобождения контекста используются следующие функции
Для получения контекста
HDC BeginPaint(HWND hwnd, PAINTSTRUCT* P);
Для освобождения контекста
void EndPaint(HWND hwnd, PAINTSTRUCT* P);
При обработке всех остальных сообщений.
HDC GetDC(HWND hwnd); //Получает контекст.
Обратная функция
void ReleaseDC(HWND hwnd, HDC hdc);
3) Функция вывода текста в окно.
BOOL TextOut(HDC hdc,
int startx , // Начало строки
int starty,
LPCSTR string, // Указатель на отображемую строку
int len); // Длина строки
Функция форматированного вывода текста в прямоугольную область.
Int WINAPI DrawText( HDC hdc,
LPCSTR string,
int len,
RECT FAR* r, // Дальний указатель на структуру RECT
UINT format);
Предпоследний параметр определяет прямоугольник, в который выводится текст. Последний аргумент определяет флаги форматирования.
Функция изменения цвета текста
COLORREF WINAPI SetTextColor(HDC, COLORREF)
Существует для изменения цвета макрокомманда
RGB(r, g, b)