GoToForeground;
// ΠΠΎΠΊΠ° Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΈΡΠ°Π΅ΠΌ ΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ
Letter := ReadStringFromMailslot;
while Letter <> '' do
begin
// ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
// ΠΠΎΠΌΠ°Π½Π΄Π° "s" Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°
// ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ ΠΌΡ Π΅Π΅ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ
case Letter[1] of
'e': OpenFile(Copy(Letter, 2, MaxInt), False);
'v': OpenFile(Copy(Letter, 2, MaxInt), True);
end;
Letter := ReadStringFronMailslot;
end;
end;
// Π§ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠΊΠ°
function TDksViewMainForm.ReadStringFromMailslot: string;
var
MessageSize: DWORD;
begin
// ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌ ΡΡΠΈΠΊΠ΅
GetMailslotInfo(ServerMailslotHandle, nil, MessageSize, nil, nil);
// ΠΡΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ
if MessageSize = MAILSLOT_NO_MESSAGE then
begin
Result := '';
Exit;
end;
// ΠΡΠ΄Π΅Π»ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΡΡΠ΅Ρ ΠΈ ΡΠΈΡΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² ΡΡΠΎΡ Π±ΡΡΠ΅Ρ
SetLength(Result, MessageSize);
ReadFile(ServerMailslotHandle, Result[1], MessageSize, MessageSize, nil);
end;
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π²ΡΠΎΡΠΎΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ Π±Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌΡ ΡΡΠΈΠΊΡ, Π° ΠΏΠΎ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π½Π°ΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ.
1.3.2.4. ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½
ΠΠ΅ΡΠ²Π°Ρ ΠΊΠΎΠΏΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½. ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ: Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SetForegroundWindow ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΠ΄Π° Π»ΡΠ±ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎ Windows 95 ΠΈ NT 4. Π Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ Π²Π²Π΅Π΄Π΅Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ ΠΏΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΡ SetForegroundWindow ΠΏΡΠΎΡΡΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡ ΠΌΠΈΠ³Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ²Π΅ΡΠ½ΡΡΠ°, ΠΊΠΎΠΌΠ°Π½Π΄Π° Application.Restore Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ, Π½ΠΎ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½, ΡΡΠΎ Π½Π°ΠΌ ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΡ Π° Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠ²Π΅ΡΠ½ΡΡΠ°, ΡΠΎ "Π²ΡΠ»ΠΈΠ²Π°Π΅ΠΌ ΠΈΠ· ΡΠ°ΠΉΠ½ΠΈΠΊΠ° Π²ΠΎΠ΄Ρ ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠ²ΠΎΠ΄ΠΈΠΌ Π·Π°Π΄Π°ΡΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ": ΡΠ½Π°ΡΠ°Π»Π° ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Application.Minimize, Π° ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ. Π¦Π΅Π»ΠΈ ΠΌΡ Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡ β Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½Π΅ΠΌ ΠΏΠ»Π°Π½Π΅.
ΠΠ΅Π»ΠΎ ΠΏΠΎΡΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠΊΠ½Π° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠ΅ΠΉ: Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΡΡΠΎΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ/ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ½Π° Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ, Π° ΠΏΠΎΡΠΎΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π΅. Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ GoToForeground Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 1.50.
ΠΠΈΡΡΠΈΠ½Π³ 1.50. ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½// ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½
procedure TDKSViewMainForm.GoToForeground;
var
Info: TAnimationInfo;
Animation: Boolean;
begin
// ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π»ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΠΊΠΎΠ½
Info.cbSize := SizeOf(TAnimationInfo);
Animation := SystemParametersInfo(SPI_GETANIMATION,
SizeOf(Info), @Info, 0 and (Info.iMinAnimate <> 0);
// Π΅ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π°, ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°Π½ΠΈΡ
if Animation then
begin
Info.iMinAnimate := 0;
SysteParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
end;
// ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌ
if not IsIconic(Application.Handle) then Application.Minimize;
// ΠΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ
// Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½
Application.RestorΠ΅;
// ΠΡΠ»ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ ΠΎΠΊΠΎΠ½ Π±ΡΠ»Π° Π²ΠΊΠ»ΡΡΠ΅Π½Π°, ΡΠ½ΠΎΠ²Π° Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΅Π΅
if Animation than
begin
Info.iMinAnimate := 1;
SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
end;
end;
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ: ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠ΅Π΅Ρ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ; ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π½Π΅ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½ΠΎ Π»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ Π΅ΡΠ»ΠΈ Π΄Π°, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΡ; Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ Π·Π°ΠΏΡΡΠΊ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠΏΠΈΡ; ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
1.3.3. ΠΠ±ΠΎΠ±ΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ 3 β "ΠΡΡΡΠ²ΠΎΠ΅" ΠΎΠΊΠ½ΠΎ
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ "Π΄ΡΡΡΠ²ΠΎΠ΅" ΠΎΠΊΠ½ΠΎ. Π’Π΅, ΠΊΡΠΎ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ SetWindowRgn, Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ "Π΄ΡΡΠΊΡ" Π² ΠΎΠΊΠ½Π΅ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ΄Π°ΡΡ Π΅ΠΌΡ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΡΡ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΎΡΠΌΡ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠΎ ΠΌΡ Π·Π΄Π΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅: Ρ Π΄ΡΡΠΊΠΈ Π² Π½Π°ΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΌΠΊΠ°, ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠΊΠΈ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π°. ΠΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 1.14.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ.
1.3.3.1. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_NCHCHITTEST
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π² Windows Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π΄Π²Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ: ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΠΈ Π½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ. ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ° ΠΎΠ±Π»Π°ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΊΠ½Π°. ΠΠ΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ β ΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΠΊΠ½Π°: ΡΠ°ΠΌΠΊΠ°, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΈ Ρ.ΠΏ. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΊΠ½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°ΠΌΠΎ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_NCCALCRECT. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠΊΠ½Π° (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ) Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΊΠ½Π° ΠΈΠΌΠ΅ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈ Π΄Π»Ρ Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ WM_PAINT, Π° Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ β WM_NCPAINT. ΠΠ°ΠΆΠ°ΡΠΈΠ΅ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡΡΠΈ Π½Π°Π΄ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΎΠΊΠ½Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_LBUTTONDOWN, Π° Π½Π°Π΄ Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ β WM_NCLBUTTONDOWN ΠΈ Ρ.ΠΏ. ΠΠ΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½Π°: Π² Π½Π΅Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΠΊΡΡΡΠΈΡ, ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π·Π°ΠΊΡΡΡΠΈΡ ΠΎΠΊΠ½Π°, ΠΈΠΊΠΎΠ½ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Ρ, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΌΠ΅Π½Ρ, Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ ΠΈ ΡΠ°ΠΌΠΊΠ°. Π Π°ΠΌΠΊΠ° ΡΠΎΠΆΠ΅ Π½Π΅ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½Π° β ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π»Π΅Π²ΡΡ, ΠΏΡΠ°Π²ΡΡ, Π²Π΅ΡΡ Π½ΡΡ ΠΈ Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠ΅ΡΡΡΠ΅ ΡΠ³Π»Π°. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_NCCALCSIZE ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΎΠΊΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ·Π½Π°ΡΡ, Π³Π΄Π΅ ΠΊΠ°ΠΊΠ°Ρ ΡΠ°ΡΡΡ Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ. ΠΡΠ° Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ β WM_NCHITTEST. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² WM_NCHITTEST ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ, ΠΊ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΊΠ½Π° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΡΠ° ΡΠΎΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, HTCLIENT ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΎΡΠΊΠ° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΊΠ½Π°, HTCAPTION β ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡ, HTLEFT β ΠΊ Π»Π΅Π²ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΠΌΠΊΠΈ, ΠΌΠ΅Π½ΡΡΡΠ΅ΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΈ Ρ.ΠΏ.).
Π ΠΈΡ. 1.14. "ΠΡΡΡΠ²ΠΎΠ΅" ΠΎΠΊΠ½ΠΎ
ΠΡΠΈ Π»ΡΠ±ΡΡ ΡΠΎΠ±ΡΡΠΈΡΡ ΠΎΡ ΠΌΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°ΡΠΈΠ½Π°Π΅Ρ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΎΠΊΠ½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_NCHITTEST Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡΡΠΈ. ΠΠΎΠ»ΡΡΠΈΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π΄Π°Π»ΡΡΠ΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡΡΠΈ ΠΎΠΊΠ½Ρ ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ WM_NCHITTEST. ΠΠ°ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ» HTCLIENT, ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ WM_LBUTTONDOWN, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β WM_NCLBUTTONDOWN. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΌΡΡΠΈ ΠΎΠΊΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ WM_NCHITTEST β ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ, Π½Π°Π΄ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΎΠΊΠ½Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΊΡΡΡΠΎΡ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅Π½ΡΡ Π΅Π³ΠΎ Π²ΠΈΠ΄ (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° Π½Π°Π΄ ΡΠ°ΠΌΠΊΠΎΠΉ).
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ WM_NCHITTEST? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ ΡΠΎΡΠΊΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΡΠ°ΡΡΡ ΠΎΠΊΠ½Π° ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» Π½Π΅ HTCLIENT, Π° HTCAPTION? ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π»ΡΠ±ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ ΠΌΡΡΠΈ Π½Π°Π΄ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ Π±ΡΠ΄ΡΡ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π°Π΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²Π·ΡΡΡ ΠΎΠΊΠ½ΠΎ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΡΠ°ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ, Π° Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠ΅Π»ΡΠΎΠΊ Π½Π° Π½Π΅ΠΉ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ½Π°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΠΌΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ "ΠΌΡΡΠΈΠ½ΡΡ " ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠΊΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π΅ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅.
Π‘ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΊΠ°ΡΡ Π·Π° Π»ΡΠ±ΡΡ ΡΠΎΡΠΊΡ, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ VCL: Π½Π° ΠΌΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΠΎ ΠΎΠΊΠ½ΠΎ, Π½ΠΎ ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π½Π° Π½Π΅ΠΌ Π½Π΅ΠΎΠΊΠΎΠ½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ). ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ WM_NCHITTEST ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² Π½Π° ΡΠΎΡΠΌΡ ΠΏΠ°Π½Π΅Π»Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² Ρ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ WM_NCHITTEST ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΌΡΡΠΈ ΠΎΠΊΠΎΠ»ΠΎ Π³ΡΠ°Π½ΠΈΡ ΠΏΠ°Π½Π΅Π»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΡΠ°ΡΡΡΠΌ ΡΠ°ΠΌΠΊΠΈ Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠ°Π½Π΅Π»Ρ, ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ: ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ°ΠΊ Π½Π° ΠΎΠ±ΡΡΠ½ΡΡ ΡΠ°ΠΌΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΠΈ ΠΏΠΎΡΡΠ½ΡΡΡ. (ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΡΡΠ°ΡΡΠ΅ "ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ run-time Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² design-time" http://www.delphikingdom.com/asp/viewitem.asp?catalogid=22.) Π€Π°Π½ΡΠ°Π·ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ WM_NCHITTEST.