Операционная система Microsoft Windows 3.1 для программиста -том 1


Приложение TEXTOUT - часть 5


Конструктор класса Window сбрасывает флаг ошибок и создает окно, вызывая для этого известную вам функцию CreateWindow. Если при создании окна были ошибки, устанавливается флаг ошибок.

До настоящего момента в приложении TEXOUT вам не встречалось ничего нового по сравнению с предыдущим приложением, за исключением того, что мы подготовили его для объектно-ориентированного программирования. Однако нашей задачей было научиться выводить в окно текст.

Как мы и говорили, эта операция выполняется функцией окна (листинг 2.7).

Листинг 2.7. Файл textout\winproc.cpp

// ===================================== // Функция WndProc // Функция выполняет обработку сообщений главного // окна приложения // ===================================== #define STRICT #include <windows.h> LRESULT CALLBACK _export WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; // индекс контекста устройства PAINTSTRUCT ps; // структура для рисования switch (msg) { case WM_PAINT: { // Получаем индекс контекста устройства hdc = BeginPaint(hwnd, &ps); // Выводим текстовую строку TextOut(hdc, 10, 20, "Сообщение WM_PAINT", 18); // Отдаем индекс контекста устройства EndPaint(hwnd, &ps); return 0; } case WM_LBUTTONDOWN: { // Получаем индекс контекста устройства hdc = GetDC(hwnd); // Выводим текстовую строку TextOut(hdc, 10, 40, "Сообщение WM_LBUTTONDOWN", 24); // Отдаем индекс контекста устройства ReleaseDC(hwnd, hdc); return 0; } case WM_RBUTTONDOWN: { hdc = GetDC(hwnd); TextOut(hdc, 10, 60, "Сообщение WM_RBUTTONDOWN", 24); ReleaseDC(hwnd, hdc); return 0; } case WM_DESTROY: { PostQuitMessage(0); return 0; } } return DefWindowProc(hwnd, msg, wParam, lParam); }

Эта функция обрабатывает сообщение WM_PAINT, а также уже известные вам сообщения, попадающие в очередь сообщения, когда вы выполняете щелчок клавишами мыши над окном приложения - WM_LBUTTONDOWN и WM_RBUTTONDOWN. Во время обработки этих сообщений приложение выполняет вывод текста в окно, вызывая специально предназначенную для этого функцию TextOut, входящую в состав программного интерфейса Windows.

Последний файл, входящий в проект приложения, - это файл определения модуля с именем textout.def (листинг 2.8), который почти полностью повторяет аналогичный файл из предыдущего приложения.

Листинг 2.8. Файл textout\textout.def

; ============================= ; Файл определения модуля ; ============================= NAME TEXTOUT DESCRIPTION 'Приложение TEXTOUT, (C) 1994, Frolov A.V.' EXETYPE windows STUB 'winstub.exe' STACKSIZE 5120 HEAPSIZE 1024 CODE preload moveable discardable DATA preload moveable multiple




Начало  Назад  Вперед



Книжный магазин