1.3.3.2. Π Π΅Π³ΠΈΠΎΠ½Ρ
Π Π΅Π³ΠΈΠΎΠ½Ρ β ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠΎΡΠΌΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° Π½Π΅Ρ, ΠΎΠ½ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π½ΡΠΌΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΏΡΠΎΡΡΡΡ ΡΠΎΡΠΌ (CreateRectRgn, CreateEllipticRgn, CreatePolygonRgn ΠΈ Ρ.ΠΏ.), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π‘ombineRgn Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΡΠ΅ ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Ρ Π»ΡΠ±ΡΡ ΡΠΎΡΠΌ. ΠΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠ°. Π Π°Π½Π΅Π΅ ΠΌΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π³ΡΠ°ΡΠΈΠΊΠΈ. ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SetWindowRgn ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΎΡΠΌΡ ΠΎΠΊΠ½Π°, ΠΏΡΠΈΠ΄Π°Π²Π°Ρ Π΅ΠΌΡ ΡΠΎΡΠΌΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°.
1.3.3.3. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_SIZE ΠΈ WM_SIZING
Π‘ΠΎΠ±ΡΡΠΈΡ WM_SIZE ΠΈ WM_SIZING ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΊΠ½Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. Π "ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ" Π²Π°ΡΠΈΠ°Π½ΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΡΠ½ΡΡΡ ΡΠ°ΠΌΠΊΡ ΠΎΠΊΠ½Π°, Π½Π° ΡΠΊΡΠ°Π½Π΅ ΡΠΈΡΡΠ΅ΡΡΡ "ΡΠ΅Π·ΠΈΠ½ΠΎΠ²ΡΠΉ" ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π° ΠΈΠ»ΠΈ ΡΠ³ΠΎΠ» ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ Π·Π° ΠΊΡΡΡΠΎΡΠΎΠΌ ΠΌΡΡΠΈ. ΠΠΊΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_SIZING ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ lParam ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ TRect Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. ΠΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ, Π½ΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ , Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π² ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΠ° ΡΡΠΎΠΌ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Constraints: Π΅ΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ, ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_SIZING ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ wParam ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, Π·Π° ΠΊΠ°ΠΊΡΡ ΡΡΠΎΡΠΎΠ½Ρ ΠΈΠ»ΠΈ ΡΠ³ΠΎΠ» ΡΡΠ½Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π½Π°Π»Π°, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ· ΡΠ³Π»ΠΎΠ² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½ΡΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΡΠ°ΠΊΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π° ΠΈ ΠΎΡΠΏΡΡΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΌΡΡΠΈ, ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_SIZE. ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ². (ΠΠΊΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_SIZE ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΏΠΎ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·-Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.)
ΠΠΏΠΈΡΠ°Π½Π½ΡΠΉ "ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ" Π²Π°ΡΠΈΠ°Π½Ρ Π² ΡΠΈΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² Windows 95. ΠΠΎ Π²ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΎΠΏΡΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² (Π½Π°ΡΠΈΠ½Π°Ρ Ρ Windows Π₯Π ΡΡΠ° ΠΎΠΏΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΈ Π½Π΅ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°). Π ΡΠ°ΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΎΠΊΠ½Π° Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° "ΡΠ΅Π·ΠΈΠ½ΠΎΠ²ΡΠΌ" ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°ΠΌΠΎ ΠΎΠΊΠ½ΠΎ, ΠΈ Π»ΡΠ±ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΎΠΊΠ½Π°. Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_SIZE ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_SIZING, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ². ΠΠΎ Π² ΡΠ΅Π»ΠΎΠΌ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΉ, ΠΏΡΠΎΡΡΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π° "ΠΏΠΎ ΡΡΡΡ-ΡΡΡΡ".
1.3.3.4. Π ΡΠ΅ΠΏΠ΅ΡΡ β Π²ΡΠ΅ Π²ΠΌΠ΅ΡΡΠ΅
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ Π²Π΅ΡΠ΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΎΠΊΠ½ΠΎ Ρ Π΄ΡΡΠΊΠΎΠΉ, ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΠ²ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΄ΡΡΠΊΠΈ ΠΈ Ρ.ΠΏ. (Π»ΠΈΡΡΠΈΠ½Π³ 1.51).
ΠΠΈΡΡΠΈΠ½Π³ 1.51. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° WndHoleconst
// ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ Π΄ΡΡΠΊΠΈ Π΄ΠΎ ΠΊΡΠ°Ρ ΠΎΠΊΠ½Π°
HoleDistance = 40;
// ΠΠΎΠ½Π° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΌΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ - Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ²
// ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΠΎΡΡΡ ΠΊΡΡΡΠΎΡ Π²Π³Π»ΡΠ±Ρ ΠΎΡ ΠΊΡΠ°Ρ ΠΏΠ°Π½Π΅Π»ΠΈ, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ
// ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅Π½ΠΈΠ²Π°Π»ΠΎΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΠΊΡ.
BorderMouseSensivity = 3;
// ΠΠΎΠ½Π° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ³Π»Π° ΡΠ°ΠΌΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ - Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ²
// ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΠΎΡΡΡ ΠΊΡΡΡΠΎΡ ΠΎΡ ΡΠ³Π»Π° ΠΏΠ°Π½Π΅Π»ΠΈ, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ
// ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅Π½ΠΈΠ²Π°Π»ΠΎΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π² ΡΠ³ΠΎΠ» ΡΠ°ΠΌΠΊΠΈ.
CornerMouseSensivity = 15;
// Π’ΠΎΠ»ΡΠΈΠ½Π° ΡΠ°ΠΌΠΊΠΈ Π΄ΡΡΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°ΡΡΡ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΡΠ΅Π³ΠΈΠΎΠ½Π°
HoleBorder = 3;
// ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ° Π΄ΡΡΠΊΠΈ
MinHoleSize = 10;
// Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅Π»ΠΊΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ³Π»Π°
ArrowOffset = 8;
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ° ΡΠΎΡΠΌΡ "ΠΊΠ»Π°Π΄Π΅ΠΌ" ΠΏΠ°Π½Π΅Π»Ρ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SetWindowRgn ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΠΊΡΡ ΡΠΎΡΠΌΡ ΠΎΠΊΠ½Π°, ΡΡΠΎΠ±Ρ ΠΎΡ ΠΏΠ°Π½Π΅Π»ΠΈ Π±ΡΠ»Π° Π²ΠΈΠ΄Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΠΊΠ°, Π° Π½Π° Π²ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΡΠΈΡΠ»Π°ΡΡ Π΄ΡΡΠΊΠ°. Π Π°ΠΌΠΊΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΊΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠ°Π½Π΅Π»Ρ Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° ΡΡΠΎΠΏΠ»Π΅Π½Π½ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΡΠ°Ρ Π΄ΡΡΠΊΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π΅ΠΉ. ΠΠ»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ SetRegion (Π»ΠΈΡΡΠΈΠ½Π³ 1.52), ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΠΊΠ½Π°.
ΠΠΈΡΡΠΈΠ½Π³ 1.52. ΠΠ΅ΡΠΎΠ΄ SetRegion, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΠΊΠ½Π°procedure TFormHole.SetRegion;
var
Rgn1, Rgn2: HRGN;
R, R2: TRect;
begin
// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΡ ΠΎΠΊΠ½Π°
Rgn1 := CreateRectRgn(0, 0, Width, Height);
// ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ
// Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ³Π»Π° ΠΎΠΊΠ½Π° (Π° Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ
// ΡΠ³Π»Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠ°ΠΊ ΡΡΠΎ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ
// Left ΠΈ Π’ΠΎΡ). Π€ΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ
// ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ³Π»Π° ΠΎΠΊΠ½Π° Π½Π΅Ρ.
// ΠΡΠΈΠ΄Π΅ΡΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ WM_NCCalcRect
R2 := Rect(Left, Top, Left + Width, Top + Height);
Perform(WM_NCCALCSIZE, 0, LParam(@R2));
// ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΈΠ·
// ΡΠΊΡΠ°Π½Π½ΡΡ Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ
// ΡΠ³Π»Π° ΠΎΠΊΠ½Π°
OffsetRect(R2, -Left, -Top);
// ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ
// Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ³Π»Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈΡ
// Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π° ΠΎΠΊΠ½Π°
R := Rect(0, 0, PanelHole.Width, PanelHole.Height);
OffsetRect(R, PanelHole.Left + R2.Left, PanelHole.Top + R2.Top);
// ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π° Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠ°ΠΌΠΊΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ
// ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅Π³ΠΈΠΎΠ½
InflateRect(R, -HoleBorder, -HoleBorder);
Rgn2 := CreateRectRgnIndirect(R);
// Π²ΡΡΠΈΡΠ°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡΡΠ°Ρ
// ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ Π΄ΡΡΠΊΠΎΠΉ
CombineRgn(Rgn1, Rgn1, Rgn2, RGN_DIFF);
// ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½
DeleteObject(Rgn2);
// ΠΠ°Π·Π½Π°ΡΠ°Π΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½ Ρ Π΄ΡΡΠΊΠΎΠΉ ΠΎΠΊΠ½Ρ
SetWindowRgn(Handle, Rgn1, True);
// ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΅Π³ΠΈΠΎΠ½, Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ ΠΎΠΊΠ½Ρ, Π½ΠΈΠ³Π΄Π΅
// Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ SetWindowRgn
// ΡΠ΅Π³ΠΈΠΎΠ½ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈ ΠΎΠ½Π° ΡΠ°ΠΌΠ°
// ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡ Π΅Π³ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ
end;
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ Ρ ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ WindowProc (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ, Π·Π΄Π΅ΡΡ ΠΌΡ Π΅Π΅ ΠΊΠ°ΡΠ°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ). Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_NCHITTEST Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ ΠΌΡΡΠΈ Π½Π° ΡΠ°ΠΌΠΊΡ ΠΏΠ°Π½Π΅Π»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π·Π° ΡΡΡ ΡΠ°ΠΌΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΠ½ΡΡΡ. Π ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_SIZE ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π» Π½ΠΎΠ²ΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ. ΠΡΠ΅, Π΄ΡΡΠΊΠ° Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ Π³ΠΎΡΠΎΠ²Π°. Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΠΈΡΡ "Π΄ΡΡΠΊΡ" ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΎΠΊΠ½Π°, Π΅ΡΠ»ΠΈ ΠΎΠΊΠ½ΠΎ ΡΡΠ°Π»ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²ΠΌΠ΅ΡΡΠΈΡΡ Π² ΡΠ΅Π±Ρ Π΄ΡΡΠΊΡ. ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ "Π½Π°Π²Π΅ΡΡΠΈ ΠΊΡΠ°ΡΠΎΡΡ". "ΠΡΠ°ΡΠΎΡΠ°" Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΌΠΎΠ³ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ Π΄ΡΡΠΊΠΈ Π΄ΠΎ Π½ΡΠ»Ρ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π²ΡΡΠ»Π° Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΠΊΠ½Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΠΊΠ½ΠΎ ΡΠ°ΠΊ. ΡΡΠΎΠ±Ρ Π΄ΡΡΠΊΠ° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΎΠΊΠ½Π°. ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· ΡΡΠΈΡ Π·Π°Π΄Π°Ρ ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ: Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_SIZING Π΄Π»Ρ Π΄ΡΡΠΊΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΅Π΅ ΡΠ°Π·ΠΌΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΡΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ MinHoleSize Π½Π° MinHoleSize ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ², Π° Π³ΡΠ°Π½ΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ΄Π²ΠΈΠ½ΡΡΡ ΠΊ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌ ΠΎΠΊΠ½Π° Π±Π»ΠΈΠΆΠ΅, ΡΠ΅ΠΌ Π½Π° HoleDistance ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ². ΠΡΠΎΡΠ°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅: Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ WM_SIZE Π΄ΡΡΠΊΠΈ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Constraints ΡΠΎΡΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΌΠΎΠ³ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΠΊΠ½ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠΊΠ½ΠΎ Ρ Π΄ΡΡΠΊΠΎΠΉ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠΈ Π»ΡΠ±ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π΄ΡΡΠΊΠΎΠΉ. ΠΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 1.53.
ΠΠΈΡΡΠΈΠ½Π³ 1.53. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΎΠ±ΡΠ°Π·ΡΡΡΠ΅ΠΉ "Π΄ΡΡΠΊΡ"procedure TFormHole.PanelWndProc(var Msg: TMessage);
var
Pt: TPoint;
R: TRect;
begin
POldPanelWndProc(Msg);
if Msg.Msg = WM_NCHITTEST then
begin
// ΠΡΡ Ρ ΠΈΡΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_NCHITTEST
// Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ ΡΠΊΡΠ°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
// Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ
// ΠΌΡΡΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°ΠΌΠΊΠΈ ΠΈΠ»ΠΈ Π² Π΅Π΅ ΡΠ³ΠΎΠ». ΠΠ΅Π»ΠΎ ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ