Ich habe etwas rumgetestet und es wird immer eigenartiger.
Wenn in folgendem Code das EditorGadget aktiviert ist,
kann man mehrmals eine Datei auf dem Desktop mit
aktiven Tooltips, ohne Absturz wählen.
Hat das Fenster aber kein EditorGadget, gibt´s nen Absturz.
Code: Alles auswählen
Enumeration
#Window_0 = 1
EndEnumeration
;...OpenFileRequester constants
#CDN_INITDONE = #CDN_FIRST - 0
#CDN_SELCHANGE = #CDN_FIRST - 1
#CDN_FOLDERCHANGE = #CDN_FIRST - 2
#OFN_ENABLESIZING = $800000
#OFR_View_Report = $702C
#OFR_View_List = $702B
#OFR_View_Largeicon = $7029
#OFR_View_Thumbnail = $702D
#OFR_View_Thumbnail_2K = $7031
#OFR_View_Tile = $702E
Procedure.s GetOpenName(DialogTitle.s = "", InitialDir.s = "", Filter.s = "", DefaultExtension.s = "", flags.l = 0, hwndOwner.l = 0, ShowState = 0)
; Zeigt den Dialog "Datei öffnen" an und liefert
; den angegebenen Dateipfad zurück (bzw. einen leeren
; String bei Abbruch durch den Benutzer).
Protected OFN.OPENFILENAME
; comdlg32 = OpenLibrary(0, "comdlg32.dll")
; FuncGetOpenFileName = GetFunction(0, "GetOpenFileNameA")
With OFN
; Angabe der Größe der OPENFILENAME-Struktur
\lStructSize = SizeOf(OPENFILENAME)
; Falls OS < Windows 2000, die letzten drei
; Mitglieder der Struktur ausnehmen:
If OSVersion() <PB_OS_Windows_2000> 0
\lpstrDefExt = @DefaultExtension
EndIf
; Startverzeichnis des Dialogs
If Len(InitialDir) > 0
\lpstrInitialDir = @InitialDir
EndIf
; Titel des Dialogs
If Len(DialogTitle) > 0
\lpstrTitle = @DialogTitle
EndIf
; Eigenschaften des Dialogs
If flags = 0
\flags = #OFN_EXTENSIONDIFFERENT | #OFN_NOCHANGEDIR | #OFN_HIDEREADONLY | #OFN_EXPLORER | #OFN_ENABLESIZING
Else
\flags = flags | #OFN_EXPLORER
EndIf
; Bei Bedarf den Dialog-Hook aktivieren:
; If ShowState <> List
; ShowStateValue = ShowState
; \flags = \flags | #OFN_ENABLEHOOK
; \lpfnHook = @OFNHookFunc();@OFNHookProc()
; EndIf
; Filter-Trennzeichen "|" in NullChar wandeln
Filter + "||"
l = Len(Filter)
For n = 0 To l - 1
If PeekB(@Filter + n) = Asc("|")
PokeB(@Filter + n, $0)
EndIf
Next n
\lpstrFilter = @Filter
EndWith
; Aufruf und Auswertung von GetOpenFileName
GetOpenFileName_(@OFN)
;Ergebnis = CallFunctionFast(FuncGetOpenFileName, @OFN)
OpenName.s = PeekS(OFN\lpstrFile)
ProcedureReturn OpenName
EndProcedure
;/===============================================
;/ Procedure - Main Window
;/===============================================
If OpenWindow(#Window_0, 0, 0, 520, 320, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar) And CreateGadgetList(WindowID(#Window_0))
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; kein Absturz bei Dateiauswahl auf ;!!!
; Desktop mit aktiviertem EditorGadget ;!!!
;EditorGadget(1, 10, 10, 500, 140) ;!!!
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ButtonGadget(2,10,265,50,30,"open")
StringGadget(3,10,155,500,100,"")
quit = #False
;/===============================================
;/ Main Event Loop
;/===============================================
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 2
File$ = GetOpenName("titel", "", "xls|*.xls", "", #OFN_ALLOWMULTISELECT, WindowID(#Window_0))
SetGadgetText(3,File$)
EndSelect
Case #PB_Event_CloseWindow
quit = #True
EndSelect
Until quit
EndIf
End
Hat da jemand eine Erklärung dafür?