Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / Labs 2004 / Exempl1 / FIG1

.CPP
Скачиваний:
21
Добавлен:
16.04.2013
Размер:
5.42 Кб
Скачать
//Џа®б⥩и п WINDOWS -Їа®Ја ¬¬  б ЁбЇ®«м§®ў ­ЁҐ GDI, аЁбгҐв ®Є­®
//Ё бва®Ёв Їа®б⥩訥 дЁЈгал

#define STRICT           //Їа®ўҐаЄ  WINDOWS'®ўбЄЁе 楫ле вЁЇ®ў
#include <windows.h>     //ЎҐ§ STRICT ­ ЇаЁ¬Ґа HINSTANCE -ЎҐ§§­ Є®ў®Ґ 楫®Ґ
#include <windowsx.h>    //б®  STRICT HINSTANCE - гЄ § вҐ«м
#include <stdio.h>

//Ё¬п Є« бб  ®Є­ 
char const szClassName[] = "LineClass";
//§ Ј®«®ў®Є ®Є­ 
char const szWindowTitle[] = "Line";

//Їа®в®вЁЇл дг­ЄжЁ©
BOOL RegisterApp(HINSTANCE hInst);
HWND CreateApp(HINSTANCE, int);
LRESULT CALLBACK _export WndProc(HWND, UINT, WPARAM, LPARAM);
void Line_OnDestroy(HWND);
void Line_OnPaint(HWND);


//ѓ« ў­ п дг­ЄжЁп - в®зЄ  ўе®¤  ў Їа®Ја ¬¬г
#pragma argsused      //­Ґ ўл¤®ў вм б®®ЎйҐ­Ёп ® ­ҐЁбЇ®«м§®ў ­­ле Ї а ¬Ґа е
int PASCAL WinMain(HINSTANCE hInst,        //¤ЁбЄаЁЇв®а(­®¬Ґа) Їа®Ја ¬¬л
						 HINSTANCE hPrevInstance,//­®¬Ґа ЇаҐ¤л¤г饣® нЄ§Ґ¬Ї. Їа®Ј.
						 LPSTR     lpszCmdParam, //¤®Ї®«­ЁвҐ«м­ п Ё­д®а¬ жЁп
						 int       nCmdShow)     //Ї®пў«Ґ­ЁҐ ®Є­  -min, max, ­®а¬.
{
	MSG msg;                  //бвагЄвга  ¤«п а Ў®вл б б®®ЎйҐ­Ёп¬Ё

	if(!RegisterApp(hInst))  //ॣЁбва жЁп ЇаЁ«®¦Ґ­Ёп
		return FALSE;

	if(!CreateApp(hInst,nCmdShow))  //ᮧ¤ ­ЁҐ ®Є­  ЇаЁ«®¦Ґ­Ёп
		return FALSE;

	while(GetMessage(&msg,NULL,0,0))   //жЁЄ« ®Ўа Ў®вЄЁ б®®ЎйҐ­Ё©
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

//ђҐЈЁбва жЁп Є« бб  ®Є­ 
BOOL RegisterApp(HINSTANCE hInst)
{
	WNDCLASS wc;

	wc.style         = CS_HREDRAW | CS_VREDRAW; //бвЁ«м ®Є­ 
							 //®Є­® ЇҐаҐаЁб®ўлўҐвбп, ЇаЁ Ё§¬Ґ­Ґ­ЁЁ Ј®аЁ§®­в «м­ле
							 //Ё«Ё ўҐавЁЄ «м­ле а §¬Ґа®ў ®Є­ 
	wc.lpfnWndProc   = WndProc;                 //Ё¬п ®Є®­­®© Їа®жҐ¤гал
	wc.cbClsExtra    = 0;                       //¤®Ї®«­ЁвҐ«м­лҐ ¤ ­­лҐ
	wc.cbWndExtra    = 0;                       //®Ў ®Є­Ґ
	wc.hInstance     = hInst;                   //¤ЁбЄаЁЇв®а(­®¬Ґа) ЇаЁ«®¦Ґ­Ёп
	wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); //ЇЁЄв®Ја ¬¬ (ЁЄ®­Є )
	wc.hCursor		  = LoadCursor(NULL, IDC_ARROW);  //д®а¬  Єгаб®а (бв५Є )
	wc.hbrBackground = GetStockBrush(WHITE_BRUSH);   //梥⠮Є­ 
	wc.lpszMenuName  = "APP_MENU";       //Ё¬п ¬Ґ­о ®Є­ 
	wc.lpszClassName = szClassName;      //Ё¬п Є« бб  ®Є­ 

	return RegisterClass(&wc);    //дг­ЄжЁп ЇҐаҐ¤ Ґв Ё­д®а¬ жЁо ® Є« ббҐ
}                                //®Є­  ­ иҐЈ® ЇаЁ«®¦Ґ­Ёп ў WINDOWS,
											//Ј¤Ґ Їа®Ёб室Ёв ҐЈ® ॣЁбва жЁп


//‘®§¤ ­ЁҐ ®Є­  ЇаЁ«®¦Ґ­Ёп (аЁб®ў ­ЁҐ ®Є­ )
HWND CreateApp(HINSTANCE hInstance, int nCmdShow)
{
	 HWND hwnd;   //Ё¤Ґ­вЁдЁЄ в®а ®Є­  ЇаЁ«®¦Ґ­Ёп

	 hwnd = CreateWindow(szClassName,       //Ё¬п Є« бб  ®Є­ 
									 szWindowTitle,     //§ Ј®«®ў®Є ®Є­ 
									 WS_OVERLAPPEDWINDOW, //ўЁ¤ ®Є­ , ­ ЇаЁ¬Ґа Ґб«Ё
//Ўл«® Ўл WS_OVERLAPPEDWINDOW | WS_VSCROLL ў ®Є­Ґ ¤®Ў ўЁ« бм Ўл
//ўҐавЁЄ «м­ п Ї®«®б  Їа®ЄагвЄЁ
									 CW_USEDEFAULT, //x -Є®®а¤Ё­ в  ®Є­ 
									 CW_USEDEFAULT, //y -Є®®а¤Ё­ в  ®Є­ 
									 CW_USEDEFAULT, //иЁаЁ­  ®Є­ 
									 CW_USEDEFAULT, //ўлб®в  ®Є­ 
									 NULL,          //¤ЁбЄаЁЇв®а ЇаҐ¤Є  ®Є­ 
									 NULL,          //¤ЁбЄаЁЇв®а ¬Ґ­о ¤®зҐа­ҐЈ® ®Є­ 
									 hInstance,     //¤ЁбЄаЁЇв®а нЄ§Ґ¬Ї«па  ЇаЁ«®¦Ґ­Ёп
									 NULL);         // ¤аҐб ®Є®­­ле ¤ ­­ле

	if(hwnd == NULL)
		return hwnd;

	ShowWindow(hwnd,nCmdShow);   //®в®Ўа §Ёвм ®Є­®
	UpdateWindow(hwnd);          //®Ў­®ўЁвм ®Є­®

	return hwnd;
}

//®Є®­­ п Їа®жҐ¤га , ®Ўа Ў влў ой п б®®ЎйҐ­Ёп
LRESULT CALLBACK _export WndProc(HWND hwnd, UINT msg,
											WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
		case WM_PAINT:
			Line_OnPaint(hwnd);
			break;
		case WM_DESTROY:
			Line_OnDestroy(hwnd);
			break;
		default:
			return DefWindowProc(hwnd,msg,wParam,lParam);
	}
	return 0L;
}


//дг­ЄжЁп ®Ўа Ў влў ой п б®®ЎйҐ­ЁҐ WM_DESTROY
#pragma argsused
void Line_OnDestroy(HWND hwnd)
{
	PostQuitMessage(0);   //§ Єалў Ґ¬ ®Є­®
}


//дг­ЄжЁп ®Ўа Ў влў ой п б®®ЎйҐ­ЁҐ WM_PAINT
void Line_OnPaint(HWND hwnd)
{
	HDC hdc;
	PAINTSTRUCT ps;

	hdc = BeginPaint(hwnd, &ps);  //Ї®«гз Ґ¬ Є®­вҐЄбв гбва®©бвў 

	HBRUSH hbrush, hbrushOld;
	HPEN hpen, hpenOld;

	//®ЇаҐ¤Ґ«пҐ¬ ЄЁбвм: 1) бвЁ«м - бЇ«®и­®©
						  // 2) 梥⠧ Єа бЄЁ - §Ґ«Ґ­л©
	hbrush = CreateSolidBrush(RGB(0,255,0));
	hbrushOld = SelectBrush(hdc,hbrush);   //ўлЎЁа Ґ¬ ЄЁбвм hbrush

	//®ЇаҐ¤Ґ«пҐ¬ ЇҐа®: 1) бвЁ«м - бЇ«®и­®©
						 // 2) в®«йЁ­  «Ё­Ё© - 5 ЇЁЄбҐ«Ґ©
						 // 3) 梥⠫Ё­Ё© - Єа б­л©
	hpen = CreatePen(PS_SOLID,5,RGB(255,0,0));
	hpenOld = SelectPen(hdc,hpen);    //ўлЎЁа Ґ¬ ЇҐа® hpen

	MoveTo(hdc,50,50);
	LineTo(hdc,200,0);

	Ellipse(hdc,200,50,500,150);


	//®ЇаҐ¤Ґ«пҐ¬ ЄЁбвм: 1) бвЁ«м - бЇ«®и­®©
						  // 2) 梥⠧ Єа бЄЁ - Ј®«гЎ®©
	hbrush = CreateHatchBrush(5,RGB(0,0,255));
	SelectBrush(hdc,hbrush);    //ўлЎЁа Ґ¬ ЄЁбвм hbrush

	POINT P[3];

	P[0].x = 50;
	P[0].y = 200;
	P[1].x = 50;
	P[1].y = 300;
	P[2].x = 400;
	P[2].y = 300;

	Polygon(hdc,P,3);


	char sss[256];

	sprintf(sss,"Hello xDate= ");
	TextOut(hdc,450,50,sss,lstrlen(sss));

	double xDate = 5.2;
	sprintf(sss," %8.3lf",xDate);
	TextOut(hdc,550,50,sss,lstrlen(sss));


	SelectPen(hdc,hpenOld);    //ўлЎЁа Ґ¬ ЇҐа® hpen
	DeletePen(hpen);           //гЎЁа Ґ¬ ЇҐа® hpen
	SelectBrush(hdc,hbrushOld);    //ўлЎЁа Ґ¬ ЄЁбвм hbrush
	DeleteBrush(hbrush);       //гЎЁа Ґ¬ ЄЁбвм hbrush

	EndPaint(hwnd, &ps);       //®бў®Ў®¦¤ Ґ¬ Є®­вҐЄбв гбва®©бвў 

}
Соседние файлы в папке Exempl1