| |
|
|
Georg Hovenbitzer | ¡Hola zusammen,
Yo verstehe veces otra vez Windows no Der Code unten funktioniert, sólo si yo por .Flag OFN_ENABLEHOOK einschalte se el Ventana no mehr en el Explorer Style adecuado. Also lo fehlen links el großen Buttons. Wobei lo laut win32.hlp así ir se. Testen puede ser dies, si uno en el Code bajo .Flag& el $20 löscht. El HookProc se aufgerufen si uno una Expediente auswählt el disponible es y OK drückt.
Noch una Zusatzfrage: Yo habe el código veces así geändert, que un Diálogo en el HookProc geöffnet se. El Schriftart en el Messagebox y en el Diálogo son unterschiedlich, como bekomme Yo, el Diálogo en el gleichen Schrift como Messagebox. Mit SetDialogfont 0 Yo lo ya probiert, bringt aber nichts. KompilierenMarcaSeparaciónDef GetSaveFileName(1) !"COMDLG32.DLL","GetSaveFileNameA"
Def Make256String(1) ((@$(1) + @Chr$(0)) + @Space$(256 - @Len(@$(1))))
Struct tagOFN = lStructSize&,
hWndOwner&,
hInstance&,
lpstrFilter&,
lpstrCustomFilter&,
nMaxCustFilter&,
nFilterIndex&,
lpstrFile&,
nMaxFile&,
lpstrFileTitle&,
nMaxFileTitle&,
lpstrInitialDir&,
lpstrTitle&,
Flags&,
nFileOffset%,
nFileExtension%,
lpstrDefExt&,
lCustData&,
lpfnHook&,
lpTemplateName&
Declare ofn#
Dim ofn#,tagOFN
Struct _Rect = Left&,
Top&,
Right&,
Bottom&
Declare Rect#
Dim Rect#,_Rect
Proc SaveDateiHook
Parameters hdlg&,uMsg&,wParam&,lParam&
Declare Parent&
Clear Rect#
If uMsg& = 49265
If @FileExists(@String$(ofn#.lpstrFile&,0)) = 1
Parent& = @External("USER32","GetParent",hdlg&)
@External("USER32","GetWindowRect",Parent&,Rect#)
Declare Fenster&
Declare Weiter&
Declare Neu&
Declare Abbruch&
Fenster& = @Create("Dialog",Parent&,"Datei existiert",10,10,300,150)
Weiter& = @Create("DefButton",Fenster&,"Anhängen",20,60,120,30)
Neu& = @Create("Button",Fenster&,"Überschreiben",150,60,120,30)
@MessageBox("Left = "+@Str$(Rect#.Left&)+"
"+"Top = "+@Str$(Rect#.Top&)+"
"+"Right = "+@Str$(Rect#.Right&)+"
"+"Bottom = "+@Str$(Rect#.Bottom&)+"
"+"File = "+@String$(ofn#.lpstrFile&,0),"Info",1)
Return 1
EndIf
EndIf
Return 0
EndProc
Proc SaveDatei
Parameters hWnd&,Titel$,FileSpec$,InitialDir$,Filter$,DefExt$
Declare CustomFilter$
Declare FileTitle$
Declare rCode&
Declare Auswahl$
Clear ofn#
Titel$ = Make256String(Titel$)
FileSpec$ = Make256String(FileSpec$)
InitialDir$ = Make256String(InitialDir$)
Filter$ = @Translate$(Filter$,"|",@Chr$(0)) + @Chr$(0)
Filter$ = Make256String(Filter$)
DefExt$ = Make256String(DefExt$)
With ofn#
.lStructSize& = @SizeOf(ofn#)
.hWndOwner& = hWnd&
.hInstance& = %hInstance
.lpstrFilter& = @Addr(Filter$)
.lpstrCustomFilter& = @Addr(CustomFilter$)
.nMaxCustFilter& = 0
.nFilterIndex& = 1
.lpstrFile& = @Addr(FileSpec$)
.nMaxFile& = 256
.lpstrFileTitle& = @Addr(FileTitle$)
.nMaxFileTitle& = 256
.lpstrInitialDir& = @Addr(InitialDir$)
.lpstrTitle& = @Addr(Titel$)
.Flags& = ($4 | $20 | $80000 | $800)
OFN_HIDEREADONLY $4
OFN_ENABLEHOOK $20
OFN_PATHMUSTEXIST $800
OFN_EXPLORER $80000
.lpstrDefExt& = @Addr(DefExt$)
.lpfnHook& = @ProcAddr(SaveDateiHook,4)
EndWith
rCode& = GetSaveFileName(ofn#)
If rCode& <> 0
Auswahl$ = @String$(ofn#.lpstrFile&,0)
Else
Auswahl$ = ""
EndIf
Dispose ofn#
Return Auswahl$
EndProc
Window 100,100-800,600
Print SaveDatei(%hWnd,"Datei speichern unter:","DLQueue",$ProgDir,"Download File (*.dat)|*.dat|Textfile (*.txt)|*.txt","*.dat")
WaitInput
Dispose ofn#
../function-references/XProfan/disponer/'>Disponer Rect#
End
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
| Tuve el Ganze hier [...] algo anders gelöst, pero yo glaube mich a erinnern el dass Problema el Selbe war. |
|
|
| |
|
|
|
| Puedo me vorstellen el WinXP mittels uno eigenen Hooks esta Bar producido, qué entonces no geschieht si uno una owner-Hook definiert. |
|
|
| |
|
|
|
Georg Hovenbitzer | Hola si,
dein Demo saber Yo muy bien Yo klaue doch gerne
Aber en dir se el Explorer Sytle auch no adecuado
Tiempo el Auszug de el Win32.hlp:
[quote:d1a14d6a62] By default, Windows 95 and Windows NT version 4.0 display a new version of the Save dialog box that provides user-interface features that are similar to the Windows Explorer. You can provide a OFNHookProc hook procedure for a Explorer-style Save dialog box. To enable the hook procedure, set the OFN_EXPLORER and OFN_ENABLEHOOK flags en the Flags member of the OPENFILENAME structure and specify the address of the hook procedure en the lpfnHook member. [/quote:d1a14d6a62] |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
| Ist imho doch auch correcto como el Win como reagiert. Dort es sí schliesslich no el OFN_EXPLORER para el Bar zuständig es. Für mich es schlüssig el Windows como el default LoadSaveDialog anzeigt como sólo una propio HookProc para esta Extras sorgen se.
Yo habe no Rat cómo beides miteinander vereinen kann. |
|
|
| |
|
|
|
Georg Hovenbitzer | Hola si,
qué es porque entonces el Explorer Style ?! Como beide Varianten se sólo por el Bar a el linken Página unterscheiden. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | ¡Hola Personas!
Seit Win2000 wurde el OpenFileName-Struktur en 3 optionale Parámetro ergänzt (siehe MSDN). Wird el Grösse el Struktur entsprechend erweitert (el drei LongInts al Ende necesario Null ser) debería lo klappen. Hier una Demo, en una Diálogo por Hook en el Miniatur-Ansicht a abierto (zwecks Bild-Auswahl): KompilierenMarcaSeparación!
window 10,10-700,500
$H Messages.ph
$H Windows.ph
proc OpenFileHook-------------------------------OpenFileHook----------------------------
parameters dlg&,msg&,wparam&,lparam&
case Status%:return 1-----Ansicht muss nur einmal angepasst werden
casenot msg&=~WM_NOTIFY:return 1
if long(lparam&,8)=-603---Bei Init existieren DefView und LV noch nicht!
Status%=1
DefView&=~FindWindowEx(~GetParent(dlg&),0,"SHELLDLL_DefView","")
sendmessage(DefView&,~WM_COMMAND,$702D,0)--Undokumentierte Message
endif
return 1
endproc---------------------------------------------------------------------------------
proc LoadPicDialog------------------------------LoadPicDialog---------------------------
parameters Pfad$,Titel$,Name$
declare ofn#,Result$,Result&
declare DefView&,Status%------Variablen für Hook
Name$=Name$+"z*.bmp;*.jpe;*.jpeg;*.jpg;*.gifzz"--Filter (bei Bedarf anpassen)
dim ofn#,88+256---------------Struktur (Win2000/NT/XP) + Puffer
clear ofn#
long ofn#,0=88----------------Grösse Struktur für GetOpenFileName (76 für Win9x)
long ofn#,4=%hwnd-------------übergeordnetes Fenster
long ofn#,12=addr(Name$)------Filter/Typ
long ofn#,28=ofn#+88----------Beginn Puffer
long ofn#,32=255--------------Puffergrösse
long ofn#,44=addr(Pfad$)------Anfangspfad
long ofn#,48=addr(Titel$)-----Titel
long ofn#,52=$880024----------Flags
long ofn#,68=procaddr("OpenFileHook",4)
Result&=external("COMDLG32","GetOpenFileNameA",ofn#)
Result$=string$(ofn#,88)
casenot Result&:Result$=""
procaddr("OpenFileHook",-4)
dispose ofn#
return Result$
endproc---------------------------------------------------------------------------------
print LoadPicDialog("","Bitte Bild wählen","Bild")
waitkey
HTH Pascal |
|
|
| |
|
|
|
| Lo funktioniert. |
|
|
| |
|
|
|
Georg Hovenbitzer | Der Pascal veces otra vez
Lo funktioniert klasse
Lo links nennt se places bar y kann en el avanzado Variante con 1 en FlagsEx (letzter Parámetro) de- y 0 eingeschaltet voluntad. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
Georg Hovenbitzer | ¡Hola zusammen,
me fällt como en el Code vom Pascal nochwas en Yo no kannte.
¿Es erlaubt el Variables para el Hook Proc en el Hauptproc a deklarieren, como en el Ejemplo vom Pascal ? Bajo Profano klappt dies muy bien, sólo lo läßt se por Profano2CPP no traducir. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 07.06.2006 ▲ |
|
|
|
|
Sebastian König | [quote:beab6f0e39]¿Es erlaubt el Variables para el Hook Proc en el Hauptproc a deklarieren, como en el Ejemplo vom Pascal ? Bajo Profano klappt dies muy bien, sólo lo läßt se por Profano2CPP no traducir.[/quote:beab6f0e39] Sí, en (X)Profano klappt el (desafortunadamente ). Mit Profano2Cpp debería lo trabajo, si en el Übersetzungsoptionen Alle Variables global deklarieren aktivierst.
MfG
Sebastian |
|
|
| |
|
|