ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π΅ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΌΡ ΡΠ΅Π³ΠΈΠΎΠ½Ρ ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΡΠΈΡ. 1.3: Π° β ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΡΠΎΡΠΌΡ; Π± β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½, ΡΠΎΡΠΌΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ; Π² β Π½Π°ΡΡΠΎΡΡΠΈΠΉ Π²ΠΈΠ΄ ΡΠΎΡΠΌΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°.
Π ΠΈΡ. 1.3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π°
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ, ΡΠ΄Π°Π»ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Ρ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ API-ΡΡΠ½ΠΊΡΠΈΠΉ:
...function CreateRectRgn(p1, p2, p3, p4: Integer): HRGN;
function CreateEllipticRgn(p1, p2, p3, p4: Integer): HRGN;
function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): HRGN;
ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π·Π΄Π΅ΡΡ ΠΈ Π½ΠΈΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ GDI-ΠΎΠ±ΡΠ΅ΠΊΡΠ° Β«ΡΠ΅Π³ΠΈΠΎΠ½Β». ΠΠ½ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Ρ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌΠΈ.
ΠΡΠ°ΠΊ, ΠΏΠ΅ΡΠ²Π°Ρ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (CreateRectRgn) ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ»ΠΊΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
β’ p1 ΠΈ Ρ2 β Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π»Π΅Π²ΠΎΠΉ Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠΎΡΠΊΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°;
β’ Ρ3 ΠΈ Ρ4 β Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΡΠ°Π²ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠΎΡΠΊΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ β CreateEllipticRgn β ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΡΠ»Π»ΠΈΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ CreateRectRgn), Π² ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π»ΠΈΠΏΡ.
Π’ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ β CreateRoundRectRgn β ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅Π³ΠΈΠΎΠ½ β ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ ΠΎΠΊΡΡΠ³Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠ³Π»Π°ΠΌΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ CreateRectRgn. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ5 ΠΈ ΡΠ± β ΡΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ° ΡΠ³Π»Π°ΠΆΠΈΠ²Π°ΡΡΠΈΡ ΡΠ³Π»Ρ ΡΠ»Π»ΠΈΠΏΡΠΎΠ² (ΡΠΈΡ. 1.4).
Π’ΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Ρ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΏΠΎ Π±ΠΈΡΠΎΠ²ΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°Π·Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Ρ-ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ ΡΠΎΡΠ΅ΠΊ β Π²Π΅ΡΡΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²:
...function CreatePolygonRgn(const Points; Count, FillMode: Integer): HRGN;
Π ΠΈΡ. 1.4. ΠΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ CreateRoundRectRgn
Π€ΡΠ½ΠΊΡΠΈΡ CreatePolygonRgn ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
β’ Points β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠΈΠΏΠ° TPoint, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠ΄Π½Ρ Π²Π΅ΡΡΠΈΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ;
β’ Count β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Points;
β’ FillMode β ΡΠ΅ΠΆΠΈΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΡΠ΅Π³ΠΈΠΎΠ½Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π² ΡΠ΅Π³ΠΈΠΎΠ½).
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ FillMode ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ WINDING (ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π»ΡΠ±Π°Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ) ΠΈΠ»ΠΈ ALTERNATE (ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°)....ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠ΅ΠΊ Π·Π°Π΄Π°ΡΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° 40 Ρ 30, Π»Π΅Π²ΡΠΉ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ³ΠΎΠ» ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° ΡΠΎΡΠΌΠ΅ Π² ΡΠΎΡΠΊΠ΅ (100; 100), ΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½ 20 Ρ 15 Ρ Π»Π΅Π²ΠΎΠΉ Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ (0;0) ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ CreateRectRgn Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ (0, 0, 19, 14), Π° Π½Π΅ (100, 100, 119, 114).
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ GDI-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² Π³Π». 6), ΡΠΎ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ GDI-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² DeleteObject:
...function DeleteObject(p1: HGDIOBJ): BOOL;
Π Π΅Π³ΠΈΠΎΠ½ ΠΊΠ°ΠΊ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π°
ΠΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΡΠ΅Π³ΠΈΠΎΠ½ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΡΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. Π’Π°ΠΊ Π²ΠΎΡ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ΅Π³ΠΈΠΎΠ½ Π½Π°Π·Π½Π°ΡΠ΅Π½ ΠΎΠΊΠ½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ΄Π°Π»ΡΡΡ Π΅Π³ΠΎ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ. Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΎΠΊΠ½Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
...function SetWindowRgn(hWnd: HWND; hRgn: HRGN; bRedraw: BOOL): Integer;
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ, ΠΈ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SetWindowRgn ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
β’ hWnd β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΠΊΠ½Π°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Handle ΡΠΎΡΠΌΡ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ);
β’ hRgn β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°, Π½Π°Π·Π½Π°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ (Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°);
β’ bRedraw β ΡΠ»Π°Π³ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠΊΠ½Π° ΠΏΠΎΡΠ»Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ, Π΄Π»Ρ Π²ΠΈΠ΄ΠΈΠΌΡΡ ΠΎΠΊΠΎΠ½ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True, Π΄Π»Ρ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ β False.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°, ΡΠΎΡΠΌΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ½Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API-ΡΡΠ½ΠΊΡΠΈΡ GetWindowRgn:
...function GetWindowRgn(hWnd: HWND; hRgn: HRGN): Integer;
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ (Handle) ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ Π½Π°Ρ ΠΎΠΊΠ½Π°. ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ GetWindowRgn ΡΠ°ΠΊ, ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡΠ΅Π³ΠΈΠΎΠ½Π°, ΡΠΎΡΠΌΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ½Π°. ΠΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
β’ NULLREGION β ΠΏΡΡΡΠΎΠΉ ΡΠ΅Π³ΠΈΠΎΠ½;
β’ SIMPLEREGION β ΡΠ΅Π³ΠΈΠΎΠ½ Π² ΡΠΎΡΠΌΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°;
β’ COMPLEXREGION β ΡΠ΅Π³ΠΈΠΎΠ½ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ;
β’ ERROR β ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° (Π»ΠΈΠ±ΠΎ ΠΎΠΊΠ½Ρ Π·Π°Π΄Π°Π½Π° ΠΎΠ±Π»Π°ΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ).
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ GetWindowRgn (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡΠΌΡ).
...var rgn: HRGN;
begin
rgn:= CreateRectRgn(0,0,0,0); //ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΌΠ°
//ΡΠ΅Π³ΠΈΠΎΠ½Π° Π½Π΅ Π²Π°ΠΆΠ½Π°
if GetWindowRgn(Handle, rgn) <> ERROR then
begin
//ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡΠ΅Π³ΠΈΠΎΠ½Π°, ΡΠΎΡΠΌΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ
//ΠΎΠΊΠ½Π°β¦
end;
DeleteObject(rgn); //ΠΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡΠ΅Π³ΠΈΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΡ
//Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄Π°Π»ΠΈΡΡ (Π·Π΄Π΅ΡΡ ΠΈΠ»ΠΈ Π² ΠΈΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅,
//Π½ΠΎ ΡΠ°ΠΌΠΈ)
end;
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌΠΈ
ΠΡΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π΅ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΎΡΠΌ. ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌΠΈ. ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ CombineRgn:
...function CombineRgn(p1, p2, p3: HRGN; p4: Integer): Integer;
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
β’ p1 β ΡΠ΅Π³ΠΈΠΎΠ½ (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ), ΠΊΡΠ΄Π° ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ;
β’ Ρ2, p3 β ΡΠ΅Π³ΠΈΠΎΠ½Ρ-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ;
β’ Ρ4 β ΡΠΈΠΏ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌΠΈ.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ CombineRgn ΠΏΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Ρ4 ΠΏΠΎΡΡΠ½ΡΠ΅ΡΡΡ Π² ΡΠ°Π±Π». 1.2.
Π’Π°Π±Π»ΠΈΡΠ° 1.2.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ CombineRgn
ΠΡΠΎΠΌΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ Π² ΡΠ°Π±Π». 1.2 ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Ρ4 ΡΡΠ½ΠΊΡΠΈΠΈ CombineRgn ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ RGNCOPY. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΡΠ΅Π³ΠΈΠΎΠ½, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Ρ2, Π² ΡΠ΅Π³ΠΈΠΎΠ½, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ p1.
Π’ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠ΅ΠΊ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ²-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ CombineRgn ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Ρ ΡΠ°ΠΌΡΡ ΠΏΡΠΈΡΡΠ΄Π»ΠΈΠ²ΡΡ ΡΠΎΡΠΌ, Π² ΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π΄Π°Π»Π΅Π΅.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠΎΠ½ (ΡΠΎΡΠΌ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΡΠΎΡΠΌΠ°Ρ ).
ΠΠ°ΠΊΡΡΠ³Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΊΠ½Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΌΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² Π±Π΅Π· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. Π€ΠΎΡΠΌΡ Π²ΡΠ΅Ρ ΡΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎ ΡΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°ΡΡΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ.
...ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΠ΅Π³ΠΈΠΎΠ½Ρ Π΄Π»Ρ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ FormCr eate. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°ΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡ Π²Π°Ρ Π½Π° ΠΌΡΡΠ»Ρ, ΡΡΠΎ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π΅ΡΠ»ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠΎΠ½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ, ΡΠΎ ΡΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π²ΡΠ΅ΠΌΡ ΠΎΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π·Π°ΠΏΡΡΠΊΠ° Π΄ΠΎ ΠΏΠΎΠΊΠ°Π·Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΎΡΠΌΡ) ΠΌΠΎΠΆΠ΅Ρ Π΄Π»ΠΈΡΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄. Π’Π°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΎΡΠΌΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΠΊΠ°Π·ΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΉ (Π³Π»Π°Π²Π½ΠΎΠΉ) ΡΠΎΡΠΌΡ (ΡΠΌ. DPR-ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ°). ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠΎΡΠΌΡ Π²ΡΡΡΠ½ΡΡ Π² Π½ΡΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠ΅Π³ΠΈΠΎΠ½Ρ Π΄Π»Ρ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ.
ΠΡΠ°ΠΊ, Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ FormCreate ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ Π² ΡΠΎΡΠΌΠ΅ ΡΠ»Π»ΠΈΠΏΡΠ° Ρ ΡΡΠ΅ΠΌΡ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠΎΡΠΌΡ (Π»ΠΈΡΡΠΈΠ½Π³ 1.10).
...ΠΠΈΡΡΠΈΠ½Π³ 1.10. ΠΠΊΠ½ΠΎ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠΎΡΠΌΠ΅ ΡΠ»Π»ΠΈΠΏΡΠΎΠ²
procedure TfrmElliptic.FormCreate(Sender: TObject);
var
formRgn, but1Rgn, but2Rgn, but3Rgn: HRGN;
begin
//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ
but1Rgn:= CreateEllipticRgn(0, 0, Button1.Widthβ1, Button1.
Heightβ1);
SetWindowRgn(Button1.Handle, but1Rgn, False);