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


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


Конструктор класса WinApp сбрасывает флаг ошибки и сохраняет в переменной hInstance идентификатор текущей копии приложения, переданный ему функцией WinMain.

Функция-метод RegisterWndClass регистрирует класс окна, используя для этого указатель на имя класса и указатель на функцию окна. Регистрация выполняется, как и в предыдущем приложении, при помощи функции RegisterClass.

Функция-метод Go запускает цикл обработки сообщений, полностью идентичный использованному в предыдущем приложении.

Так как приложение может создавать много окно, удобно определить в качестве класса окно. Файл window.hpp содержит определение класса Window, который предназначен для создания окон (листинг 2.5).

Листинг 2.5. Файл textout\window.hpp

// ===================================== // Определение класса Window // ===================================== class Window { HWND hwnd; // Идентификатор окна int errno; // Флаг ошибки public: // Конструктор Window(HINSTANCE, LPSTR, LPSTR); // Проверка флага ошибки int Error(void) { return errno; } // Отображение окна void Show(int nCmdShow) { ShowWindow(hwnd, nCmdShow); } // Передача функции WndProc сообщения WM_PAINT void Update(void) { UpdateWindow(hwnd); } };

В классе Window определена переменная типа HWND для хранения идентификатора окна и флаг ошибок errno. Там же определены конструктор, функции-методы Show (отображение окна), Update (передача в функцию окна сообщения WM_PAINT) и Error (проверка флага ошибок).

Исходный текст конструктора класса Window находится в файле window.cpp (листинг 2.6).

Листинг 2.6. Файл textout\window.cpp

// ===================================== // Функции-методы для класса Window // ===================================== #define STRICT #include <windows.h> #include "window.hpp" // ------------------------------------- // Конструктор класса Window // ------------------------------------- Window::Window(HINSTANCE hInstance, LPSTR szClassName, LPSTR szWindowTitle) { // Сбрасываем флаг ошибки errno = 0; // Создаем окно hwnd = CreateWindow( szClassName, // имя класса окна szWindowTitle, // заголовок окна WS_OVERLAPPEDWINDOW, // стиль окна CW_USEDEFAULT, // задаем размеры и расположение CW_USEDEFAULT, // окна, принятые по умолчанию CW_USEDEFAULT, CW_USEDEFAULT, 0, // идентификатор родительского окна 0, // идентификатор меню hInstance, // идентификатор приложения NULL); // указатель на дополнительные // параметры // Если при создании окна были ошибки, // устанавливаем флаг ошибки if(!hwnd) { errno = 1; return; } }




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



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