| |
|
|
Georg Hovenbitzer | allô zusammen,
je comprends la fois wieder Windows pas qui Code unten funktioniert, seulement si je per .Flag OFN_ENABLEHOOK einschalte wird cela la fenêtre pas plus im Explorer Style angezeigt. alors es manquer à gauche qui grand Buttons. Wobei es le son win32.hlp so aller soll. Testen peux on ca, si on im Code sous .Flag& cela $20 löscht. qui HookProc wird aufgerufen si on une Dossier auswählt qui vorhanden ist et OK drückt.
encore une Zusatzfrage: j'ai den Code la fois so geändert, dass un Dialog dans qui HookProc ouvert wird. qui Schriftart dans qui Messagebox et dans dem Dialog sommes unterschiedlich, comment bekomme Je l' Dialog dans qui gleichen Schrift comment qui Messagebox. avec SetDialogfont 0 habe je es déjà probiert, bringt mais rien. KompilierenMarqueSéparationDef 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/dispose/'>Dispose Rect#
Fin
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
| je hatte cela Ganze ici [...] quelque chose anders gelöst, mais je crois mich trop erinnern cela dass Problem cela Selbe était. |
|
|
| |
|
|
|
| je peux mir présenter cela WinXP mittels eines eigenen Hooks cet bar erzeugt, quoi ensuite pas geschieht si on une owner-Hook défini. |
|
|
| |
|
|
|
Georg Hovenbitzer | allô iF,
dein Demo kenne je très bien je klaue doch volontiers
mais chez dir wird qui Explorer Sytle aussi pas angezeigt
la fois qui Auszug aus qui Win32.hlp:
[quote-part:d1a14d6a62] By default, Windows 95 and Windows NT version 4.0 display a new version of le Save dialog box that provides user-interface features that sont similar to le Windows Explorer. You can provide à OFNHookProc hook procedure for à Explorer-style Save dialog box. To enable le hook procedure, set le OFN_EXPLORER and OFN_ENABLEHOOK flags dans le Flags member of le OPENFILENAME structure and specify le address of le hook procedure dans le lpfnHook member. [/quote-part:d1a14d6a62] |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
| Ist imho doch aussi richtig comment cela Win là reagiert. là steht oui schliesslich pas cela OFN_EXPLORER pour qui bar zuständig ist. Pour mich ist es schlüssig cela Windows là den default LoadSaveDialog anzeigt là arrêt une eigene HookProc pour cet Extras sorgen soll.
j'ai keinen conseil comment on beides miteinander vereinen peux. |
|
|
| |
|
|
|
Georg Hovenbitzer | allô iF,
quoi ist car ensuite qui Explorer Style ?! là beide Varianten sich seulement par qui bar à qui linken page unterscheiden. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | allô gens!
depuis Win2000 wurde qui OpenFileName-Struktur um 3 optionale paramètre ergänzt (siehe MSDN). Wird qui Grösse qui Struktur entsprechend erweitert (qui trois LongInts am Ende doit zéro son) sollte es marcher. ici une Demo, um une Dialog per Hook dans qui Miniatur-Ansicht trop ouvrir (zwecks Bild-sélection): KompilierenMarqueSéparation!
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 |
|
|
| |
|
|
|
| Es funktioniert. |
|
|
| |
|
|
|
Georg Hovenbitzer | qui Pascal la fois wieder
Es funktioniert super
cela Ding à gauche nennt sich places bar et peux dans qui erweiterten variante avec 1 dans FlagsEx (dernier paramètre) aus- et 0 eingeschaltet volonté. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 02.06.2006 ▲ |
|
|
|
|
Georg Hovenbitzer | allô zusammen,
mir fällt là im Code vom Pascal nochwas sur quoi je pas kannte.
Ist es erlaubt qui Variablen pour qui Hook Proc dans qui Hauptproc trop déclarer, so comment dans dem Beispiel vom Pascal ? sous Profan klappt ca très bien, seulement es läßt sich per Profan2CPP pas traduire. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 07.06.2006 ▲ |
|
|
|
|
Sebastian König | [quote-part:beab6f0e39]Ist es erlaubt qui Variablen pour qui Hook Proc dans qui Hauptproc trop déclarer, so comment dans dem Beispiel vom Pascal ? sous Profan klappt ca très bien, seulement es läßt sich per Profan2CPP pas traduire.[/quote-part:beab6f0e39] oui, dans (X)Profan klappt cela (malheureusement ). avec Profan2Cpp sollte es marcher, si Du dans den Übersetzungsoptionen Alle Variablen global déclarer aktivierst.
MfG
Sebastian |
|
|
| |
|
|