Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//Џа®б⥩и п 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); //®бў®Ў®¦¤ Ґ¬ Є®вҐЄбв гбва®©бвў
}