Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Захаркевич_лаб1_СПО.docx
Скачиваний:
7
Добавлен:
13.07.2019
Размер:
109.12 Кб
Скачать

5. Классы окон, регистрация оконного класса:

После инициализации класса окна его надо зарегистрировать для каждого с помощью функции RegisterClass(). В данной программе регистрация производилась с помощью функции MyRegisterClass() и требовалось зарегистрировать 3 класса MyRegisterClass(),MyRegisterClass1(),MyRegisterClass2().

ATOM MyRegisterClass1(HINSTANCE hInstance)

{

WNDCLASSEX wcex1; // Определение структуры

... // Инициализация полей структуры была приведена выше

return RegisterClassEx(&wcex1);

}

Регистрация оконного класса:

MyRegisterClass(hInstance);

MyRegisterClass1(hInstance);

MyRegisterClass2(hInstance);

6. Создание экземпляра оконного класса:

Создание экземпляров главного или дочернего окна осуществляется при помощи функции CreateWindow()

Создаём главное окно:

hWnd = CreateWindow( szWindowClass, // Имя зарегистрированного класса

szTitle, // Имя окна

WS_OVERLAPPEDWINDOW, // Стиль окна

CW_USEDEFAULT, NULL // Горизонтальная и вертикальная позиция окна

CW_USEDEFAULT, NULL // Ширина и высота окна

NULL, // Дескриптор родительского окна

NULL, // Дескриптор меню окна или идентификатора дочернего окна

hInstance, // Дескриптор приложения

NULL); // Указатель на значение, передаваемое окну

if (!hWnd)

{

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

Создаём дочерние окна hWnd1 и hWnd2, hWnd – родитель:

hWnd1 = CreateWindow(L"cl_1", szTitle, WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS , 100, 80, 800, 300, hWnd, NULL, hInstance, NULL);

if (!hWnd1)

{

return FALSE;

}

ShowWindow(hWnd1, nCmdShow);

UpdateWindow(hWnd1);

hWnd2 = CreateWindow(L"cl_2", szTitle, WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS, 600, 80, 100, 100, hWnd1, NULL, hInstance, NULL);

if (!hWnd2)

{

return FALSE;

}

ShowWindow(hWnd2, nCmdShow);

UpdateWindow(hWnd2);

У дочерних окон дескриптор дочернего окна заменяется с NULL на hWnd1 и hWnd2.

Так же идёт проверка, успешно ли созданы окна:

if (!hWnd)

{

return FALSE;

}

if (!hWnd1)

{

return FALSE;

}

if (!hWnd2)

{

return FALSE;

}

7. Отображение окна на экране:

Окно отображается при помощи функции ShowWindow():

ShowWindow(

hWnd, // Дескриптор окна

nCmdShow); // Режим отображения окна

UpdateWindow(hWnd); // Обновляет клиентскую область заданного окна

ShowWindow(hWnd1, nCmdShow);

UpdateWindow(hWnd1);

ShowWindow(hWnd2, nCmdShow);

UpdateWindow(hWnd2);

8. Управление положением и размерами окна:

Управлять положением и размерами окна можно на этапе создания при помощи параметров функции CreateWindow() и на этапе выполнения при помощи функции SetWindowPos(). Изменение размера на этапе создания:

hWnd1 = CreateWindow(L"cl_1", szTitle, WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS ,

100, // Горизонтальная позиция верхнего угла окна

80, // Вертикальная позиция верхнего угла окна

800, // Ширина окна

300, // Высота окна

hWnd, NULL, hInstance, NULL);

Изменение размера на этапе выполнения программы:

case WM_RBUTTONDOWN:

SetWindowPos(hWnd1, HWND_TOP, 0, 0, 1000, 400, SWP_NOMOVE);

break;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]