J'ai un programme Borland qui marchait très bien, mais qui ne marche plus sous Windows98. En cause, l'instruction GetOpenFileName(&ofn) qui renvoie l'erreur CDERR_STRUCTSIZE. Allons bon, qu'est ce que c'est ce bazar, pourtant je le définis tout à fait normalement:
L'alignement des structures est bon, c'est donc la définition même de cette structure qui a été modifiée. Je vais voir sa description dans commdlg.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ofn.lStructSize = sizeof(OPENFILENAME);
Ah, je commence à comprendre, c'est le flag _WIN32_WINNT qui change la taille de la structure. Mais pourquoi il est à 0x0500 ? Je veux que mes programmes soient compatibles tous systèmes. Il est défini dans windows.h lequel est inclus dans vcl.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Et là, je suis coincé: Si je le force à 0x400 (en le définissant en début de programme, par exemple) j'ai un million d'erreurs dans Windows.hpp, et si je le laisse, Openfilename ne marche plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
Question 1: Comment faire ? Je veux dire proprement. Parce que je peux bien sûr faire comme ça:
et ça marche, mais je trouve ça très moche, et si cette structure est modifiée, il y en a surement d'autres dans le même cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ofn.lStructSize = sizeof(OPENFILENAME) - 12;
Question 2: Borland est-il compatible WIN9X ? Si oui, pourquoi ce define _WIN32_WINNT 0x0500 ?
Ah oui, ceux qui vont me dire "Tu n'a qu'à utiliser le composant TOpenDialog", je les invite dimanche à modifier les centaines d'ouverture de fichiers qu'il y a dans le source.

 

 
		
		 
         
 

 
			
			


 
			 
   


 [Compatibilité] Borland, OPENFILENAME et _WIN32_WINNT
 [Compatibilité] Borland, OPENFILENAME et _WIN32_WINNT
				 Répondre avec citation
  Répondre avec citation
 
			 Envoyé par 10_GOTO_10
 Envoyé par 10_GOTO_10
					
				 |
 |  
  
 
 
 
 
			 
  
			
Partager