![]() |
GetOpenFileNamePreview - unerwartetes Verhalten
Moin Zusammen,
da ich in D5 nicht die "schicken, neuen" Open- und Savedialoge habe, wie sie in D6 schon implementiert sind, wollte ich mir dafür mal Komponenten erstellen. Da sich die API Aufrufe für die xxxPreview Versionen von denen ohne Preview nicht sonderlich unterscheiden sollen die der Vollständigkeit halber auch mit aufgenommen werden. Soweit ist das auch alles kein Problem und funktioniert auch. Beim Aufruf der Preview Versionen ergibt sich nur ein kleines Problem: Es gibt keinen Preview, ausser es wird der Dialog im Old-Style aufgerufen, dann klappts. Sobald als Flag OFN_EXPLORER verwendet wird entfällt das Preview Control. Ich habe auch schon überprüft, dass die richtige Funktion aus der richtigen DLL aufgerufen wird. Auch wenn ich für den Aufruf der Funktion nur lStructSize, lpstrFilter (=PChar('AVI'#00'*.avi'#00#00)), lpstrFile (=StrAlloc(MAX_PATH)), nMaxFile (=MAX_PATH) und Flags (=OFN_EXPLORER, bzw. OFN_EXPLORER or OFN_ENABLESIZING) setze, und den Rest vorher mit FillChar auf 0 gesetzt habe passiert das gleiche. An der Kompo scheints also nicht zu liegen. (bei Flags = 0 wird auch hier der Old-Style Dialog korrekt aufgerufen). Hat jemand eine Idee? |
Die Openfilename-Striuktur hat unter WinNT eine andere Größe, siehe PSDK. Eventuell liegt es daran.
|
Moin Luckie,
danke für den Tip, das hatte ich allerdings schon eingearbeitet bzw. berücksichtigt. Ich hab's aber eben noch mal ausgetestet. Wird die Grösse falsch angegeben (unter W2K) lässt er, naheliegender Weise, die PlacesBar weg. FlagsEx liegt ja im erweiterten Bereich. |
Hm, hätte mir eigentlich klar sein sollen, dass du daran schon gedacht hast. :?
Mit ist nur nichts besseres eingefallen. :| |
Moin Luckie,
ich hätt's ja auch einfach übersehen haben können. Was mich nur so überrascht: Mit dem Old-Style Dialog klappts (aber wer will den schon :mrgreen:), nur mit dem heute üblichen nicht. Auch googeln hat nichts gebracht, und MSDN auch nicht. Es werden immer nur Beispiele gegeben, wie die Funktion eingebunden und aufgerufen wird, soweit war ich aber schon :? Nirgends ein Hinweis auf eine Besonderheit für den "neuen Stil". :( |
Ähem ... wo gibt´s diese Komponente, und wann ... Will mal neugierig schnüffeln und auch "neue" Dialoge verwenden. :wink: Die API-Deklaration würde mir auch schon reichen ... :)
|
Moin Mathias,
nur um's noch mal deutlich zu machen: Es geht um die Standard Open/Save Dialoge, die man ab D6 in der Komponentenpalette hat. Die mit der PlacesBar links (Eigene Dateien...) Das sind die APIs GetOpenFileName und GetSaveFileName. Als Kompo wird's demnächst zum Test bereitstehen (wenn ich endlich weiss, was es mit diesem #&@%$@!! Preview Control auf sich hat) |
Zitat:
Zitat:
|
Moin Mathias,
das sind nur die zwei (vier) Funktionsdeklarationen (mit je einem Parameter), eine Struktur und einige Konstanten. Vielleicht auch schon vollständig in D5 (Unit Commdlg) deklariert. (bis auf die Preview Funktionen) Ich importiere mir die halt lieber selber ;-) |
Falls du die Ergänzung in "OPENFILENAME" meinst:
Code:
Nein, die sind in Delphi 5 noch nicht vorhanden. Spontan würde ich sagen:
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved; DWORD dwReserved; DWORD FlagsEx; #endif // (_WIN32_WINNT >= 0x0500)
Code:
Richtig? :?
pvReserved: POINTER;
dwReserved: dword; FlagsEx: dword; Die "GetOpenFileNamePreview" habe ich zuerst in der COMDLG32.DLL gesucht, bin dann aber in der MSVFW32.DLL fündig geworden? Oder habe ich mich da vertan? Ansonsten gucke ich mal, welche Konstanten neu sind, dann probiere ich mal, ob ich die Places-Bar zum Leuchten bringen kann. Oder, falls du´s schneller da hast bzw. in meiner Spontanidee was korrigieren müsstest, wäre ich für einen Fix immer sehr dankbar. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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