OVH Cloud OVH Cloud

GetOpenFileName et XP

7 réponses
Avatar
Jeff
Bonjour,

Je veins de récupérer de l'assiatnce à faire sur une application de gestion
des membres d'une association. Cette application utilise GetOpenFileName pour
sélectionner des fichiers à joindre à un mail aux membres.

Tout fonctionnait parfaitement sur l'ancien PC, sous Win 98SE. Avec le
nouveau PC, sous XP, la boîte de dialogue ne s'ouvre plus.

J'ai trouvé que MS avait ajouté trois éléments à la structure OPENFILENAME
(pvReserved As Long dwReserved As Long FlagsEx As Long) depuis Windows 2000.

Je les ai donc ajouté mais cela ne change rien. La Boîte ne s'ouvre pas et
je n'ai aucun message d'erreur. En "debug", l'appel à GetOpenFileName semble
renvoyer la valeur "faux" puisque le "If" chargé de traiter ce que l'on
ramène ne s'exécute pas.

Y a t il autre chose de changer sous XP (SP2 a priori). Quelqu'un m'a dit
avoir lu quelque part que l'appel à cette API plantait après le passage au
SP2.

Je suis preneur de toute suggestion.

Merci d'avance

Jeff

7 réponses

Avatar
François Picalausa
Hello,

Si l'API GetOpenFileName renvoie 0 (et donc un if non exécuté), tu peux
obtenir des informations supplémentaires sur l'erreur en appelant
CommDlgExtendedError:
Private Declare Function CommDlgExtendedError _
Lib "Comdlg32" _
( _
) _
As Long

Les codes d'erreur correspondant à cette fonction sont indiqués sur cette
page:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxfunctions/getopenfilename.asp
et la description de ces valeurs est donnée ici:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxfunctions/commdlgextendederror.asp

Les constantes correspondantes sont les suivantes (traduction automatique à
partir de CdErr.h, non testée):
Private Const CDERR_DIALOGFAILURE = &HFFFF
Private Const CDERR_GENERALCODES = &H0
Private Const CDERR_STRUCTSIZE = &H1
Private Const CDERR_INITIALIZATION = &H2
Private Const CDERR_NOTEMPLATE = &H3
Private Const CDERR_NOHINSTANCE = &H4
Private Const CDERR_LOADSTRFAILURE = &H5
Private Const CDERR_FINDRESFAILURE = &H6
Private Const CDERR_LOADRESFAILURE = &H7
Private Const CDERR_LOCKRESFAILURE = &H8
Private Const CDERR_MEMALLOCFAILURE = &H9
Private Const CDERR_MEMLOCKFAILURE = &HA
Private Const CDERR_NOHOOK = &HB
Private Const CDERR_REGISTERMSGFAIL = &HC
Private Const PDERR_PRINTERCODES = &H1000
Private Const PDERR_SETUPFAILURE = &H1001
Private Const PDERR_PARSEFAILURE = &H1002
Private Const PDERR_RETDEFFAILURE = &H1003
Private Const PDERR_LOADDRVFAILURE = &H1004
Private Const PDERR_GETDEVMODEFAIL = &H1005
Private Const PDERR_INITFAILURE = &H1006
Private Const PDERR_NODEVICES = &H1007
Private Const PDERR_NODEFAULTPRN = &H1008
Private Const PDERR_DNDMMISMATCH = &H1009
Private Const PDERR_CREATEICFAILURE = &H100A
Private Const PDERR_PRINTERNOTFOUND = &H100B
Private Const PDERR_DEFAULTDIFFERENT = &H100C
Private Const CFERR_CHOOSEFONTCODES = &H2000
Private Const CFERR_NOFONTS = &H2001
Private Const CFERR_MAXLESSTHANMIN = &H2002
Private Const FNERR_FILENAMECODES = &H3000
Private Const FNERR_SUBCLASSFAILURE = &H3001
Private Const FNERR_INVALIDFILENAME = &H3002
Private Const FNERR_BUFFERTOOSMALL = &H3003
Private Const FRERR_FINDREPLACECODES = &H4000
Private Const FRERR_BUFFERLENGTHZERO = &H4001
Private Const CCERR_CHOOSECOLORCODES = &H5000

--
François Picalausa

"Jeff" a écrit dans le message de
news:
Bonjour,

Je veins de récupérer de l'assiatnce à faire sur une application de
gestion des membres d'une association. Cette application utilise
GetOpenFileName pour sélectionner des fichiers à joindre à un mail
aux membres.

Tout fonctionnait parfaitement sur l'ancien PC, sous Win 98SE. Avec le
nouveau PC, sous XP, la boîte de dialogue ne s'ouvre plus.

J'ai trouvé que MS avait ajouté trois éléments à la structure
OPENFILENAME (pvReserved As Long dwReserved As Long FlagsEx As Long)
depuis Windows 2000.

Je les ai donc ajouté mais cela ne change rien. La Boîte ne s'ouvre
pas et je n'ai aucun message d'erreur. En "debug", l'appel à
GetOpenFileName semble renvoyer la valeur "faux" puisque le "If"
chargé de traiter ce que l'on ramène ne s'exécute pas.

Y a t il autre chose de changer sous XP (SP2 a priori). Quelqu'un m'a
dit avoir lu quelque part que l'appel à cette API plantait après le
passage au SP2.

Je suis preneur de toute suggestion.

Merci d'avance

Jeff


Avatar
Jeff
Bonjour,

Merci de la piste avec CommDlgExtendedError, cela m'a permis d'avoir le code
d'erreur en retour.

J'obtiens un CDERR_INITIALIZATION en retour (The common dialog box function
failed during initialization. This error often occurs when sufficient memory
is not available).

Une idée sur ce qui peut créer cette erreur ? Je doute un peu qu'avec 512 Mo
et juste cette application de lancée il manque de la mémoire. Je suis
d'autant plus sceptique sur cette piste suggéré parMS qu'il n'y a aucun
problème sous Win 98SE avec 128 Mo et d'autres applications en route.

Merci d'avance de vos suggestions

JF


"François Picalausa" a écrit :

Hello,

Si l'API GetOpenFileName renvoie 0 (et donc un if non exécuté), tu peux
obtenir des informations supplémentaires sur l'erreur en appelant
CommDlgExtendedError:
Private Declare Function CommDlgExtendedError _
Lib "Comdlg32" _
( _
) _
As Long

Les codes d'erreur correspondant à cette fonction sont indiqués sur cette
page:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxfunctions/getopenfilename.asp
et la description de ces valeurs est donnée ici:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxfunctions/commdlgextendederror.asp

Les constantes correspondantes sont les suivantes (traduction automatique à
partir de CdErr.h, non testée):
Private Const CDERR_DIALOGFAILURE = &HFFFF
Private Const CDERR_GENERALCODES = &H0
Private Const CDERR_STRUCTSIZE = &H1
Private Const CDERR_INITIALIZATION = &H2
Private Const CDERR_NOTEMPLATE = &H3
Private Const CDERR_NOHINSTANCE = &H4
Private Const CDERR_LOADSTRFAILURE = &H5
Private Const CDERR_FINDRESFAILURE = &H6
Private Const CDERR_LOADRESFAILURE = &H7
Private Const CDERR_LOCKRESFAILURE = &H8
Private Const CDERR_MEMALLOCFAILURE = &H9
Private Const CDERR_MEMLOCKFAILURE = &HA
Private Const CDERR_NOHOOK = &HB
Private Const CDERR_REGISTERMSGFAIL = &HC
Private Const PDERR_PRINTERCODES = &H1000
Private Const PDERR_SETUPFAILURE = &H1001
Private Const PDERR_PARSEFAILURE = &H1002
Private Const PDERR_RETDEFFAILURE = &H1003
Private Const PDERR_LOADDRVFAILURE = &H1004
Private Const PDERR_GETDEVMODEFAIL = &H1005
Private Const PDERR_INITFAILURE = &H1006
Private Const PDERR_NODEVICES = &H1007
Private Const PDERR_NODEFAULTPRN = &H1008
Private Const PDERR_DNDMMISMATCH = &H1009
Private Const PDERR_CREATEICFAILURE = &H100A
Private Const PDERR_PRINTERNOTFOUND = &H100B
Private Const PDERR_DEFAULTDIFFERENT = &H100C
Private Const CFERR_CHOOSEFONTCODES = &H2000
Private Const CFERR_NOFONTS = &H2001
Private Const CFERR_MAXLESSTHANMIN = &H2002
Private Const FNERR_FILENAMECODES = &H3000
Private Const FNERR_SUBCLASSFAILURE = &H3001
Private Const FNERR_INVALIDFILENAME = &H3002
Private Const FNERR_BUFFERTOOSMALL = &H3003
Private Const FRERR_FINDREPLACECODES = &H4000
Private Const FRERR_BUFFERLENGTHZERO = &H4001
Private Const CCERR_CHOOSECOLORCODES = &H5000

--
François Picalausa

"Jeff" a écrit dans le message de
news:
> Bonjour,
>
> Je veins de récupérer de l'assiatnce à faire sur une application de
> gestion des membres d'une association. Cette application utilise
> GetOpenFileName pour sélectionner des fichiers à joindre à un mail
> aux membres.
>
> Tout fonctionnait parfaitement sur l'ancien PC, sous Win 98SE. Avec le
> nouveau PC, sous XP, la boîte de dialogue ne s'ouvre plus.
>
> J'ai trouvé que MS avait ajouté trois éléments à la structure
> OPENFILENAME (pvReserved As Long dwReserved As Long FlagsEx As Long)
> depuis Windows 2000.
>
> Je les ai donc ajouté mais cela ne change rien. La Boîte ne s'ouvre
> pas et je n'ai aucun message d'erreur. En "debug", l'appel à
> GetOpenFileName semble renvoyer la valeur "faux" puisque le "If"
> chargé de traiter ce que l'on ramène ne s'exécute pas.
>
> Y a t il autre chose de changer sous XP (SP2 a priori). Quelqu'un m'a
> dit avoir lu quelque part que l'appel à cette API plantait après le
> passage au SP2.
>
> Je suis preneur de toute suggestion.
>
> Merci d'avance
>
> Jeff





Avatar
François Picalausa
Hello,

Es-ce que tu pourrais nous envoyer le code d'initialisation de la structure
OFN?
L'erreur peut se produire entre autre à cause d'un nMaxFile = 0, à certaines
combinaisons de flags et dans probablement bien d'autres situations.

--
François Picalausa

"Jeff" a écrit dans le message de
news:
J'obtiens un CDERR_INITIALIZATION en retour (The common dialog box
function failed during initialization. This error often occurs when
sufficient memory is not available).

Une idée sur ce qui peut créer cette erreur ? Je doute un peu qu'avec
512 Mo et juste cette application de lancée il manque de la mémoire.
Je suis d'autant plus sceptique sur cette piste suggéré parMS qu'il
n'y a aucun problème sous Win 98SE avec 128 Mo et d'autres
applications en route.

"François Picalausa" a écrit :
Si l'API GetOpenFileName renvoie 0 (et donc un if non exécuté), tu
peux obtenir des informations supplémentaires sur l'erreur en
appelant CommDlgExtendedError:

--
François Picalausa

"Jeff" a écrit dans le message de
news:
En "debug", l'appel à
GetOpenFileName semble renvoyer la valeur "faux" puisque le "If"
chargé de traiter ce que l'on ramène ne s'exécute pas.






Avatar
Jeff
Bonsoir,

Voilà l'initialisation de OFN. Elle viendrait - d'après les commentaires -
de l'exemple du site vbnet.mvps.org qui a été adapté au cas particulier de
l'application. Certains éléments sont passés en paramètres. J'ai donné leurs
valeurs dans leur commentaire respectif. Je les retrouve bien en mode Debug.

' Size of the OFN structure
OFN.lngStructSize = Len(OFN)

' Filters (patterns) for the dropdown combo
' strFileFilters = "MS Office *.doc; *.xls; *.ppt" & Chr$(0) & "*.doc;
*.xls; *.ppt" _
' & Chr(0) & "Fichiers Acrobat *.pdf" & Chr(0) & "*.pdf" & Chr(0) _
' & "Tous les Fichiers *.*" & Chr(0) & "*.*" _
' & Chr(0) & Chr(0)

OFN.strFilter = strFilters

' Index to the initial filter
OFN.lngFilterIndex = 1

' Default filename, plus additional padding for the user's final
selection(s). Must be double-null terminated
OFN.strFile = "" & Space$(1024) & Chr(0) & Chr(0)

' The size of the buffer
OFN.lngMaxFile = Len(OFN.strFile)

' Default extension applied to file if it has no extention
OFN.strDefFileExt = "" & Chr(0) & Chr(0)

' Space for the file title if a single selection made, double-null
terminated, and its size
OFN.strFileTitle = Chr(0) & Space$(512) & Chr(0) & Chr(0)
OFN.lngMaxTitle = Len(OFN.strFileTitle)

' Starting folder, double-null terminated
' strInitialPath = "c:Mes Documents" & Chr(0) & Chr(0)
OFN.strInitialDir = strInitialPath

' The dialog title '
' strDialogTitle = "Sélection des pièces jointes"
OFN.strDialogTitle = strDialogTitle

' Default open flags and multiselect - avec le rappel des valeurs
OFN.lngFlags = OFN_EXPLORER _ ' = &H80000
Or OFN_LONGNAMES _ ' = &H200000
Or OFN_CREATEPROMPT _ ' = &H2000
Or OFN_NODEREFERENCELINKS _ ' = &H100000
Or OFN_ALLOWMULTISELECT _ ' = &H200
Or OFN_HIDEREADONLY ' = &H4

Vient ensuite l'appel à GetOpenFileName et le traitement des noms de
fichiers récupérés... quand ça marchait :-

Par ailleurs, dans la déclaration des flags, il apparaît un "OFS_MAXPATHNAME
= 260" (on le retrouve sur le site d'où vient l'exemple. Je ne retrouve rien
de ce genre sur MSDN dans la description de OPENFILENAME, même avec un ofN et
non ofS.

Merci d'avance pour cette aide très précieuse !
Avatar
Jeff
Personne n'a d'idée(s) sur une erreur éventuelle dans la structure ... ou sur
l'origine du problème ? :-

Jeff

"Jeff" a écrit :

Bonsoir,

Voilà l'initialisation de OFN. Elle viendrait - d'après les commentaires -
de l'exemple du site vbnet.mvps.org qui a été adapté au cas particulier de
l'application. Certains éléments sont passés en paramètres. J'ai donné leurs
valeurs dans leur commentaire respectif. Je les retrouve bien en mode Debug.

' Size of the OFN structure
OFN.lngStructSize = Len(OFN)

' Filters (patterns) for the dropdown combo
' strFileFilters = "MS Office *.doc; *.xls; *.ppt" & Chr$(0) & "*.doc;
*.xls; *.ppt" _
' & Chr(0) & "Fichiers Acrobat *.pdf" & Chr(0) & "*.pdf" & Chr(0) _
' & "Tous les Fichiers *.*" & Chr(0) & "*.*" _
' & Chr(0) & Chr(0)

OFN.strFilter = strFilters

' Index to the initial filter
OFN.lngFilterIndex = 1

' Default filename, plus additional padding for the user's final
selection(s). Must be double-null terminated
OFN.strFile = "" & Space$(1024) & Chr(0) & Chr(0)

' The size of the buffer
OFN.lngMaxFile = Len(OFN.strFile)

' Default extension applied to file if it has no extention
OFN.strDefFileExt = "" & Chr(0) & Chr(0)

' Space for the file title if a single selection made, double-null
terminated, and its size
OFN.strFileTitle = Chr(0) & Space$(512) & Chr(0) & Chr(0)
OFN.lngMaxTitle = Len(OFN.strFileTitle)

' Starting folder, double-null terminated
' strInitialPath = "c:Mes Documents" & Chr(0) & Chr(0)
OFN.strInitialDir = strInitialPath

' The dialog title '
' strDialogTitle = "Sélection des pièces jointes"
OFN.strDialogTitle = strDialogTitle

' Default open flags and multiselect - avec le rappel des valeurs
OFN.lngFlags = OFN_EXPLORER _ ' = &H80000
Or OFN_LONGNAMES _ ' = &H200000
Or OFN_CREATEPROMPT _ ' = &H2000
Or OFN_NODEREFERENCELINKS _ ' = &H100000
Or OFN_ALLOWMULTISELECT _ ' = &H200
Or OFN_HIDEREADONLY ' = &H4

Vient ensuite l'appel à GetOpenFileName et le traitement des noms de
fichiers récupérés... quand ça marchait :-

Par ailleurs, dans la déclaration des flags, il apparaît un "OFS_MAXPATHNAME
= 260" (on le retrouve sur le site d'où vient l'exemple. Je ne retrouve rien
de ce genre sur MSDN dans la description de OPENFILENAME, même avec un ofN et
non ofS.

Merci d'avance pour cette aide très précieuse !


Avatar
François Picalausa
Hello,

J'ai essayé d'initialiser une structure OFN comme indiqué, mais je n'obtiens
aucune reproduction.
Voici le code:
Option Explicit

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As Long
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Declare Function GetOpenFileName _
Lib "Comdlg32" _
Alias "GetOpenFileNameA" _
( _
lpofn As OPENFILENAME _
) _
As Long
Private Enum OFN
OFN_READONLY = &H1
OFN_OVERWRITEPROMPT = &H2
OFN_HIDEREADONLY = &H4
OFN_NOCHANGEDIR = &H8
OFN_SHOWHELP = &H10
OFN_ENABLEHOOK = &H20
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_NOVALIDATE = &H100
OFN_ALLOWMULTISELECT = &H200
OFN_EXTENSIONDIFFERENT = &H400
OFN_PATHMUSTEXIST = &H800
OFN_FILEMUSTEXIST = &H1000
OFN_CREATEPROMPT = &H2000
OFN_SHAREAWARE = &H4000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NONETWORKBUTTON = &H20000
OFN_NOLONGNAMES = &H40000
OFN_EXPLORER = &H80000
OFN_NODEREFERENCELINKS = &H100000
OFN_LONGNAMES = &H200000
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_DONTADDTORECENT = &H2000000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_EX_NOPLACESBAR = &H1
End Enum

Private Const CDERR_DIALOGFAILURE = &HFFFF
Private Const CDERR_GENERALCODES = &H0
Private Const CDERR_STRUCTSIZE = &H1
Private Const CDERR_INITIALIZATION = &H2
Private Const CDERR_NOTEMPLATE = &H3
Private Const CDERR_NOHINSTANCE = &H4
Private Const CDERR_LOADSTRFAILURE = &H5
Private Const CDERR_FINDRESFAILURE = &H6
Private Const CDERR_LOADRESFAILURE = &H7
Private Const CDERR_LOCKRESFAILURE = &H8
Private Const CDERR_MEMALLOCFAILURE = &H9
Private Const CDERR_MEMLOCKFAILURE = &HA
Private Const CDERR_NOHOOK = &HB
Private Const CDERR_REGISTERMSGFAIL = &HC
Private Const PDERR_PRINTERCODES = &H1000
Private Const PDERR_SETUPFAILURE = &H1001
Private Const PDERR_PARSEFAILURE = &H1002
Private Const PDERR_RETDEFFAILURE = &H1003
Private Const PDERR_LOADDRVFAILURE = &H1004
Private Const PDERR_GETDEVMODEFAIL = &H1005
Private Const PDERR_INITFAILURE = &H1006
Private Const PDERR_NODEVICES = &H1007
Private Const PDERR_NODEFAULTPRN = &H1008
Private Const PDERR_DNDMMISMATCH = &H1009
Private Const PDERR_CREATEICFAILURE = &H100A
Private Const PDERR_PRINTERNOTFOUND = &H100B
Private Const PDERR_DEFAULTDIFFERENT = &H100C
Private Const CFERR_CHOOSEFONTCODES = &H2000
Private Const CFERR_NOFONTS = &H2001
Private Const CFERR_MAXLESSTHANMIN = &H2002
Private Const FNERR_FILENAMECODES = &H3000
Private Const FNERR_SUBCLASSFAILURE = &H3001
Private Const FNERR_INVALIDFILENAME = &H3002
Private Const FNERR_BUFFERTOOSMALL = &H3003
Private Const FRERR_FINDREPLACECODES = &H4000
Private Const FRERR_BUFFERLENGTHZERO = &H4001
Private Const CCERR_CHOOSECOLORCODES = &H5000

Private Declare Function CommDlgExtendedError _
Lib "Comdlg32" _
( _
) _
As Long

Private Sub Form_Load()
Dim OFN As OPENFILENAME

' Size of the OFN structure
OFN.lStructSize = Len(OFN)

OFN.lpstrFilter = "MS Office *.doc; *.xls; *.ppt" & Chr$(0) & "*.doc;
*.xls; *.ppt" _
& Chr(0) & "Fichiers Acrobat *.pdf" & Chr(0) & "*.pdf" & Chr(0) _
& "Tous les Fichiers *.*" & Chr(0) & "*.*" _
& Chr(0) & Chr(0)

' Index to the initial filter
OFN.nFilterIndex = 1

' Default filename, plus additional padding for the user's final
'selection(s). Must be double-null terminated
OFN.lpstrFile = "" & Space$(1024) & Chr(0) & Chr(0)

' The size of the buffer
OFN.nMaxFile = Len(OFN.lpstrFile)

' Default extension applied to file if it has no extention
OFN.lpstrDefExt = "" & Chr(0) & Chr(0)

' Space for the file title if a single selection made, double-null
'terminated, and its size
OFN.lpstrFileTitle = Chr(0) & Space$(512) & Chr(0) & Chr(0)
OFN.nMaxFileTitle = Len(OFN.lpstrFileTitle)

' Starting folder, double-null terminated
' strInitialPath OFN.lpstrInitialDir = "c:Mes Documents" & Chr(0) & Chr(0)

' The dialog title '
' strDialogTitle = "Sélection des pièces jointes"
OFN.lpstrTitle = "Sélection des pièces jointes"

' Default open flags and multiselect - avec le rappel des valeurs
OFN.Flags = OFN_EXPLORER _
Or OFN_LONGNAMES _
Or OFN_CREATEPROMPT _
Or OFN_NODEREFERENCELINKS _
Or OFN_ALLOWMULTISELECT _
Or OFN_HIDEREADONLY

If GetOpenFileName(OFN) Then
Debug.Print StripNULL(OFN.lpstrFileTitle)
Debug.Print StripNULL(OFN.lpstrFile)
Else
Select Case CommDlgExtendedError
Case CDERR_INITIALIZATION
Debug.Print "CDERR_INITIALIZATION"
Case CDERR_DIALOGFAILURE
Debug.Print "CDERR_DIALOGFAILURE"
Case FNERR_BUFFERTOOSMALL
Debug.Print "FNERR_BUFFERTOOSMALL"
Case FNERR_INVALIDFILENAME
Debug.Print "FNERR_INVALIDFILENAME"
Case Else
Debug.Print CommDlgExtendedError
End Select
End If
End Sub

Private Function StripNULL(strText As String) As String
Dim NULLPos As Long

StripNULL = strText
NULLPos = InStr(1, StripNULL, vbNullChar)
If NULLPos Then
StripNULL = Left$(StripNULL, NULLPos - 1)
End If
End Function


Il y a un ou deux changement dans les noms dans la structure (les noms que
j'utilise sont ceux trouvés dans le platform SDK), mais ceci n'a aucune
importance.
Malgré celà, il faut remarquer qu'on préférera écrire
Chr$(0) plutôt que Chr(0)
et pour la caractère null (Chr$(0)), on peut utiliser directement la
variable vbNullChar. De même, String$ permet de générer une chaine contenant
uniquement des caractères null, et peut donc efficacement remplacer la
fonction Space$:
String$(Nombre de caractère, vbNullChar)

--
François Picalausa

"Jeff" a écrit dans le message de
news:
Personne n'a d'idée(s) sur une erreur éventuelle dans la structure
... ou sur l'origine du problème ? :-

Jeff

"Jeff" a écrit :

Bonsoir,

Voilà l'initialisation de OFN. Elle viendrait - d'après les
commentaires - de l'exemple du site vbnet.mvps.org qui a été adapté
au cas particulier de l'application. Certains éléments sont passés
en paramètres. J'ai donné leurs valeurs dans leur commentaire
respectif. Je les retrouve bien en mode Debug.




Avatar
Jeff
Bonsoir,

Merci infiniment du temps passé sur ce problème que j'ai fini par résoudre
hier soir.

A force de recherches sur le web, j'ai vu que certains codes initilisaient
deux autres élément de la structure OFN et que c'était la seule différence
avec mon initialisation. J'ai donc essayé et ça marche.

Si, dans l'initialisation j'ajoute :

OFN.strCustomFilter = String(255,0)
OFN.lngMaxCustFilter = Len(OFN.strCustomFilter)

tout refonctionne normalement, et sans poser de problème sous 98SE.

Il est aussi intéressant de noter que si l'on se réfère à GetOpenFileNameW
(et pas "A") de la DLL en spécifiant l'utilisation de Unicode,
l'initialisation ci-dessus est inutile sous XP

S'il y a une explication, elle est largement au-delà de mes modestes
compétences :-(

Merci encore de ton aide !

JF