Erstmal danke für deinen Tipp
Nur weiß ich wie ich die TrackBar erzeuge! Ich weiß nur nicht wie ich Sie erzeuge, so wie es Windows macht auf einem neuen Panel, Fenster ... was auch immer??!! Und ich weiß auch nciht wie ich Sie so erzeuge, das Sie genau da plaziert mit dem Thumb plaziert wird, wo sich auch die Maus befinded!
Außerdem hab ich dann noch ein Problem mit dem schließen des Fensters! Das Fenster (auf dem sich die TB befinded) soll ja genau dann geschlossen werden, wenn es selber den Focus verliert. Ich habe es probiert, das Fenster zu SubClassen und über
WM_ACTIVE und
WA_INACTIVE(wParam) die Message abzufangen! Nur das klappt leider auch nicht so wie gewollt! Ich verstehe nicht wieso noch nicht mal das funktioniert! Ich währe ja schon weiter wenn ich das Fenster wenigstens so geschlossen bekommen würde wie ich es brauch!
Edit:
Wieso kommt keine Antwort in dem COde??
Delphi-Quellcode:
//var global:
var
tbpanel, TBwnd: hwnd;
OldTBPanelProc: Pointer;
function TBPanelWndProc(hWnd: hWnd; uMsg: UINT; wParam: wparam; lParam: lparam): lresult; stdcall;
begin
Result := 0;
case uMsg of
// WM_CREATE: ShowMessage('HALLO');
WM_ACTIVATE:
if wparam = WA_INACTIVE then
showmessage('scd'); //<-- Hier kommt nie was an, aber wieso??
//PostMessage(hWnd, WM_CLOSE, 0, 0);
else
Result := CallWindowProc(OldTBPanelProc, hWnd, uMsg, wParam, lParam);
end;
end;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//das panel erzeugen, auf dem sich die TrackBar befinden soll:
tbpanel := CreateWindowEx(WS_EX_TOPMOST,'STATIC',nil, WS_VISIBLE or WS_CHILD or SS_ETCHEDFRAME,coordx,coordy,40,200,form1.Handle, 1,hInstance,nil);
//Die neue Fensterprozedur zuweisen:
OldTBPanelProc := Pointer(SetWindowLong(tbpanel, GWL_WNDPROC, INTEGER(@TBPanelWndProc)));
end;
Kann mir jemand sagen was ich da falsch mache?? Wie so nichts passiert in den Fensterroutine??