Entwickler-Ecke
Windows API - OpenDialog subclassen + Handle von Dateiliste
Rool - Mo 19.05.03 17:38
Titel: OpenDialog subclassen + Handle von Dateiliste
Hab jetzt den TOpenDialog 'gesubclasst' und brauch jetzt in der WndProc von Dem Dialog das Handle von der Liste, wo man die Dateien auswählt. Wie bekomme ich das?
Oder gibt es in der WndProc eine Message, wenn der Benutzer mit der rehten Maustaste auf die Liste kickt?
Pascal - Di 20.05.03 22:04
Ich weiß nicht ob ich das richtig verstanden hab', aber das Handle kann man mit der 2.procedure über den Classname und den mit der ersteren procedure herausfinden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure Tform1.ShowHwndAndClassName(CrPos: TPoint); var hWnd: THandle; aName: array [0..255] of Char; begin hWnd := WindowFromPoint(CrPos); Label1.Caption := 'Handle : ' + IntToStr(hWnd);
if Boolean(GetClassName(hWnd, aName, 256)) then Label2.Caption := 'ClassName : ' + string(aName) else Label2.Caption := 'ClassName : not found'; end;
procedure TForm1.Button1Click(Sender: TObject); var Handle: THandle; begin Handle := FindWindow(PChar('syslistview32'),nil); end; |
In diesem Fall ist als classname 'syslistview32', was bei mir der Klassenname der Auswahlliste ist
Rool - Mi 21.05.03 13:49
Titel: ..
da kann man aber jeden listview finden, der gerade exisitiert...
Hab rausgefunden, dass man mit:
Quelltext
1: 2:
| wndDlg := GetParent(Handle); // handle vom dialog. wndCtrl := GetDlgItem(wndDlg,lst1); //handle von der Liste |
=> Dabei ist lst1 eine in der Unit 'Dlgs' definierte Konstante.
Hab jetzt aber das Problem, dass ich nicht weiss, wann ich dieses Handle abfragen soll. Wenn ich das in
WM_INITDIALOG
mache, kann ich z. B. den Listview verschieben etc. Später aber, wenn ich z. B. darauf zeichnen will, hat das Listview ein anderes Handle. Das ist etwas, was ich überhaupt nicht verstehe!
Pascal - Mi 21.05.03 15:10
Da kenne ich mich leider nicht aus.
Es sei denn der Dialog ist zufällig im Vordergrund und man kennt seine Position. dann könnte man ja einfach mit Windowfrompoint(point(x,y)) arbeiten. Aber das ist wahrscheinlich nicht das was du brauchst
Rool - Do 22.05.03 17:02
Titel: ..
würde natürlich auch gehen, aber das geht ja genauso wenig beim laden des dialogs
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!