Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
.docx
Скачиваний:
8
Добавлен:
30.10.2018
Размер:
824.42 Кб
Скачать

5. Створити програму у Windows (Win32 api), яка демонструє основні стилі вікон (вікно верхнього рівня, спливаюче вікно з головним вікном та без нього, дочірнє вікно).

Для создания окна вызывается функция CreateWindow, прототип которой следующий:

HWNDCreateWindow (

LPCTSTRlpClassName, – имязарегестрированногокласса

LPCTSTRlpWindowName, – имяокна

DWORDdwStyle, – стиль окна

intx, – горизонтальная позиция

inty, – вертикальная позиция

intnWidth, – ширина окна

intnHeight, – высота окна

HWNDhWndParent, – дескриптор родительского окна

HMENUhMenu, – дескриптор меню окна или идентификатор элемента управления

HINSTANCEhInstance, – дескриптор экземпляра приложения

LPVOIDlParam – указатель на данные, передаваемые в сообщении WM_CREATE

);

Сама программа

#include "stdafx.h"

#include <windows.h>

#include <windowsx.h>

#define STRICT

LRESULT CALLBACK WndProcMain(HWND,UINT,WPARAM,LPARAM);

LRESULT CALLBACK WndProcPopur(HWND,UINT,WPARAM,LPARAM);

LRESULT CALLBACK WndProcChild(HWND,UINT,WPARAM,LPARAM);

char ClassMain[]="Window";

char ClassPopur[]="Popur";

char ClassChild[]="Child";

char MainTitle[]="Main Window";

char PopurTitle[]="Popur Window";

char ChildTitle[]="Child Window";

WNDCLASS main, popur, child;

MSG msg;

HWND hWndMain, hWndPopur, hWndChild;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR,int) {

if((hWndMain=FindWindow(ClassMain,NULL))!=NULL) {

if(IsIconic(hWndMain)) ShowWindow(hWndMain,SW_RESTORE);

SetForegroundWindow(hWndMain);

return FALSE; }

if((hWndPopur=FindWindow(ClassPopur,NULL))!=NULL) {

if(IsIconic(hWndPopur)) ShowWindow(hWndPopur,SW_RESTORE);

SetForegroundWindow(hWndPopur);

return FALSE; }

if((hWndChild=FindWindow(ClassChild,NULL))!=NULL) {

if(IsIconic(hWndChild)) ShowWindow(hWndChild,SW_RESTORE);

SetForegroundWindow(hWndChild);

return FALSE; }

//main window

// Заполняем структуру класса окна

memset(&main,0,sizeof(main));

main.lpszClassName=ClassMain;

main.lpfnWndProc=WndProcMain;

main.style=CS_HREDRAW|CS_VREDRAW;

main.hInstance=hInstance;

main.hIcon=LoadIcon(NULL,IDI_APPLICATION);

main.hCursor=LoadCursor(NULL,IDC_ARROW);

main.hbrBackground=GetStockBrush(WHITE_BRUSH);

main.lpszMenuName=NULL;

main.cbClsExtra=0;

main.cbWndExtra=0;

RegisterClass(&main);

// Создаем основное окно приложения

hWndMain=CreateWindow(ClassMain,MainTitle,WS_OVERLAPPEDWINDOW,100,100,850,500,NULL,NULL,hInstance,NULL);

if(!hWndMain) {

MessageBox(NULL,"Create:error",MainTitle,MB_OK|MB_ICONSTOP);

return FALSE; }

// Показываем наше окно

ShowWindow(hWndMain,SW_SHOWNORMAL);

UpdateWindow(hWndMain);

//child window-------------------------------------------------------

memset(&child,0,sizeof(child));

child.lpszClassName=ClassChild;

child.lpfnWndProc=WndProcChild;

child.style=CS_HREDRAW|CS_VREDRAW;

child.hInstance=hInstance;

child.hIcon=LoadIcon(NULL,IDI_APPLICATION);

child.hCursor=LoadCursor(NULL,IDC_ARROW);

child.hbrBackground=GetStockBrush(GRAY_BRUSH);

child.lpszMenuName=NULL;

child.cbClsExtra=0;

main.cbWndExtra=0;

RegisterClass(&child);

hWndChild=CreateWindow(ClassChild,ChildTitle,WS_CHILD|WS_OVERLAPPEDWINDOW,10,10,400,150,hWndMain,NULL,hInstance,NULL);

if(!hWndChild) {

MessageBox(NULL,"Create:error",ChildTitle,MB_OK|MB_ICONSTOP);

return FALSE; }

ShowWindow(hWndChild,SW_SHOWNORMAL);

UpdateWindow(hWndChild);

//popur window---------------------------------------------

memset(&popur,0,sizeof(popur));

popur.lpszClassName=ClassPopur;

popur.lpfnWndProc=WndProcPopur;

popur.style=CS_HREDRAW|CS_VREDRAW;

popur.hInstance=hInstance;

popur.hIcon=LoadIcon(NULL,IDI_APPLICATION);

popur.hCursor=LoadCursor(NULL,IDC_ARROW);

popur.hbrBackground=GetStockBrush(BLACK_BRUSH);

popur.lpszMenuName=NULL;

popur.cbClsExtra=0;

main.cbWndExtra=0;

RegisterClass(&popur);

hWndPopur=CreateWindow(ClassPopur,PopurTitle,WS_OVERLAPPEDWINDOW,450,400,400,150,NULL,NULL,hInstance,NULL);

if(!hWndPopur) {

MessageBox(NULL,"Create:error",PopurTitle,MB_OK|MB_ICONSTOP);

return FALSE; }

// Выполняем цикл обработки сообщений до закрытия приложения

while(GetMessage(&msg,NULL,0,0)) {

TranslateMessage(&msg);

DispatchMessage(&msg); }

return 0;

//-------------------------------------------------------

}

LRESULT CALLBACK WndProcMain(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) {

switch(msg) {

case WM_LBUTTONDOWN: {

ShowWindow(hWndPopur,SW_SHOWNORMAL);

break; }

case WM_DESTROY: {

PostQuitMessage(0);

break; }

default:return DefWindowProc(hWnd,msg,wParam,lParam);

}

return 0;

}

LRESULT CALLBACK WndProcChild(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) {

switch(msg) {

case WM_DESTROY: {

PostQuitMessage(0);

break; }

default:return DefWindowProc(hWnd,msg,wParam,lParam);

}

return 0;

}

LRESULT CALLBACK WndProcPopur(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) {

switch(msg) {

case WM_DESTROY: {

PostQuitMessage(0);

break; }

default:return DefWindowProc(hWnd,msg,wParam,lParam);

}

return 0;

}

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