ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

ΠžΠ±Ρ‰Π°Ρ информация ΠΏΡ€ΠΎ MFC. 
Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов MFC. 
ΠœΠ΅ΡΡ‚ΠΎ MFC Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Visual C++

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

ΠšΠ°Ρ€ΠΊΠ°Ρ MFC-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MFC, содСрТит Π΄Π²Π° класса, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌΡ‹Π΅ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: класс, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для создания прилоТСния, ΠΈ ΠΊΠ»Π°ΡΡ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для создания ΠΎΠΊΠ½Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, для создания минимальной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс ΠΎΡ‚ CWinApp, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ — ΠΎΡ‚ CFrameWnd. Π­Ρ‚ΠΈ Π΄Π²Π° класса ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ для любой… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΠ±Ρ‰Π°Ρ информация ΠΏΡ€ΠΎ MFC. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов MFC. ΠœΠ΅ΡΡ‚ΠΎ MFC Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Visual C++ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠžΠ±Ρ‰Π°Ρ информация ΠΏΡ€ΠΎ MFC. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов MFC. ΠœΠ΅ΡΡ‚ΠΎ MFC Π² ΡΡ€Π΅Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Visual C++

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ основных классов MFC. CObject (обСспСчиваСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°) >CGDIObject (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° графичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²); CDC (класс, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ связь с ΡƒΡΡ‚ройствами); CExeption (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций Π² MFC); CFile (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²); CMenu (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ΠΎΠ² мСню); CCmdTarget (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния)1)>CWnd (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для ΠΎΠΊΠΎΠ½); Π‘FrameWnd; 2)>CWinThread;CwinApp;

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° простой MFC ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° MFC содСрТит, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, 2 класса. И ΡΡ‚ΠΈ классы ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ CWnd ΠΈ CWinThread. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сдСлаСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ шагов: 1) Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ класс ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ CWinApp. 2) Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ класс ΠΎΠΊΠ½Π°, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ CFrameWnd. 3) Для класса прилоТСния ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ InitInstance (). 4) Π’ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ класса ΠΎΠΊΠ½Π° Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Create для создания ΠΎΠΊΠ½Π°. 5) ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прилоТСния. 6) Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ сообщСния. 7) ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

//App.h

class CApp: public CWinApp

{public: BOOL InitInstance ();};

Class CMainWin: public CFrameWnd

{public: CMainWin (); DECLARE_MESSAGE_MAP ()

};

//App.cpp

#include

#include «App.h»

BOOL CApp: InitInstance ()

{m_pMainWnd=newCMainWin;m_pMainWnd>ShouWindow (m_nCmdShow); m_pMainWnd>UpdateWindow (); return TRUE;}

CMainWin:CMainWin ()

{Create (NULL, «ΠŸΠ΅Ρ€Π²Π°Ρ MFC-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°»);}

CApp App;

BEGIN_MESSAGE_MAP (CMainWin, CFrameWnd)

END_MESSAGE_MAP ()

MFC — (Microsoft Foundation Class Library) базовая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов; Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ классов MFC. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° MFC содСрТит Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов, написанных Π½Π° C++. Π’ Π΅Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ находится класс CObject, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅, Π² Ρ‡Π°ΡΡ‚ности, для прСдоставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ‚ΠΈΠΏΠ΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния, для диагностики, ΠΈ Π΄Π»Ρ сСриализации. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΈΠΏΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ссылка ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° CObject, Ρ‚ΠΎ Π² ΡΡ‚ΠΎΠΌ случаС прСдусмотрСн ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ опрСдСлСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макроса RUNTIME- _CLASS (). Π₯отя Π² C++ имССтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ RTTI, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² MFC, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивСн ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Диагностика. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ CObject, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ Π·Π°ΠΏΡ€ΠΎΡΡƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ своС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΈ Π²Ρ‹Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² MFC ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. БСриализация — это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ записываСтся Π½Π° Π΄ΠΈΡΠΊ, ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ с Π΄ΠΈΡΠΊΠ°. Π­Ρ‚ΠΎ позволяСт ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС прилоТСния Π½Π° Π΄ΠΈΡΠΊΠ΅, ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запускС.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ классы. НСкоторыС классы ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ нСпосрСдствСнно ΠΎΡ‚ CObject. НаиболСС ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ срСди Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ CCmdTarget, CFile, CDC, CGDIObject ΠΈ CMenu. Класс CCmdTarget ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний. Класс CFile ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Класс CDC обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ контСкстов устройств. Об ΠΊΠΎΠ½Ρ‚Скстах устройств ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ нСсколько ΠΏΠΎΠ·Π΄Π½Π΅Π΅. Π’ ΡΡ‚ΠΎΡ‚ класс Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ практичСски всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ GDI. CGDIObject являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… DGI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€ΡŒΡ, кисти, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Класс CMenu ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для манипуляций с ΠΌΠ΅Π½ΡŽ. ΠžΡ‚ ΠΊΠ»Π°ΡΡΠ° CCmdTarget пороТдаСтся ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ класс CWnd. Он ΡΠ²Π»ΡΠ΅Ρ‚ся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для создания всСх Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΊΠΎΠ½, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ («ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅») ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ элСмСнты управлСния. НаиболСС ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом являСтся CFrameWnd. Как Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ этого класса. ΠžΡ‚ ΠΊΠ»Π°ΡΡΠ° CCmdTarget, Ρ‡Π΅Ρ€Π΅Π· класс CWinThread, пороТдаСтся, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, СдинствСнный ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… классов, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π² MFC-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… происходит Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ: Π‘ WinApp. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… классов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для создания самого прилоТСния. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ имССтся ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ создан, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ Π² MFC. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π² MFC-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ API доступны Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ MFC. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ„ункциям API Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Иногда это Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ MFC.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² MFC. Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ ряд Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ВсС ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с ΠΏΡ€Π΅Ρ„икса Afx. (Когда MFC Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ назывался AFX, Application Framework. ПослС ряда сущСствСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ AFX Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² MFC, Π½ΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΎΡΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π² Π½Π°Π·Π²Π°Π½ΠΈΡΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².) НапримСр, ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция AfxMessageBox (), ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π°Ρ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ сообщСния. Но Π΅ΡΡ‚ΡŒ ΠΈ Ρ‡Π»Π΅Π½-функция MessageBox (). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, часто Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ функциями-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ. Π€Π°ΠΉΠ» AFXWIN.H. ВсС MFC-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» AFXWIN.H. Π’ Π½Π΅ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, содСрТатся описания классов, структур, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² MFC. Он Π°Π²Ρ‚оматичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², относящихся ΠΊ MFC, Π² Ρ‚ΠΎΠΌ числС ΠΈ WINDOWS. H, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Windows API ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Π‘ ΠΈ «Ρ‡ΠΈΡΡ‚ΠΎΠΌ» APL.

ΠšΠ°Ρ€ΠΊΠ°Ρ MFC-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MFC, содСрТит Π΄Π²Π° класса, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌΡ‹Π΅ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: класс, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для создания прилоТСния, ΠΈ ΠΊΠ»Π°ΡΡ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для создания ΠΎΠΊΠ½Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, для создания минимальной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс ΠΎΡ‚ CWinApp, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ — ΠΎΡ‚ CFrameWnd. Π­Ρ‚ΠΈ Π΄Π²Π° класса ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ для любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΡ€ΠΎΠΌΠ΅ создания Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… классов, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° всСх сообщСний, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… ΠΎΡ‚ Windows. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΅Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, поэтому ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ сообщСниС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. MFC ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ всС сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нас Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ присутствуСт ΠΊΠ°Ρ€Ρ‚Π° ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠΎΠ² Π½Π° ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΠΈΠ»ΠΈ просто ΠΊΠ°Ρ€Ρ‚Π° сообщСний. ПозТС ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. Для создания стандартного ΠΎΠΊΠ½Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ класс ΠΎΡ‚ CFrameWnd. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ½ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся CMainWin. Он ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ конструктор ΠΈ ΠΌΠ°ΠΊΡ€ΠΎΡ DECLARE_MESSAGE_MAP (). ΠœΠ°ΠΊΡ€ΠΎΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ разворачиваСтся Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠ°Ρ€Ρ‚Ρ‹ сообщСний, которая опрСдСляСт, какая Ρ‡Π»Π΅Π½-функция класса Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Windows. Π­Ρ‚ΠΎΡ‚ макрос примСняСтся для любого ΠΎΠΊΠ½Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ сообщСния. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ послСдним Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ класса. Π‘Π°ΠΌΠΎ ΠΎΠΊΠ½ΠΎ создаСтся Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Create (). Π­Ρ‚Π° функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ… прилоТСниях. Она выполняСт дСйствия ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ΠΎΠΊΠ½Π°. Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ самый простой случай Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ. Пока Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ опрСдСляСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°, Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°Π²Π΅Π½ NULL.

Класс БАрр прилоТСния пороТдаСтся ΠΎΡ‚ CWinApp. Π­Ρ‚ΠΎΡ‚ класс ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‡Π»Π΅Π½-функция со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ: virtual BOOL CWinApp: lnitlnstance (); Π­Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ функция, которая вызываСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ всС дСйствия, связанныС с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ прилоТСния. Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ TRUE ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΈ FALSE Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Π’ Π½Π°ΡˆΠ΅ΠΌ случаС, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сначала создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CMainWin, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅Π³ΠΎ запоминаСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ m_pMainWnd. Π­Ρ‚Π° пСрСмСнная являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ класса CWinThread. Она ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ CWnd* ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ… MFC-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… строчках Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹ ΠΎΠΊΠ½Π°. Когда ΠΎΠΊΠ½ΠΎ создано, вызываСтся функция с ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ: BOOL CWnd: ShowWindow (int How);

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

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний Π² MFC. Π’ MFC Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° содСрТит Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° поступаСт связанноС с Π½Π΅ΠΉ сообщСниС. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΈ ΠΎΠ½Π° пСрСдаСтся Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: Π’ ΠΊΠ°Ρ€Ρ‚Ρƒ сообщСний ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сообщСния. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ класса, отвСтствСнного Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ сообщСния. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

2. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ контСкста устройства, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ контСкстов устройства, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний WM_Π‘HAR, WM_PAINT

Π’ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ смыслС контСкст устройства являСтся ΠΏΡƒΡ‚Π΅ΠΌ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΡƒ Windows-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ устройства являСтся структурой, которая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ опрСдСляСт состояниС этого Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ ΡΠΏΠΎΡΠΎΠ± Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст устройства. Пока это Π½Π΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ, Π½Π΅Ρ‚ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ ΠΎΠΊΠ½ΠΎΠΌ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ для Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Windows-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… контСкст устройства ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetDC (), Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ReleaseDC (). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Windows ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ лишь нСбольшоС количСство контСкстов, Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° освободила контСкст послС окончания Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ. MFC ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы, способныС Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ этим процСссом. Π’ Ρ‡Π°ΡΡ‚ности, ΠΏΡ€ΠΈ создании экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° CClientDC ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прСдоставляСтся контСкст устройства. Если этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡŠΡΡ‚ΡŒ, вызываСтся функция ReleaseDC () ΠΈ ΠΊΠΎΠ½Ρ‚Скст устройства автоматичСски освобоТдаСтся. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса Π‘ClientDC записываСтся Π² Π²ΠΈΠ΄Π΅:

Π‘ClientDC (CWnd *Windows);

Π³Π΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Windows являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ прСдоставляСтся контСкст устройства. Для Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this.

Π’Ρ‹Π²ΠΎΠ΄ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TextOut ():

virtual BOOL CDC: TextOut (int X, int Y, LPCSTR lpszStr, int Length);

Π³Π΄Π΅ X, Y — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ… (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), lpszStr — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ, которая выводится, Π° Length — Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° наТатия клавиш ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ — Π² Ρ‚ΠΎΡ‡ΠΊΡƒ (1, 1) ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° наТатия клавиш ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

char str [80]; // строка символов для Π²Ρ‹Π²ΠΎΠ΄Π°

void CMainWin: OnChar (UINT nChar, UINT nRepCnt, UINT nFlags)

{CClientDC dc (this); // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ контСкста ΠΎΠΊΠ½Π°

dc.TextOut (1,1," «, 3); // ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старого тСкста

wsprintf (str," %с", ch); // Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строки с ΠΊΠΎΠ΄ΠΎΠΌ клавиши

dc.TextOut (1, 1, str, strlen (str)); // Π²Ρ‹Π²ΠΎΠ΄ строки Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ (1, 1)

}

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст устройства с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CClientDC. Частным случаСм являСтся примСнСния сообщСния WM_PAINT.

ОбновлСниС содСрТимого Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Для обновлСния содСрТимого Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΎΡΠ»Π°Ρ‚ΡŒ сообщСниС WM_PAINT. Π’Π½Π΅ Π΅Π³ΠΎ примСнСния содСрТимоС ΠΎΠΊΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ. Π’. Π΅. ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, слСдуСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΡΡ‚ΠΎΠΌΡƒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ.

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ WM_PAINT ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π° ON_WM_PAINT (), Π° ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π΅ — ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ OnPaint (). Π­Ρ‚ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сообщСния WM_PAINT

void CMainWin: OnPaint ()

{CPaintDC dc (this); // ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ контСкста ΠΎΠΊΠ½Π°

dc.TextOut (1,1, str, strlen (str)); // ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ символа

}

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ OnPaint (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ символа, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ соотвСтствСнно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ OnChar (), записанному Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ для получСния контСкста устройства здСсь использован ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ CPaintDC. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ CClientDC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ской Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, CPaintDC обСспСчиваСт Ρ€ΠΎΠ±ΠΎΡ‚Ρƒ со Π²ΡΠ΅ΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΠ½Π°.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Windows ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°Π»Π°, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сообщСниС WM_PAINT. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ, максимизируСт, Π΄Π²ΠΈΠΆΠ΅Ρ‚ экраном, измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° ΠΈ Ρ‚. ΠΏ. Но ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ»Π°Ρ‚ΡŒ сообщСниС WM_PAINT, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ InvalidateRect () — Ρ‡Π»Π΅Π½ класса CWnd, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ:

void CWnd: InvalidateRect (LPCRECT lpRegion, BOOL Erase=TRUE);

Π³Π΄Π΅ lpRegion — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Erase — Ρ„Π»Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ TRUE устанавливаСт ΠΈΠ·ΡŠΡΡ‚ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ содСрТимого ΠΎΠΊΠ½Π°. Если ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ значСния NULL, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ InvalidateRect () обСспСчиваСт ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ посылку сообщСния WM_PAINT ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° OnPaint ().

ПолноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

InvalidateRect (NULL);

Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов систСмы, которая Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ€Ρ†Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π½ΡƒΡ‚ΡŒ, Π·Π°Π΄Π°Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ обновлСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π‘Rect region (10,10,100,100);

InvalidateRect (region);

Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ лишь ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, ограничСнная ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ с Π»Π΅Π²Ρ‹ΠΌ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ ΡƒΠ³Π»ΠΎΠΌ (10,10) ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΏΡ€Π°Π²Ρ‹ΠΌ ΡƒΠ³Π»ΠΎΠΌ (100,100). Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ обновлСния становится особСнно интСрСсным, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΎΠΊΠ½Π°, Π° ΡΡ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ с ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСния Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° WM_TIMER.

3. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Скстом Π² MFC. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста, установки Ρ†Π²Π΅Ρ‚ΠΎΠ², Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΎΡ‚обраТСния, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ

Π’ Windows Π΅ΡΡ‚ΡŒ практичСски Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ возмоТности ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ тСкста. НСкоторыС ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сСйчас ΡƒΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ своС Π±Ρ‹Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ, оказалось ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ), Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

НСбольшоС ввСдСниС

Π›ΡŽΠ±ΠΎΠΉ ΡˆΡ€ΠΈΡ„Ρ‚, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Π² Windows, характСризуСтся нСсколькими ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π“Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Π° (typeface) — это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠΉ ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… стилСвыми ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€: Arial, Times New Roman, MS Sans Serif. Π Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° — это высота ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ всС символы ΡˆΡ€ΠΈΡ„Ρ‚Π°, выраТаСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… — ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ…. ΠŸΡƒΠ½ΠΊΡ‚ Ρ€Π°Π²Π΅Π½ 1/72 части дюйма. Π­Ρ‚Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΏΡ€ΠΈΡˆΠ»Π° ΠΈΠ· ΠΏΠΎΠ»ΠΈΠ³Ρ€Π°Ρ„ΠΈΠΈ. НачСртаниС — это спСцифичСскиС характСристики ΡˆΡ€ΠΈΡ„Ρ‚Π°. Π’ Windows доступны Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ начСртания: Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ (normal), курсивноС (italic), ΠΆΠΈΡ€Π½ΠΎΠ΅ (bold) ΠΈ ΠΆΠΈΡ€Π½ΠΎΠ΅ курсивноС (bold italic). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹Π΅ (fixed pitch', ΠΏΡ€ΠΈΠΌΠ΅Ρ€ — Courier New, ΠΈ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ (variable pitch), ΠΏΡ€ΠΈΠΌΠ΅Ρ€ — Times New Roman.

БСйчас Π² Windows Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ Π΄Π²ΡƒΡ… Π³Ρ€ΡƒΠΏΠΏ: растровыС (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ — MS Sans Serif, Fixedsys) ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π½Ρ‹Π΅ TrueType (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ — Arial, Courier New). ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ТСстко ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для отобраТСния Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠ³ΠΎ тСкста Π½Π° ΡΠΊΡ€Π°Π½Π΅. Π’Ρ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΡ‡Π΅Π½ΡŒ слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’ Π½ΠΈΡ… Π·Π°Π΄Π°Π½Ρ‹ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρ‹ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ TrueType — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ языкС, которая выполняСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ растСризатор. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ опрСдСляСт способ расчСта ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† символов Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ². ΠŸΡ€ΠΈ использовании символов малСнького Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (высотой ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎ 30 Ρ‚ΠΎΡ‡Π΅ΠΊ) модСль ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² становится Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ‹ сильно ΠΈΡΠΊΠ°ΠΆΠ°ΡŽΡ‚ΡΡ. Для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΡΡ‚ΠΈΠΌ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° (Ρ…ΠΈΠ½Ρ‚Ρ‹). Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΡˆΡ€ΠΈΡ„Ρ‚Π°Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ слоТный ΠΈ Π΄ΠΎΠ»Π³ΠΈΠΉ процСсс, поэтому Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ встрСчаСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ качСствСнно Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TrueType ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста Π½Π° ΡΠΊΡ€Π°Π½ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ стандартных ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² Windows (Times New Roman, Arial ΠΈ Courier New), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ качСствСнно Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Ρ‹.

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ тСкста

Π—Π° Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² ΠΎΠΊΠ½ΠΎ Π² MFC ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ функция CDC:TextOut(). Π•ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для Π²Ρ‹Π²ΠΎΠ΄Π° строки. Π­Ρ‚ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ логичСскими ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ Π² логичСских Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ…. Π­Ρ‚ΠΎ относится ΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ функциям Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΎΠΊΠ½ΠΎ. Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ логичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠΈΠΊΡΠ΅Π»ΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ логичСскими ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ пиксСли, Ρ‡Ρ‚ΠΎ для нас ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° тСкста ΠΈ Ρ„ΠΎΠ½Π°

ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ тСкста с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TextOutQ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ тСкст выводится Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Π΅Π»ΠΎΠΌ) Ρ„ΠΎΠ½Π΅. Однако с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

virtual COLORREF CDC: SetTextColor (COLORREF Color); virtual COLORREF CDC: SetBkColor (COLORREF Color);

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚Π°. Π’ΠΈΠΏ COLORREF прСдставляСт собой 32-разрядноС Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число — прСдставлСниС Ρ†Π²Π΅Ρ‚Π° Π² Π²ΠΈΠ΄Π΅ красной, Π·Π΅Π»Π΅Π½ΠΎΠΉ ΠΈ ΡΠΈΠ½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, каТдая Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π² 8 Π±ΠΈΡ‚. Для формирования этого значСния сущСствуСт макрос RGB().

Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° отобраТСния Ρ„ΠΎΠ½Π°

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetBkMode() ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ отобраТСния Ρ„ΠΎΠ½Π°. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ: int CDC: SetBkMode (int Mode);

Ѐункция опрСдСляСт, Ρ‡Ρ‚ΠΎ происходит с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π° (Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов) ΠΏΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ тСкста. Π Π΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: OPAQUE ΠΈ TRANSPARENT. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ тСкста Π±ΡƒΠ΄Π΅Ρ‚ выводится Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„ΠΎΠ½. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС Ρ„ΠΎΠ½ выводится Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ (ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ «ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ»). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ OPAQUE.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ тСкста

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ тСкстовых ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Π° символов Ρƒ Π½ΠΈΡ… разная. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ строками зависит ΠΊΠ°ΠΊ ΠΎΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’Π΅ΡΡŒ Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² Windows осущСствляСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ всС эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

НапримСр, ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΉ тСкстовой строки послС Π΄Ρ€ΡƒΠ³ΠΎΠΉ прСдполагаСтся, Ρ‡Ρ‚ΠΎ извСстны высота ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ пиксСлСй ΠΌΠ΅ΠΆΠ΄Ρƒ строками. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

BOOL CDC: GetTextMetrics (LPTEXTMETRICS TextAtttrib) const; ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ TEXTMETRIC, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄ΡƒΡ‚ записаны установки Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π° контСкста устройства. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ достаточно ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅ΠΉ. НаиболСС Π²Π°ΠΆΠ½Ρ‹Π΅ поля ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

LONG tmHeight Полная высота ΡˆΡ€ΠΈΡ„Ρ‚Π°

LONG tmAscent Высота Π½Π°Π΄ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ

LONG tmDescent Высота подстрочных элСмСнтов

LONG tmlntemalLeading ΠŸΡƒΡΡ‚ΠΎΠ΅ пространство Π½Π°Π΄ символами

LONG tmExternalLeading ΠŸΡƒΡΡ‚ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ строками

LONG tmMaxCharWidth Максимальная ΡˆΠΈΡ€ΠΈΠ½Π° символов Для получСния числа логичСских Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ строками Π½ΡƒΠΆΠ½ΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ значСния tmHeight ΠΈ tmExternalLeading. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹ΡΠΎΡ‚Π° символов.

ИзмСнСниС ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ экзСмпляр класса CFont, содСрТащий Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ (ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅). Для измСнСния ΡˆΡ€ΠΈΡ„Ρ‚Π° Π² ΠΊΠΎΠ½Ρ‚СкстС устройства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‡Π»Π΅Π½-функция SelectObject(), которая Π² Π½Π°ΡˆΠ΅ΠΌ случаС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π°. ПослС выполнСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ тСкст Π±ΡƒΠ΄Π΅Ρ‚ выводится Π½ΠΎΠ²Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ. Π₯отя функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ старого ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ вовсС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°: Π²Ρ‹Π±ΠΎΡ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса CFont создан, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ ΠΈΠ· ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅, с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ растровый, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚. НавСрноС, Π’Ρ‹ ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ наличия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Ρƒ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€, послС Ρ‡Π΅Π³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, Π½ΠΈ Π² MFC Π½ΠΈ Π² Windows Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Ρ‚. ЕдинствСнная функция, которая ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для выполнСния этой Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ:

BOOL CFont: :CreateFont (int nHeight, int nWidth,

int nEscapement,

int nOrientation,

int nWeight,

BYTE bltalic,

BYTE bUnderline,

BYTE cStrikeOut,

BYTE nCharSet,

BYTE nOutPrecision,

BYTE nClipPrecision,

BYTE nQuality,

BYTE nPitchAndFamily,

LPCTSTR IpszFacename);

Ѐункция ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Π°, ΠΈ ΡΠΌΡ‹ΡΠ» ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½.

Ѐункция Π±Ρ‹Π»Π° создана Π΄Π°Π²Π½ΠΎ, ΠΈ Ρ‚ΠΎΠ³Π΄Π° казалась ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ идСя подстановки ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², ΡΡƒΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: программист Π·Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ, a Windows сама Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ трансформации ΠΈ ΡΠΈΠ½Ρ‚Π΅Π·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ся. ВпослСдствии оказалось, Ρ‡Ρ‚ΠΎ эта тСхнология Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ работоспособной (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ практичСски это слоТная Π·Π°Π΄Π°Ρ‡Π° ΠΈΠ· ΠΎΠ±Π»Π°ΡΡ‚ΠΈ искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°). Π’Π°ΠΊΠΆΠ΅ функция позволяСт ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ трансформации ΡˆΡ€ΠΈΡ„Ρ‚Π° — Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст ΠΏΠΎΠ΄ ΡƒΠ³Π»ΠΎΠΌ. БСйчас это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ. ГрафичСскиС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ свои Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ трансформаций, ΠΈ Ρ‡Π°ΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ PostScript. Π‘ΡƒΡ‚ΡŒ ΠΆΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ качСствСнно ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ ΠΈ Π² Ρ‚Π΅Ρ… начСртаниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π±Π΅Π· трансформаций (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ…ΠΈΠ½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ трансформациях). Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ трСбуСтся высокоС качСство отобраТСния тСкста, поэтому Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ трансформации ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ нСумСстны. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌΠΈ лишь Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° повСдСния: Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запросила, Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ Π΅Π³ΠΎ создал Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π»ΠΈΠ±ΠΎ откаТСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ отсутствии ΡˆΡ€ΠΈΡ„Ρ‚Π°.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π½Π°Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈΠ΅ ΠΈ Π³Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Ρƒ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ трансформации ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈ ΡΠΈΠ½Ρ‚Π΅Π·Π° ΠΏΡ€ΠΈ отсутствии Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ. Π’Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateFontQ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡΠ²ΠΎΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….

Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Ссли ΠΎΠ½ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся стандартным. Π’ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ mjpFoni):

void CMainFrame: SetClientFont (CString Typeface, // Π“Π°Ρ€Π½ΠΈΡ‚ΡƒΡ€Π°

int Size, // Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ…

BOOL Bold, // ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ ΠΆΠΈΡ€Π½ΠΎΠ³ΠΎ начСртания

BOOL Italic // ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠ³ΠΎ начСртания

}

FF_DONTCARE, Typeface);

1. Π‘ΠΎΠ²Π΅Ρ‚ΠΎΠ² Π‘. Π―., Π―ΠΊΠΎΠ²Π»Π΅Π² Π‘. А. «Π ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ°». — Πœ.: Π’Ρ‹ΡΡˆ. шк., 2007. 271 с.

2. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ указания ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΈ ΠΌΠ΅Ρ…Π°Ρ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°» для студСнтов ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π“ΠšΠ‘Π  «. 2005.

3. РадиоэлСктроника. ΠŸΠΈΡ‡ΡƒΠΊΠΈΠ½ Π“. Π’. М. 1999.

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