![]() |
dragdrop
Einfache frage wie komme ich an das Fensterhandle
auf dem die Datei fallen gelassen wurde? GetWindowFromPoint ChildWindowFromPoint funktionieren leider nicht. gruss |
AW: dragdrop
Kommt drauf an, womit du es Dragst, bzw. Dropst. :roll:
|
AW: dragdrop
Zitat:
Ich möchte das Handle des Fensters erfahren auf das die Datei abgelegt wurde. Dabei spielt es doch keine rolle was für eine das ist. gruss |
AW: dragdrop
himi's Frage dürfte darauf basieren wann/wo in Deinem Code
WindowFromPoint ausgeführt wird, da folgendes funktioniert.
Delphi-Quellcode:
procedure TForm5.Timer1Timer(Sender: TObject);
var hwnd:THandle; begin hwnd := WindowFromPoint(mouse.CursorPos); Caption := IntToHex(HWND,8); end; |
AW: dragdrop
Und dann noch, ob es absolute Positionen sind, oder Relative und wenn relativ, zu was sind sie relativ.
|
AW: dragdrop
Zitat:
Delphi-Quellcode:
Ich ziehe irgendeine Datei über meinen Button extrahiere daraus das Icon
WM_DROPFILES:
begin nFilesDropped := DragQueryFile(wP, LongWord(-1), '', 0); sFileName := ''; if nFilesDropped = 1 then begin SetLength(sFileName, DragQueryFile(wP, 0, nil, 0)); DragQueryFile(wP, 0, @sFileName[1], Length(sFileName) + 1); sFileName := LowerCase(sFileName); goProgBar.Dirty := True; oButton.BmpFile := sFileName; IconHandle := GetHIconFromFile(sFileName); img := SKAERO_GetButImageBackProperty(ButtonHandle); // GetWindowFromPoint wird in WM_MOUSEMOVE eingelesen , ButtonHandle end; DragFinish(wP); SetForegroundWindow(WinHandle); end; anschließend will ich dieses mit dem Image des Button Kombinieren. Das geht aber nicht da ich so nicht an das Handle des Button komme. EDIT: Bin ja heute wieder so was von bescheuert... :wall: Ohne das einholen der CursorPos kann es ja auch nicht gehen. gruss |
AW: dragdrop
-Hat der Button ein Handle (nur um sicher zu gehen)
-müsste dann nicht in seinem Messagehandler o.g. Code abgefackelt werden (quasi Self) ? |
AW: dragdrop
Zitat:
Schau mal mein Edit an ;) gruss |
AW: dragdrop
In deinem Codebeispiel vermischen sich Dinge, die nicht zusammengehören. :warn:
Folgende Prozedure liefert alle gedroppten Dateien in einer Stringliste und zusätzlich (aber optional) den Punkt relativ zum Desktop Ursprung.
Delphi-Quellcode:
procedure GetDroppedFiles(HDrop:THandle; filelist:TStrings; Point:PPoint);
var i, filecount, size : Integer; s : string; begin Assert(Assigned(filelist)); filecount := DragQueryFile(HDrop, $FFFFFFFF, nil, 0); for i:= 0 to filecount-1 do begin size := DragQueryFile(HDrop, i, nil, 0); SetLength(s, size); DragQueryFile(HDrop, i, PChar(s), size+1); filelist.Add(s); end; if Assigned(Point) then if not DragQueryPoint(HDrop, Point^) then begin // Punkt war ausserhalb des Fensters Point^.x := -1; Point^.y := -1; end; DragFinish(HDrop); end; |
AW: dragdrop
Zitat:
Ich möchte nur einen eintrag zulassen daher habe ich mir die abfrage nach filecount gesparrt. Es macht auch keinen sinn auf einen Button mehr als ein Bitmap ziehen zu wollen. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 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 by Thomas Breitkreuz