WMNCCalcSize in prestrezanje mouse eventov ?

Vse o grafiki, canvasu, directdraw, itd.
Odgovori
Čavlji
Prispevkov: 985
Pridružen: 28.08.2002 14:05:24

WMNCCalcSize in prestrezanje mouse eventov ?

Odgovor Napisal/-a Čavlji » 28.09.2005 22:18:38

Delam en svoj simpl TreeView in imam težave pri lovljenju klikanja po headerju tega TreeViewa... Po zgledu VirtualTreeja ustvarim površino za header z odzivom na WM_NCCalcSize:

Koda: Izberi vse

procedure TGluhiJanLV3.WMNCCalcSize(var Message: TWMNCCalcSize);
begin
inherited;
{ napihnem NonClient Area na vrhu: }
if FHeaderVisible then with Message.CalcSize_Params^ do
  Inc(Message.CalcSize_Params^.rgrc[0].Top, FHeaderHeight);
end;
Sedaj pa se ob kliku na to novo dobljeno razširjeno NonClient površino na vrhu, kjer izrisujem header ne zgodi čisto nič... v WndProc lovim message in ob kliku na to površino se ne pošlje noben message, ki bi ga WndProc prestregel !

A se komu sanja kako na tej površini lovit klike?
čavlji

Čavlji
Prispevkov: 985
Pridružen: 28.08.2002 14:05:24

WMNCCalcSize in prestrezanje mouse eventov ?

Odgovor Napisal/-a Čavlji » 28.09.2005 22:44:07

Aha sem že ugotovil...

Treba je izvreči pravilen rezultat v WM_NCHITTEST. To pomeni:

Koda: Izberi vse

procedure TOsnovniJanLV3.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
with Message do if Result=HTNOWHERE then Result := HTBORDER;
end;
Zadnjič spremenil Čavlji, dne 28.09.2005 22:46:54, skupaj popravljeno 1 krat.
čavlji

Odgovori