![]() |
Message problem
warum komme ich nicht in diese Message ?
LBUTTONDOWN !
Delphi-Quellcode:
hinter WM_LBUTTONDOWN komme ich bei WM_MOUSEMOVE hinein
function VisualProc(WndHandle : HWND;
Msg : DWORD; wParam, lParam : Longint): longInt; stdcall; var ps : PAINTSTRUCT; begin if Msg = WM_ERASEBKGND then begin Result := 1; exit; end else if Msg = WM_MOUSEMOVE then begin if (Msg = WM_LBUTTONDOWN) then if (GetFocus <> WndHandle) then SetFocus(WndHandle); BassBoxInfo^.Msg := BBP_MOUSE; BassBoxInfo^.WinMsg := Msg ; BassBoxInfo^.wParam := wParam; BassBoxInfo^.lParam := lParam; BbpPluginFunc(BassBoxInfo^); end else if Msg = WM_PAINT then begin BeginPaint(WndHandle, ps); EndPaint(WndHandle, ps); Result := 0; Exit; end; result := DefWindowProc(WndHandle, Msg, wParam, lParam); end; Fokus ist auch vorhanden. gruss Emil |
Re: Message problem
Kann eine Message denn gleichzeitig WM_MOUSEMOVE und WM_LBUTTONDOWN sein?
|
Re: Message problem
Delphi-Quellcode:
if Msg = WM_MOUSEMOVE then
begin if (Msg = WM_LBUTTONDOWN) then Msg kann doch nicht beides sein!?! |
Re: Message problem
Msg kann nicht gleichzeitig WM_MOUSEMOVE únd WM_LBUTTONDOWN sein, was bei Deiner momentanen Abfrage aber der Fall sein müsste.
|
Re: Message problem
warum gestaltest du das ganze nicht einfach mit einem case block anstatt if..then..else if?
|
Re: Message problem
Zitat:
danke ;) habs geändert
Delphi-Quellcode:
gruss Emil
function VisualProc(WndHandle : HWND;
Msg : DWORD; wParam, lParam : Longint): longInt; stdcall; var ps : PAINTSTRUCT; begin if Msg = WM_ERASEBKGND then begin Result := 1; exit; end else if Msg = WM_MOUSEMOVE then begin BassBoxInfo^.Msg := BBP_MOUSE; BassBoxInfo^.WinMsg := Msg ; BassBoxInfo^.wParam := wParam; BassBoxInfo^.lParam := lParam; BbpPluginFunc(BassBoxInfo^); end else if (Msg = WM_LBUTTONDOWN) then begin if (GetFocus <> WndHandle) then SetFocus(WndHandle); BassBoxInfo^.WinMsg := Msg ; BassBoxInfo^.wParam := wParam; BassBoxInfo^.lParam := lParam; BbpPluginFunc(BassBoxInfo^); end; if Msg = WM_PAINT then begin BeginPaint(WndHandle, ps); EndPaint(WndHandle, ps); Result := 0; Exit; end; result := DefWindowProc(WndHandle, Msg, wParam, lParam); end; |
Re: Message problem
Zitat:
beides das gleiche. gruss Emil |
Re: Message problem
Nicht ganz, da case nur einmal prüfen muss und somit performanter ist.
|
Re: Message problem
und imho sollte man nur verschachteln wenn noetig
|
Re: Message problem
Zitat:
gruss Emil |
Re: Message problem
Niemand will Dir vorschreiben, was Du tun sollst, das waren doch nur gutgemeinte Hinweise.
|
Re: Message problem
Zitat:
Es ist doch berechtig zu fragen welchen unterschied das macht bsp.. in micro sekunden. Wenn man etwas ändert und es keine große auswirkungen hat wo liegt dann der sinn, wenn man es dann ändert ? gruss Emil |
Re: Message problem
Ich würde es Übersichtlicher nennen, die Schreibfaulheit kommt dann auch mehr nicht zu kurtz mit "case". ;)
|
Re: Message problem
Zitat:
man sieht schneller wo der anfang und das ende ist. gruss Emil PS: Danke an alle für die Information |
Re: Message problem
Mein anderes problem ist nun folgendes
Delphi-Quellcode:
Dadurch das ich nun das Handle des Panels aus der Exe an die Winproc übergeben habe
function VisualProc(WndHandle : HWND;
Msg : DWORD; wParam, lParam : Longint): longInt; begin Case Msg of WM_MOUSEMOVE: begin BassBoxInfo^.Msg := BBP_MOUSE; BassBoxInfo^.WinMsg := Msg ; BassBoxInfo^.wParam := wParam; BassBoxInfo^.lParam := lParam; BbpPluginFunc(BassBoxInfo^); end; WM_LBUTTONDOWN: begin if (GetFocus <> WndHandle) then SetFocus(WndHandle); BassBoxInfo^.Msg := BBP_MOUSE; BassBoxInfo^.WinMsg := Msg ; BassBoxInfo^.wParam := wParam; BassBoxInfo^.lParam := lParam; BbpPluginFunc(BassBoxInfo^); end; WM_LBUTTONUP: begin BassBoxInfo^.Msg := BBP_MOUSE; BassBoxInfo^.WinMsg := Msg ; BassBoxInfo^.wParam := wParam; BassBoxInfo^.lParam := lParam; BbpPluginFunc(BassBoxInfo^); end; WM_LBUTTONDBLCLK: begin // end; end; result := DefWindowProc(WndHandle, Msg, wParam, lParam); end; geht in der EXE das doppelklick event des Panels nicht mehr da dieses nun in die Winproc umgeleitet wird Wie kann ich nun hier "WM_LBUTTONDBLCLK:" eine Function einbauen so dass mein Panel in der Exe trotzdem noch erkennt das ein doppelklick ausgeführt wurde? Ich benötige das um in den FullScreen starten zu können. das geht nun leider nicht mehr. gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz