ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния «АналоговыС часы» Π½Π° языкС C++ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Класс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для запуска ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго прилоТСния. Он ΡΠΎΠ·Π΄Π°Π΅Ρ‚ экзСмпляр (instance) Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ класса CClockFrame, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всю ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ прилоТСния ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ посрСдством MFC (Microsoft Foundation Classes). Запуск осущСствляСт Ρ‡Π΅Ρ€Π΅Π· конструктор CClockFrame (). Π‘Ρ…Π΅ΠΌΠ° прилоТСния (Π² Ρ†Π΅Π»ΡΡ… изучСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC ΠΈ Windows API, для простоты проСктирования… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прилоТСния «АналоговыС часы» Π½Π° языкС C++ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ Π΄Π°Π½Π½ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ прСдставлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ собой Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ часы с Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚ΠΎΠΌ, часовой, ΠΌΠΈΠ½ΡƒΡ‚Π½ΠΎΠΉ ΠΈ ΡΠ΅ΠΊΡƒΠ½Π΄Π½ΠΎΠΉ стрСлкой.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° написана ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π° MS Visual Studio 2010.

Бписок Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

mysimple_clock.cpp

Π‘Ρ…Π΅ΠΌΠ° прилоТСния (Π² Ρ†Π΅Π»ΡΡ… изучСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MFC ΠΈ Windows API, для простоты проСктирования ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, вСсь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» прилоТСния Π±Ρ‹Π» описан ΠΎΠ΄Π½ΠΈΠΌ СдинствСнным Ρ„Π°ΠΉΠ»ΠΎΠΌ mysimple_clock.cpp). Π‘Ρ…Π΅ΠΌΠ° взаимодСйствия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² классов, описанных Π² mysimple_clock.cpp прСдставлСна Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅:

1. ОписаниС классов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

class CClockApp

Класс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для запуска ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго прилоТСния. Он ΡΠΎΠ·Π΄Π°Π΅Ρ‚ экзСмпляр (instance) Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ класса CClockFrame, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всю ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ прилоТСния ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ посрСдством MFC (Microsoft Foundation Classes). Запуск осущСствляСт Ρ‡Π΅Ρ€Π΅Π· конструктор CClockFrame ().

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

class CClockApp: public CWinApp

{

public:

int InitInstance ()

{

CClockFrame *p ;

p = new CClockFrame ();

p->ShowWindow (1);

m_pMainWnd = p;

return 1;

}

};

class CClockFrame

Π­Ρ‚ΠΎ Π³Π»Π°Π²Π½Ρ‹ΠΉ класс всСго прилоТСния (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). Π”Π°Π½Π½Ρ‹ΠΉ класс — это класс Ρ„Ρ€Π΅ΠΉΠΌΠ°, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° ΡΠ΅Π±Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΎΠΊΠ½ΠΎΠΌ Π²ΠΈΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСй ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ прилоТСния ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

2. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

//*************************************************************************************

// Класс часовГрафичСская Ρ„ΠΎΡ€ΠΌΠ°. Π’ΡƒΡ‚ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°.

class CClockFrame: public CFrameWnd

//наслСдуСмся ΠΎΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ класса Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° CFrameWnd.

{

private:

RECT _rect;

//базовая структура, описываСт ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ

//ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»ΠΎΠ² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Данная структура

//Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для описания клиСнтской области ΠΎΠΊΠ½Π°.

//————Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ экрана ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° (Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ);

public:

BOOL CClockFrame: PreCreateWindow (CREATESTRUCT& cs){

//ИзмСнСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΠΎΠΊΠ½Π° CClockFrame

//Ρ‡Π΅Ρ€Π΅Π· PreCreateWindow.

//: — глобальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PreCreateWindow

//Π²Π½Π΅ класса. CREATESTRUCT — опрСдСляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

//ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅

cs.cy = :GetSystemMetrics (SM_CYSCREEN) / 1.5;

//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ экрана мСньший Π² 1.5 Ρ€Π°Π·Π° ΠΏΠΎ y

cs.cx = :GetSystemMetrics (SM_CXSCREEN) / 2;

//- Π² 2 Ρ€Π°Π·Π° ΠΏΠΎ x

cs.y = ((cs.cy * 1.5) — cs. cy)/2;

//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для цСнтрирования Ρ„Ρ€Π΅ΠΉΠΌΠ°

//CClockFrame ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ экрана.

//ΠŸΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŽ — 1.5 ΠΏΠΎ y

cs.x = ((cs.cx * 2) — cs. cx)/2;

//-2 ΠΏΠΎ x.

return TRUE;

}

//——конструктор класса CClockFrame (Π²ΠΈΠ΄ Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΊΠ°ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³Π°; ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ клавиш ΡƒΠΏΡ€.)

CClockFrame ()

WS_SYSMENU

//————————-рисваниС Ρ„Ρ€Π΅ΠΉΠΌΠ°

int OnCreate (LPCREATESTRUCT l)

// LPCREATESTRUCT — cΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„Ρ€Π΅ΠΉΠΌΠ°

// ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании (API-функция)

{

CFrameWnd:OnCreate (l);

// OnCreate — функция-Ρ‡Π»Π΅Π½ для созданиС ΠΎΠΊΠ½Π°.

SetTimer (1,1000,NULL);

// (систСмный Ρ‚Π°ΠΉΠΌΠ΅Ρ€)

// Ѐункция ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅Π΅ «ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅» Ρ„Ρ€Π΅ΠΉΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄ΡƒΡŽ 1 сСкунду

// Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для создания часов (ΠΏΠΎΠ»ΡƒΡ‡. Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· 1 сСкунду)

// Π»ΠΎΠ³ΠΈΠΊΠ°: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ систСмного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ->пСрСрисовка стрСлок

// Ρ‡Π΅Ρ€Π΅Π· 1 сСкунду

return 1;

}

//————————-рисуСм стрСлки, Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚ (Ρ†ΠΈΡ„Ρ€Ρ‹)

void OnPaint ()

{

CPaintDC d (this);

// Π’Ρ‹Π²ΠΎΠ΄ Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ (ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹) Π½Π° ΠΊΠΎΠ½Ρ‚Скст устройства.

//—————;

CBrush b (RGB (192,192,192));

//Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° кисти для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ примСнСния ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ

float x1 = -220;

float y1 = -220;

float x2 = 220;

float y2 = 220;

// ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ стрСлками ΠΈ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ

Transform (&x1,&y1);

// ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² областСй

// ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ„Ρ€Π΅ΠΉΠΌΠ°. (Π»Π΅Π²Ρ‹ΠΉ-Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ)

Transform (&x2,&y2);

// (Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ)

CRect rect (x1,y1,x2,y2);

// ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ-Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚. (ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹)

d.FillRect (&rect,&b);

// заполняСм Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ прямоуголник rect Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΈΡΡ‚ΡŒΡŽ b (заполняСм Ρ†Π²Π΅Ρ‚ΠΎΠΌ)

// Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ всС это Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ _rect класса CClockFrame

/*

LOGBRUSH l_LogBrush;

// линия ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ Π±Π΅Π· задания расстояния

l_LogBrush.lbColor = RGB (0,0,0);

l_LogBrush.lbStyle = BS_SOLID;

l_LogBrush.lbHatch=10;

CPen l_pen (PS_GEOMETRIC | PS_DOT, 3, &l_LogBrush, 0, NULL);

*/

CPen el_outer (PS_SOLID, 1, RGB (0,0,0));

CBrush el_brush_outer (RGB (226,226,226));

d.SelectObject (el_outer);

d.SelectObject (el_brush_outer);

d.Ellipse (&rect);

// рисуСм внСшний элипс (ΠΊΡ€ΡƒΠ³) ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΠΎΠΉ

// области-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅ΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚.

d.SelectStockObject (WHITE_BRUSH);

// восстанавливаСм всС Π² Π±Π΅Π»ΠΎΠ΅

CPen l_pen;

// рисуСм Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚ (ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ сСкунд) — пунктирная линия

LOGBRUSH lb;

lb.lbColor=RGB (153,0,0);

// устанавливаСм Ρ†Π²Π΅Ρ‚ (ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ сСкунд) ΠΎΠ½ΠΈ ΠΆΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ

lb.lbStyle=BS_SOLID;

lb.lbHatch=0;

DWORD arr[2];

arr[0]=2;// играСмся ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π°ΠΌΠΈ

arr[1]=19.6;//

l_pen.CreatePen (PS_USERSTYLE|PS_GEOMETRIC, 3,&lb, 2, arr);

// устанавливаСм свой гСомСтричСский ΡΡ‚ΠΈΠ»ΡŒ Π»ΠΈΠ½ΠΈΠΈ «Ρ€ΡƒΡ‡ΠΊΠ΅»

d.SelectObject (&l_pen);

float centr_el_x=0;

float centr_el_y=0;

Transform (¢r_el_x,¢r_el_y);

drawCircle (&d, centr_el_x, centr_el_y, 330);

// рисуСм Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΊΡ€ΡƒΠ³ ΠΈ ΠΎΠ±Ρ€Π°ΠΌΠ»ΡΠ΅ΠΌ края Π»ΠΈΠ½ΠΈΠ΅ΠΉ

// своСго стиля — ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€ΠΎΠΌ. Π¦Π΅Π½Ρ‚Ρ€ ΠΊΡ€ΡƒΠ³Π° — 0,0

//—————;

CPen p2(PS_SOLID, 6, RGB (8,28,255));

// установка Ρ†Π²Π΅Ρ‚Π° для ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈ Ρ‡Π°ΡΠ° стрСлок

CPen sec_p (PS_SOLID, 4, RGB (153,0,0));

// установка Ρ†Π²Π΅Ρ‚Π° сСкундной стрСлки

d.SelectObject (&p2);

// заносим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° (CPen) p2 Π² ΠΊΠΎΠ½Ρ‚Скст Ρ‚ΠΈΠΏΠ° (CPaintDC) d

float fhour;// поля для час, ΠΌΠΈΠ½ΡƒΡ‚Π°, сСкунда

float fmin;

float fsec;

CTime t1;

CTime t = CTime: GetCurrentTime ();

// ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ систСмноС врСмя ΠΈΠ· OC Windows (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ UTC)

// Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ инициализация (сСкунды, ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, часы)

fhour = t. GetHour ()%12;

// ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ час (0−23). ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π² 12 Ρ‡Π°ΡΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

fmin = t. GetMinute ();

// ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ (0−59)

fsec = t. GetSecond ();

// ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сСкунды (0−59)

fhour += fmin/60;

// час=час+ΠΌΠΈΠ½ΡƒΡ‚Π° (Ρ‹)/60 Ρ‡Ρ‚ΠΎΠ±Ρ‹ часовая стрСлка Ρ‚ΠΎΠΆΠ΅ двигалась

fhour = fhour * 360 / 12;

// смСщСниС (дискрСтноС) Π½Π° 30 Π³Ρ€Π°Π΄ (360/12) * час.

// Если час Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ, Ρ‚ΠΎ

// смСщСниС происходит Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ долю.

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹.

fmin = fmin * 360 / 60;

// смСщСниС (дискрСтноС) Π½Π° 6 Π³Ρ€Π°Π΄. (360/60) ΠΏΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ

// ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ (Ρ€Π°Π΄)

fsec = fsec * 360 / 60;

// смСщСниС (дискрСтноС) Π½Π° 6 Π³Ρ€Π°Π΄. ΠΏΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ

// сСкунду (Ρ€Π°Π΄)

// d[Π³Ρ€Π°Π΄]=d[Ρ€Π°Π΄]*(Pi/180) // общая Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° x=cos_d*R; y=sin_d*R

// xs, ysΠΊΠΎΠΎΡ€. сСкунда xm, ym — ΠΊΠΎΠΎΡ€. ΠΌΠΈΠ½ΡƒΡ‚Π° xh, yh — ΠΊΠΎΠΎΡ€. час

float xs = 130 * cos ((-fsec * (PI / 180.0))+ PI/2.0);

// R*cos ((-d[Ρ€Π°Π΄]*Pi/180)+ Pi/2)

// PI/2 — Π½Π°Ρ‡Π°Π»ΠΎ отсчСта I ΠΊΠ²Π°Π΄Ρ€Π°Π½Ρ‚ (Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒ)

// ΠΏΡ€ΠΎΡ‚ΠΈΠ² час. стрСлки

float ys = 130 * sin ((-fsec * (PI / 180.0))+ PI/2.0);

float xm = 100 * cos ((-fmin * (PI / 180.0))+ PI/2.0);

float ym = 100 * sin ((-fmin * (PI / 180.0))+ PI/2.0);

float xh = 70 * cos ((-fhour * (PI / 180.0))+ PI/2.0);

// Π΄Π»ΠΈΠ½Π½Π° стрСлки (позиция Π½ΠΎΠ²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ) fhour

float yh = 70 * sin ((-fhour * (PI / 180.0))+ PI/2.0);

float x = 0;

float y = 0;

// Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния — Ρ†Π΅Π½Ρ‚Ρ€

Transform (&x,&y);

// ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ пСрСрисовкС Ρ†Π΅Π½Ρ‚Ρ€Π° (0,0)

Transform (&xh,&yh);

d.MoveTo (x, y);

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (час)

d.LineTo (xh, yh);

// рисованиС (час). Π”ΠΎ ΡƒΠΊΠ°Π·. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹.

Transform (&xm,&ym);

d.MoveTo (x, y);// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (ΠΌΠΈΠ½ΡƒΡ‚Π°)

d.LineTo (xm, ym);// рисованиС (ΠΌΠΈΠ½ΡƒΡ‚Π°)

d.SelectObject (&sec_p);

// ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° ΠΊ ΡΠ΅ΠΊΡƒΠ½Π΄Π½ΠΎΠΉ стрСлкС

Transform (&xs,&ys);

d.MoveTo (x, y);// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (сСкунда)

d.LineTo (xs, ys);// рисованиС (сСкунда)

d.SelectObject (el_outer);

d.SelectObject (el_brush_outer);

drawCircle (&d, x, y, 20);

// Π΄Π΅Π»Π°Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ шпиндСль свСрху стрСлок)

//————-рисованиС Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π° (Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΏΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ)

d.SelectObject (&p2);

// Ρ†Π²Π΅Ρ‚

char *str[] = {" 3″ ," 2″ ," 1″ ," 12″ ," 11″ ," 10″ ," 9″ ," 8″ ," 7″ ," 6″ ," 5″ ," 4″ };

// раставлСниС ΠΎΡ‚ ΠΊΠ²Π°Π½Π΄Ρ€Π°Π½Ρ‚ Pi=180 Π³Ρ€Π°Π΄. ΠΏΡ€ΠΎΡ‚ΠΈΠ² час.

/*

char *str_point[]={" ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ,

" ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ,

" ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ,

" ." ," ." };

// рисованиС ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² [.] тСкстом — Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅Ρˆ.

//*/

CFont f;

f.CreatePointFont (170,(LPCTSTR)" Times New Roman");

// ΡΡ‚ΠΈΠ»ΡŒ Π±ΡƒΠΊΠΎΠ²ΠΎΠΊ

d.SelectObject (&f);

d.SetBkMode (TRANSPARENT);

// установка Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ„ΠΎΠ½Π°//TRANSPARENT Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΎ ΠΎΡ‚рисовки

CString txt_header = CString («Π‘ΠŸΠ‘Π“ΠŸΠ£ ИУБ»);

CString txt_bottom = CString («ΠšΠΈΡ€ΡΠΊΠΎΠ² Π‘.Π’.»);

d.SetTextColor (RGB (0,0,0));

float xtext1=-80;

float ytext1=60;

float xtext2=-70;

float ytext2=-80;

Transform (&xtext1,&ytext1);

Transform (&xtext2,&ytext2);

d.TextOutW (xtext1,ytext1,txt_header);

// ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ надписи ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° надписи

d.TextOutW (xtext2,ytext2,txt_bottom);

d.SetTextColor (RGB (8,28,255));

for (int i = 0;i < 12;i++)// ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ†ΠΈΡ„Ρ€

{

float x = 194 * cos (i * PI / 6.0);

// R * cos (i*Pi/6 Π³Ρ€Π°Π΄) ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов для Ρ€Π°Π·ΠΌΠ΅Ρ‰-12.

// 194 ΠΈΠ»ΠΈ 190 — сдвиг ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ x ΠΈ y

float y = 190 * sin (i * PI / 6.0);

Transform (&x,&y);

d.TextOut (x-5,y-10,CString (str[i]), strlen (str[i]));

// Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°. x-5; y-1// Π²Ρ‹Π±Ρ€Π°Π½ΠΎ импСричСски. Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅

// ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ символа ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ происходит ΠΏΠΎ-Ρ€Π°Π·.

}

/*

d.SetTextColor (RGB (153,0,0));

// ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π° [.] тСкстом — отказался

for (int i = 0;i < 48;i++)

{

float x = 170 * cos (i * PI / 24.0);

// R * cos (i*Pi/24 Π³Ρ€Π°Π΄) ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов для Ρ€Π°Π·ΠΌΠ΅Ρ‰-48.

float y = 170 * sin (i * PI / 24.0);

Transform (&x,&y);

d.TextOut (x, y, CString (str_point[i]), strlen (str_point[i]));

}

//*/

}

/*———ΠΌΠ΅Ρ‚ΠΎΠ΄ измСнСния (пСрСрисовки) ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² (ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π»ΠΈΠ½ΠΈΠΉ ΠΈΡ‚Π΄) ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСняСтся клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π° (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²) происходит ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ (пСрСрисовка) ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. */

void Transform (float *px, float *py)

{

:GetClientRect (m_hWnd,&_rect);

// GetClientRect — клиСнтская Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°

//- ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΎΠΊΠ½Π° (клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°)

// m_hWnd — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ°ΠΌΠΎ ΠΎΠΊΠ½ΠΎ (handle)

// _rect — стуктура с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ, описанная Π² ΠΊΠ»Π°ΡΡΠ΅ CClockFrame

float width = (_rect.right-_rect.left)/2;

float height = (_rect.bottom-_rect.top)/2;

*px = *px + width;

// ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ! (ΠΈΠ½Π°Ρ‡Π΅ всС Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС)

*py = height — *py;

}

//——————-Π·Π°Ρ‚ΠΈΡ€ΠΊΠ° старого Ρ„ΠΎΠ½Π° (пСрСрисовка)-ΠΏΠΎΠ»ΡƒΡ‡.Π΄ΠΈΠ½Π°ΠΌ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ————;

void OnTimer (UINT n)

{

this->Invalidate ();// (0)

// CWnd: Invalidate — ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ Π»ΠΈ Ρ„ΠΎΠ½ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ обновлСния

// Π±Π΅Π· этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ

// -> Π²Ρ‹Π±ΠΎΡ€ элСмСнта ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ.

}

//——————-рисуСм эллипс Ρ‚ΠΈΠΏΠ° ΠΊΡ€ΡƒΠ³ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ R (x, y, R)

void drawCircle (CPaintDC *aDC, int aX, int aY, int aD)

{

double r=aD/2;

aDC->Ellipse (aX-r, aY-r, aX+r, aY+r);

}

// этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ рисуСм эллипс Ρ‚ΠΈΠΏΠ° ΠΊΡ€ΡƒΠ³

// Π·Π°Π΄Π°Π΅ΠΌ Π½Π°Ρ‡. ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ X ΠΈ Y ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ R

DECLARE_MESSAGE_MAP ();

// класс опрСдСляСм сопоставлСниС сообщСниям. Если ΠΎΠ½

// Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ события

};

//*************************************************************************************

3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° часы Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° mysimple_clock Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стрСлочных часов ΠΈ Π³ΠΎΡ‚овая ΠΊ ΠΏΡ€Π°ΠΊΡ‚ичСскому ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ. Π’ Ρ…ΠΎΠ΄Π΅ создания я ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΡΡ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ MFC ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ями прСдоставляСмыми Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° примСнСния этого прилоТСния — использованиС собствСнного скринсСйвСра (Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅Π»ΡŒ экрана) Π½Π° ΠžΠ‘ Windows 7:

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ», ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ…ΠΎΠ΄Π΅ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ide (Microsoft Visual Studio 2010 sp1) — mysimple_clock.exe, находящийся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Debug корня ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π² mysimple_clock.scr. Π”Π°Π»Π΅Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² C: WindowsSystem32. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² Π·Π°ΡΡ‚Π°Π²ΠΊΠ°Ρ… Windows (ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ->Заставка) Π΅ΡΡ‚ΡŒ новая заставка — mysimple_clock.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’Π΅ΡΡŒ исходный ΠΊΠΎΠ΄

#include // Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² для mfc

#include // для Π΄ΠΎΠΏ. возмоТностСй mfc

#include // матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

//#define _AFXDLL

// константа для вычислСний окруТности

const double PI = 3.14 159;

//****************************************************************************************************

// Класс часовГрафичСская Ρ„ΠΎΡ€ΠΌΠ°. Π’ΡƒΡ‚ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°.

class CClockFrame: public CFrameWnd

//наслСдуСмся ΠΎΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ класса Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° CFrameWnd.

{

private:

RECT _rect;

//базовая структура, описываСт ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ

//ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»ΠΎΠ² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Данная структура _rect

//Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для описания клиСнтской области ΠΎΠΊΠ½Π°.

//————Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ экрана ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° (Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ);

public:

BOOL CClockFrame: PreCreateWindow (CREATESTRUCT& cs){

//ИзмСнСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй) ΠΎΠΊΠ½Π° CClockFrame

//Ρ‡Π΅Ρ€Π΅Π· PreCreateWindow. : — глобальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PreCreateWindow

//Π²Π½Π΅ класса. CREATESTRUCT — опрСдСляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

//ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅

cs.cy = :GetSystemMetrics (SM_CYSCREEN) / 1.5;

//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ экрана мСньший Π² 1.5 Ρ€Π°Π·Π°

cs.cx = :GetSystemMetrics (SM_CXSCREEN) / 2;

//- Π² 2 Ρ€Π°Π·Π°

cs.y = ((cs.cy * 1.5) — cs. cy)/2;

//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для цСнтрирования Ρ„Ρ€Π΅ΠΉΠΌΠ°

//CClockFrame ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ экрана.

//ΠŸΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŽ — 1.5

cs.x = ((cs.cx * 2) — cs. cx)/2;

//-2

return TRUE;

}

//——————конструктор класса CClockFrame (Π²ΠΈΠ΄ Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΊΠ°ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³Π°; ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ клавиш ΡƒΠΏΡ€.)

CClockFrame ()

HBRUSH brush = (HBRUSH):CreateSolidBrush (RGB (0,0,0));

//ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ свойств кисти. Π—Π°Π»ΠΈΠ²ΠΊΠ° ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

CString mywindow = AfxRegisterWndClass (

//CString — класс милкософта для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ строк.

//Π’ mfc ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ.

//рСгистрируСм свой класс ΠΎΠΊΠ½Π° с ΠΏΡ€Π΅Π΄ΡŠΡƒΡΡ‚Π°Π½ΠΎΠ²Π». сво-ΠΌΠΈ.

CS_HREDRAW

//————————-рисваниС Ρ„Ρ€Π΅ΠΉΠΌΠ°

int OnCreate (LPCREATESTRUCT l)

//LPCREATESTRUCT — cΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„Ρ€Π΅ΠΉΠΌΠ°

//ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании (api-функция)

{

CFrameWnd:OnCreate (l);

//OnCreate — функция-Ρ‡Π»Π΅Π½ для созданиС ΠΎΠΊΠ½Π°.

SetTimer (1,1000,NULL);

//(систСмный Ρ‚Π°ΠΉΠΌΠ΅Ρ€)

//Ѐункция ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅Π΅ «ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅» Ρ„Ρ€Π΅ΠΉΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄ΡƒΡŽ 1 сСкунду

//Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для созданиС часов (пСрСрисовка Ρ‡Π΅Ρ€Π΅Π· 1 сСкунду)

//Π»ΠΎΠ³ΠΈΠΊΠ°: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ систСмного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ->пСрСрисовка стрСлок Ρ‡Π΅Ρ€Π΅Π· 1 сСкунду

return 1;

}

//————————-рисуСм стрСлки, Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚ (Ρ†ΠΈΡ„Ρ€Ρ‹)

void OnPaint ()

{

CPaintDC d (this);

//Π’Ρ‹Π²ΠΎΠ΄ Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ (ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹) Π½Π° ΠΊΠΎΠ½Ρ‚Скст устройства.

//————————————

CBrush b (RGB (192,192,192));

//Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° кисти для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ примСнСния ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ

float x1 = -220;//Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΠΎΠ΄ стрСлками ΠΈ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ — ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ

float y1 = -220;

float x2 = 220;

float y2 = 220;

Transform (&x1,&y1);// ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. ИзмСнСниС Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² областСй

// ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ„Ρ€Π΅ΠΉΠΌΠ°. (Π»Π΅Π²Ρ‹ΠΉ-Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ)

Transform (&x2,&y2); // (Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ)

CRect rect (x1,y1,x2,y2);

//ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ-Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚. (ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹)

d.FillRect (&rect,&b);

//заполняСм Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ прямоуголник rect Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΈΡΡ‚ΡŒΡŽ b (заполняСм Ρ†Π²Π΅Ρ‚ΠΎΠΌ)

//Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ всС это Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ _rect класса CClockFrame

/*

LOGBRUSH l_LogBrush;// линия ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ Π±Π΅Π· задания расстояния

l_LogBrush.lbColor = RGB (0,0,0);

l_LogBrush.lbStyle = BS_SOLID;

l_LogBrush.lbHatch=10;

CPen l_pen (PS_GEOMETRIC | PS_DOT, 3, &l_LogBrush, 0, NULL);

*/

CPen el_outer (PS_SOLID, 1, RGB (0,0,0));

//d.SelectStockObject (GRAY_BRUSH);// Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π°

CBrush el_brush_outer (RGB (226,226,226));

d.SelectObject (el_outer);

d.SelectObject (el_brush_outer);

d.Ellipse (&rect);

d.SelectStockObject (WHITE_BRUSH); //восстанавливаСм всС Π² Π±Π΅Π»ΠΎΠ΅

CPen l_pen;// рисуСм Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚ (ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ сСкунд) — ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€ΠΎΠΌ

LOGBRUSH lb;

lb.lbColor=RGB (153,0,0);

lb.lbStyle=BS_SOLID;

lb.lbHatch=0;

DWORD arr[2];

arr[0]=2;//1.2

arr[1]=19.6;//19.6

l_pen.CreatePen (PS_USERSTYLE|PS_GEOMETRIC, 3,&lb, 2, arr);

d.SelectObject (&l_pen);

float centr_el_x=0;

float centr_el_y=0;

Transform (¢r_el_x,¢r_el_y);

drawCircle (&d, centr_el_x, centr_el_y, 330);

//———————————;

CPen p2(PS_SOLID, 6, RGB (8,28,255));

// установка Ρ†Π²Π΅Ρ‚Π° для ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈ Ρ‡Π°ΡΠ° стрСлок

CPen sec_p (PS_SOLID, 4, RGB (153,0,0));

// установка Ρ†Π²Π΅Ρ‚Π° сСкундной стрСлки

d.SelectObject (&p2);

// заносим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° (CPen) p2 Π² ΠΊΠΎΠ½Ρ‚Скст Ρ‚ΠΈΠΏΠ° (CPaintDC) d

float fhour ;// поля для час, ΠΌΠΈΠ½ΡƒΡ‚Π°, сСкунда

float fmin ;

float fsec ;

CTime t1;

CTime t = CTime: GetCurrentTime (); // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ систСмноС врСмя ΠΈΠ· OC Windows (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ UTC)

// Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ инициализация (сСкунды, ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, часы)

fhour = t. GetHour ()%12; // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ час (0−23). ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π² 12 Ρ‡Π°ΡΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

fmin = t. GetMinute (); // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ (0−59)

fsec = t. GetSecond (); // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сСкунды (0−59)

fhour += fmin/60; // час=час+ΠΌΠΈΠ½ΡƒΡ‚Π° (Ρ‹)/60 Ρ‡Ρ‚ΠΎΠ±Ρ‹ часовая стрСлка Ρ‚ΠΎΠΆΠ΅ двигалась

fhour = fhour * 360 / 12; // смСщСниС (дискрСтноС) Π½Π° 30 Π³Ρ€Π°Π΄ (360/12) * час. Если час Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ, Ρ‚ΠΎ

// смСщСниС происходит Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ долю. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹.

fmin = fmin * 360 / 60; // смСщСниС (дискрСтноС) Π½Π° 6 Π³Ρ€Π°Π΄. (360/60) ΠΏΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ (Ρ€Π°Π΄)

fsec = fsec * 360 / 60; // смСщСниС (дискрСтноС) Π½Π° 6 Π³Ρ€Π°Π΄. ΠΏΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду (Ρ€Π°Π΄)

// d[Π³Ρ€Π°Π΄]=d[Ρ€Π°Π΄]*(Pi/180)

// общая Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° x=cos_d*R; y=sin_d*R

float xs = 130 * cos ((-fsec * (PI / 180.0))+ PI/2.0); // R*cos ((-d[Ρ€Π°Π΄]*Pi/180)+ Pi/2).

// PI/2 — Π½Π°Ρ‡Π°Π»ΠΎ отсчСта I ΠΊΠ²Π°Π΄Ρ€Π°Π½Ρ‚

// ΠΏΡ€ΠΎΡ‚ΠΈΠ² час. стрСлки

float ys = 130 * sin ((-fsec * (PI / 180.0))+ PI/2.0);

float xm = 100 * cos ((-fmin * (PI / 180.0))+ PI/2.0);

float ym = 100 * sin ((-fmin * (PI / 180.0))+ PI/2.0);

float xh = 70 * cos ((-fhour * (PI / 180.0))+ PI/2.0);// Π΄Π»ΠΈΠ½Π½Π° стрСлки (позиция Π½ΠΎΠ²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ)// fhour

float yh = 70 * sin ((-fhour * (PI / 180.0))+ PI/2.0);// -fhour

float x = 0;// Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния — Ρ†Π΅Π½Ρ‚Ρ€ //x=7 y=-8.4

float y = 0;

Transform (&x,&y);// ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ пСрСрисовки Ρ†Π΅Π½Ρ‚Ρ€Π° (0,0)

Transform (&xh,&yh);

d.MoveTo (x, y);// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (час)

d.LineTo (xh, yh);// рисованиС (час)

Transform (&xm,&ym);

d.MoveTo (x, y);// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (ΠΌΠΈΠ½ΡƒΡ‚Π°)

d.LineTo (xm, ym);// рисованиС (ΠΌΠΈΠ½ΡƒΡ‚Π°)

d.SelectObject (&sec_p); // ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° ΠΊ ΡΠ΅ΠΊΡƒΠ½Π΄Π½ΠΎΠΉ стрСлкС

Transform (&xs,&ys);

d.MoveTo (x, y);// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ (сСкунда)

d.LineTo (xs, ys);// рисованиС (сСкунда)

d.SelectObject (el_outer);// Π΄Π΅Π»Π°Π΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ шпиндСль)

d.SelectObject (el_brush_outer);

drawCircle (&d, x, y, 20);

//————-рисованиС Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π° (Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΏΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ)

d.SelectObject (&p2);

// Ρ†Π²Π΅Ρ‚

char *str[] = {" 3″ ," 2″ ," 1″ ," 12″ ," 11″ ," 10″ ," 9″ ," 8″ ," 7″ ," 6″ ," 5″ ," 4″ };

// раставлСниС ΠΎΡ‚ ΠΊΠ²Π°Π½Π΄Ρ€Π°Π½Ρ‚ Pi=180 Π³Ρ€Π°Π΄. ΠΏΡ€ΠΎΡ‚ΠΈΠ² час.

/*

char *str_point[]={" ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ,

" ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ,

" ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ," ." ,

" ." ," ." };// рисованиС ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² [.] тСкстом — Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅Ρˆ.

//*/

CFont f;

f.CreatePointFont (170,(LPCTSTR)" Times New Roman");// ΡΡ‚ΠΈΠ»ΡŒ Π±ΡƒΠΊΠΎΠ²ΠΎΠΊ

d.SelectObject (&f);

d.SetBkMode (TRANSPARENT);// установка Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ„ΠΎΠ½Π°

// TRANSPARENT Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΎ ΠΎΡ‚рисовки

CString txt_header = CString («Π‘ΠŸΠ‘Π“ΠŸΠ£ ИУБ»);

CString txt_bottom = CString («ΠšΠΈΡ€ΡΠΊΠΎΠ² Π‘.Π’.»);

d.SetTextColor (RGB (0,0,0));

float xtext1=-80;

float ytext1=60;

float xtext2=-70;

float ytext2=-80;

Transform (&xtext1,&ytext1);

Transform (&xtext2,&ytext2);

d.TextOutW (xtext1,ytext1,txt_header);// ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ надписи ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° надписи

d.TextOutW (xtext2,ytext2,txt_bottom);

d.SetTextColor (RGB (8,28,255));// ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Ρ†ΠΈΡ„Ρ€

for (int i = 0;i < 12;i++)

{

float x = 194 * cos (i * PI / 6.0);// R * cos (i*Pi/6 Π³Ρ€Π°Π΄) ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов для Ρ€Π°Π·ΠΌΠ΅Ρ‰-12.

float y = 190 * sin (i * PI / 6.0);

Transform (&x,&y);

d.TextOut (x-5,y-10,CString (str[i]), strlen (str[i])); // Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°. x-5; y-10

// Π²Ρ‹Π±Ρ€Π°Π½ΠΎ импСричСски. Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅

// ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ символа ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ происходит ΠΏΠΎ-Ρ€Π°Π·.

}

/*

d.SetTextColor (RGB (153,0,0));// ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π° [.] тСкстом

for (int i = 0;i < 48;i++)

{

float x = 170 * cos (i * PI / 24.0);// R * cos (i*Pi/24 Π³Ρ€Π°Π΄) ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов для Ρ€Π°Π·ΠΌΠ΅Ρ‰-48.

float y = 170 * sin (i * PI / 24.0);

Transform (&x,&y);

d.TextOut (x, y, CString (str_point[i]), strlen (str_point[i]));

}

//*/

}

//—————ΠΌΠ΅Ρ‚ΠΎΠ΄ измСнСния (пСрСрисовки) ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² (ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π»ΠΈΠ½ΠΈΠΉ ΠΈΡ‚Π΄)

// ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСняСтся клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π° (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ²) происходит ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

// (пСрСрисовка) ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

void Transform (float *px, float *py)

{

:GetClientRect (m_hWnd,&_rect);

// GetClientRect — клиСнтская Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°

//- ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΎΠΊΠ½Π° (клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°)

// m_hWnd — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ°ΠΌΠΎ ΠΎΠΊΠ½ΠΎ (handle)

// _rect — стуктура с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ, описанная Π² ΠΊΠ»Π°ΡΡΠ΅ CClockFrame

float width = (_rect.right-_rect.left)/2;

float height = (_rect.bottom-_rect.top)/2;

*px = *px + width; // ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ! (ΠΈΠ½Π°Ρ‡Π΅ всС Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС)

*py = height — *py;

}

//——————-Π·Π°Ρ‚ΠΈΡ€ΠΊΠ° старого Ρ„ΠΎΠ½Π° (пСрСрисовка)-ΠΏΠΎΠ»ΡƒΡ‡.Π΄ΠΈΠ½Π°ΠΌ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ——————————

void OnTimer (UINT n)

{

this->Invalidate (); // (0)

// CWnd: Invalidate — ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ Π»ΠΈ Ρ„ΠΎΠ½ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ обновлСния

// Π±Π΅Π· этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ

// -> Π²Ρ‹Π±ΠΎΡ€ элСмСнта ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ.

}

//——————-рисуСм эллирс Ρ‚ΠΈΠΏΠ° ΠΊΡ€ΡƒΠ³ (x, y, R)

void drawCircle (CPaintDC *aDC, int aX, int aY, int aD)

{

double r=aD/2;

aDC->Ellipse (aX-r, aY-r, aX+r, aY+r);

}

// этим ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ рисуСм эллипс Ρ‚ΠΈΠΏΠ° ΠΊΡ€ΡƒΠ³

// Π·Π°Π΄Π°Π΅ΠΌ Π½Π°Ρ‡. ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ X ΠΈ Y ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ R

DECLARE_MESSAGE_MAP (); // класс опрСдСляСм сопоставлСниС сообщСниям. Если ΠΎΠ½

// Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ события

};

//*****************************************************************************************************

//——————————макрос-Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΎΠ² (Π½Π° Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс)————————

BEGIN_MESSAGE_MAP (CClockFrame, CFrameWnd)

ON_WM_CREATE ()// рСакция Π½Π° ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ созданиС ΠΎΠΊΠ½Π°

ON_WM_PAINT ()// рСакция Π½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

ON_WM_TIMER ()// рСакция Π½Π° ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

END_MESSAGE_MAP ()

//****************************************************************************************************

//——————-Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ запускаСм экзСмпляр CClockFrame——————————————

class CClockApp: public CWinApp

{

public:

int InitInstance ()

{

CClockFrame *p ;

p = new CClockFrame ();

p->ShowWindow (1);

m_pMainWnd = p;

return 1;

}

};

//****************************************************************************************************

CClockApp a; // ΠΏΠΎΠ»Π΅ для ΠΈΠ½ΠΈΡ†. класса CClockApp

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ