xbpfileDialog Fenstergröße
Moderator: Moderatoren
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
xbpfileDialog Fenstergröße
Die Bildschirme/Auflösungen werden immer größer, xbpFileDialog hat
aber eine Standardgröße, die dann sehr klein ist.
Es ist mühsam, jedes Mal das Fenster zu vergrößern.
Leider habe ich nichts gefunden, wie ich die Größe vorgeben kann.
Hat jemand einen Tipp für mich ?
aber eine Standardgröße, die dann sehr klein ist.
Es ist mühsam, jedes Mal das Fenster zu vergrößern.
Leider habe ich nichts gefunden, wie ich die Größe vorgeben kann.
Hat jemand einen Tipp für mich ?
Gruß
Klaus
Klaus
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: xbpfileDialog Fenstergröße
xbpFileDialog() ist ein Windows Control aus COMDLG32.DLL welche die API Function GetOpenFileNameA() mit oXbp:open() aufruft.Koverhage hat geschrieben:xbpFileDialog hat aber eine Standardgröße, die dann sehr klein ist.
Es ist mühsam, jedes Mal das Fenster zu vergrößern.
wenn du das Handle, angenommen nHwnd, von dem Windows Control hast könnte man so vorgehen
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Code: Alles auswählen
// ot4xb Syntax USER32.DLL
@user32:ShowWindow( nHwnd , SW_MAXIMIZE ) // maximize the window
Code: Alles auswählen
@user32:SendMessageA( nHwnd,WM_SIZE,x,y)
man müsste mit FindWindowA() zunächst das Fenster finden, was nicht in der Taskliste ist.
dieser Code "müsste" funktionieren ...
Code: Alles auswählen
lRet := DllCall("User32.dll", DLL_STDCALL, "FindWindowA", "#32770"+Chr(0), "Öffnen"+Chr(0))
IF nHwnd > 0
TONE(1234)
gruss by OHR
Jimmy
Jimmy
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: xbpfileDialog Fenstergröße
Habe gelesen, das es eine Resize Slot gibt, d.h. erst Anzeigen und dann die Größe ändern.
Das ist mir zu aufwändig, zumal (mindestens bei WIN 7) die letzte Einstellung beim nächsten Aufruf wieder gilt.
/Also gibt es in WIN vermutlich in der Registry was, damit man die Dialoggröße setzen kann).
Das ist mir zu aufwändig, zumal (mindestens bei WIN 7) die letzte Einstellung beim nächsten Aufruf wieder gilt.
/Also gibt es in WIN vermutlich in der Registry was, damit man die Dialoggröße setzen kann).
Gruß
Klaus
Klaus
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: xbpfileDialog Fenstergröße
hast du einen Link dazu ?Koverhage hat geschrieben:Habe gelesen, das es eine Resize Slot gibt, d.h. erst Anzeigen und dann die Größe ändern.
es gibt nur die OFNHookProc / OFNHookProcOldStyle Callback Function die durch den OFN_ENABLEHOOK Flag aktiviert sein muss.
das der OFN_ENABLESIZING Flag bei XbpFileDialog() gesetzt ist sieht man ja am "Gripper" ( rechts unten )
innerhalb der API Function GetOpenFileName() ist ja ein ListView wie beim Explorer.
ich habe nun gelesen*** das man den Font des ListView ändern könnte was wohl ein "resize" auslösen würde ...
***http://software.intel.com/en-us/forums/topic/273587
aus Xbase++ musst du erst mal das Handle des GetOpenFileName() Dialog haben um an das ListView zu kommen.
wenn es den gäbe würde es ja auch beim 1st Mal klappenKoverhage hat geschrieben:Das ist mir zu aufwändig, zumal (mindestens bei WIN 7) die letzte Einstellung beim nächsten Aufruf wieder gilt.
/Also gibt es in WIN vermutlich in der Registry was, damit man die Dialoggröße setzen kann).
es gibt den OFN_RESTORESIZE Flag in der OPENFILENAME structure http://msdn.microsoft.com/en-us/library ... 85%29.aspx
der sorgt nun dafür das beim WM_SHOWWINDOW Event die bei WM_DESTROY "gesicherte" Grösse wiederhergestellt wird.
auch den View ( Ansicht ) oder Sortierung des ListView kann man wiederherstellen.
ähnliches gilt doch auch für das angezeigte Verzeichnis wenn du nichts angegeben hast.
gruss by OHR
Jimmy
Jimmy
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: xbpfileDialog Fenstergröße
Da es mir zu aufwendig erschien habe ich mir den nicht gespeichert, ich glaube der Suchbegriff war custom filedialoghast du einen Link dazu ?
Gruß
Klaus
Klaus
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: xbpfileDialog Fenstergröße
schade.Koverhage hat geschrieben:Da es mir zu aufwendig erschien habe ich mir den nicht gespeichert, ich glaube der Suchbegriff war custom filedialoghast du einen Link dazu ?
hier noch mal ein Demo von Pablo wie er mit der OpenFileName Structure umgeht.
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: xbpfileDialog Fenstergröße
ja ja ... deutsche Umlaute und Windows OS() ...AUGE_OHR hat geschrieben:dieser Code "müsste" funktionieren ...und das ganze müsste im Thread laufen ...Code: Alles auswählen
lRet := DllCall("User32.dll", DLL_STDCALL, "FindWindowA", "#32770"+Chr(0), "Öffnen"+Chr(0))
Code: Alles auswählen
nHwnd := DllCall("User32.dll", DLL_STDCALL, "FindWindowA", "#32770"+Chr(0),;
ConvToAnsiCP("Öffnen")+Chr(0))
wie schon gesagt muss man den Code in einem Thread laufen lassen was so aussehen könnte
Code: Alles auswählen
#include "Xbp.ch"
#include "Appevent.ch"
#include "common.ch"
#include "DLL.ch"
#define SW_MAXIMIZE 3
#pragma library("XppUi2")
PROCEDURE Main
LOCAL nEvent, mp1, mp2, oXbp
LOCAL oMLE, oFileDlg
#IFDEF UseFunc
LOCAL oThread := Thread():new()
#ENDIF
SetAppWindow():SetPos({0,0})
SetColor("N/W")
CLS
#IFDEF UseFunc
oFileDlg := XbpFileDialog():new()
#ELSE
oFileDlg := MyFileDlg():new()
#ENDIF
oFileDlg:create(SetAppWindow())
// MLE erzeugen
oMLE := XbpMLE():new():create( ,, {50,50}, {550,300} )
oMLE:cargo := ""
#IFDEF UseFunc
oThread:setInterval(100)
oThread:start( "ShowBig", oThread )
#ENDIF
oFileDlg:Open()
// Event loop = Programmsteuerung
nEvent := 0
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
DO CASE
CASE nEvent = xbeP_Keyboard .and. mp1 = xbeK_ALT_F4
EXIT
OTHERWISE
oXbp:HandleEvent( nEvent, mp1, mp2 )
ENDCASE
ENDDO
#IFDEF UseFunc
IF NIL <> oThread
oThread:setInterval(NIL)
oThread := NIL
ENDIF
#ENDIF
RETURN
PROCEDURE ShowBig(oThread)
LOCAL nHwnd := 0
nHwnd := DllCall("User32.dll", DLL_STDCALL, "FindWindowA", "#32770"+Chr(0),;
ConvToAnsiCP("Öffnen")+Chr(0))
IF nHwnd > 0
* http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
DllCall("User32.DLL", DLL_STDCALL,"ShowWindow",nHwnd, SW_MAXIMIZE )
TONE(1234)
oThread:setInterval(NIL)
oThread := NIL
ENDIF
RETURN
denn ...
Ansicht änderbar z.b. auf LVS_REPORT festlegen
die Schrift / Icons sind immer noch zu klein
Sortierung ...
da muss man also noch an das Listview ran aber das ist eine andere Geschichte.
Nachtrag : #include / #define / #pragma
Zuletzt geändert von AUGE_OHR am Mi, 16. Okt 2013 6:46, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: xbpfileDialog Fenstergröße
hi,
unter Win 8 ( Vista / Win 7 ? ) scheint PDR 4728 wieder mal aufzutreten
http://www.alaska-software.com/scripts/ ... PDRID=4728
wenn man das Demo c:\ALASKA\XPPW32\SOURCE\samples\activex\acrobat\main.prg laufen lässt fehlt links "my Places" weil o:center := .T. gesetzt wurde.
wenn man die Zeile 232auskommentiert wird auch links unter Win 8 "my Places" wieder angezeigt.
unter Win 8 ( Vista / Win 7 ? ) scheint PDR 4728 wieder mal aufzutreten
http://www.alaska-software.com/scripts/ ... PDRID=4728
wenn man das Demo c:\ALASKA\XPPW32\SOURCE\samples\activex\acrobat\main.prg laufen lässt fehlt links "my Places" weil o:center := .T. gesetzt wurde.
wenn man die Zeile 232
Code: Alles auswählen
231 oDlg := XbpFileDialog():new( AppDesktop() )
232* oDlg:center := .T.
gruss by OHR
Jimmy
Jimmy