Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Β«ΠΠ½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΡΠ°ΡΡΒ» Π½Π° ΡΠ·ΡΠΊΠ΅ 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