Pb avec l'API GetOpenFileName

nazzguhl Messages postés 26 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 26 janvier 2011 - 4 mai 2004 à 14:25
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 - 4 mai 2004 à 14:30
Bonjour,

J'ai un programme VB6 utilisant l'API GetOpenFileName qui fonctionne très bien en Win98, j'essaye de l'utiliser sous Windows XP-PRO et la fenêtre de l'API ne s'ouvre pas, donc aucun moyen de selectionner des fichiers (les flag utilisés sont : AllowMultiselect, FileMustExist, ExtensionDifferent, HideReadOnly et Explorer).

Est-ce qu'il y a quelque chose de spécial pour faire fonctionner cette API en XP-PRO ?

Merci d'avance.
ACT

1 réponse

cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
4 mai 2004 à 14:30
labout

Sous XP Pro et VB6

Je crée un nouveau projet et je colle ceci dans le code

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
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 Sub Form_Load()
Dim OFName As OPENFILENAME
OFName.lStructSize = Len(OFName)
'Set the parent window
OFName.hwndOwner = Me.hWnd
'Set the application's instance
OFName.hInstance = App.hInstance
'Select a filter
OFName.lpstrFilter = "Text Files (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
'create a buffer for the file
OFName.lpstrFile = Space$(254)
'set the maximum length of a returned file
OFName.nMaxFile = 255
'Create a buffer for the file title
OFName.lpstrFileTitle = Space$(254)
'Set the maximum length of a returned file title
OFName.nMaxFileTitle = 255
'Set the initial directory
OFName.lpstrInitialDir = "C:"
'Set the title
OFName.lpstrTitle = "Open File - KPD-Team 1998"
'No flags
OFName.flags = 0

'Show the 'Open File'-dialog
If GetOpenFileName(OFName) Then
MsgBox "File to Open: " + Trim$(OFName.lpstrFile)
Else
MsgBox "Cancel was pressed"
End If

End Sub

Tout marche au poil.
@+
0
Rejoignez-nous