Page 1 sur 1
Header converter et résultats
Publié : sam. 27/nov./2004 8:54
par Anonyme2
Fred,
je ne comprend pas forcément les structure converyties avec Header converter
Un exemple, dans le fichier CommCtrl une fois converti on devrait trouver par exemple la structure
LVFINDINFO puisque la Doc MS indique que cette structure est déclarée dans le fichier commctrl.h.
Une fois le fichier CommCtrl.pb créé on trouve ces 2 structures
Code : Tout sélectionner
Structure LVFINDINFOA
flags.l
*psz.b
lParam.l
pt.POINT
vkDirection.l
EndStructure
Structure LVFINDINFOW
flags.l
*psz.w
lParam.l
pt.POINT
vkDirection.l
EndStructure
Il y a donc une différence en fonction du type de chaine
Mais MS donne cette définition dans la doc SDK
typedef struct tagLVFINDINFO {
UINT flags;
LPCTSTR psz;
LPARAM lParam;
POINT pt;
UINT vkDirection;
} LVFINDINFO, *LPFINDINFO;
et psz est l'adresse d'une chaîne
psz
Address of a null-terminated string to compare with the item text. It is valid only if LVFI_STRING or LVFI_PARTIAL is set in the flags member.
et pas un pointeur sur un byte ou word
Il n'y a pas que cette structure qui est comme ça.
Les conversions sont bonnes ?
Publié : sam. 27/nov./2004 12:56
par Chris
Ca vient peut être du fait que la structure est déclarée comme ça dans le fichier .h:
Code : Tout sélectionner
typedef struct tagLVFINDINFOA
{
UINT flags;
LPCSTR psz;
LPARAM lParam;
POINT pt;
UINT vkDirection;
} LVFINDINFOA, *LPFINDINFOA;
typedef struct tagLVFINDINFOW
{
UINT flags;
LPCWSTR psz;
LPARAM lParam;
POINT pt;
UINT vkDirection;
} LVFINDINFOW, *LPFINDINFOW;
#ifdef UNICODE
#define LVFINDINFO LVFINDINFOW
#else
#define LVFINDINFO LVFINDINFOA
#endif
La doc donne, comme définition pour LPCSTR et LPCWSTR:
LPCSTR Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters.
LPCWSTR Pointer to a constant null-terminated string of 16-bit Unicode characters.
Publié : sam. 27/nov./2004 13:12
par Anonyme2
T'as raison Chris
LPCSTR Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters.
LPCWSTR Pointer to a constant null-terminated string of 16-bit Unicode characters.
est interpreté d'une mauvaise façon
C'est bien un pointeur de chaine mais chaque caractère est codé sur 8 ou 16 bits selon le type de caractère.
Publié : sam. 27/nov./2004 13:52
par Chris
Je me souviens d'une remarque que j'avais fait, en disant que dans les structures, Microsoft demandait une chaine, alors que PB demandait l'adresse de la chaine. Fred avait répondu que c'était normal, car PB gérait les strings de manière différente.
Code : Tout sélectionner
;Format PureBasic
Structure MaStructure_PB
Text.l
EndStructure
Truc_PB.MaStructure_PB
MonTexte.s = "Machin"
Truc_PB\Text = @MonTexte
Debug PeekS(Truc_PB\Text)
;Format Microsoft
Structure MaStructure_MS
Text.s
EndStructure
Truc_MS.MaStructure_MS
Truc_MS\Text = "Machin"
Debug Truc_MS\Text
Par contre, je n'arrive pas à retrouver le topic
Publié : sam. 27/nov./2004 15:18
par nico
;Format PureBasic
Structure MaStructure_PB
Text.l
EndStructure
Truc_PB.MaStructure_PB
MonTexte.s = "Machin"
Truc_PB\Text = @MonTexte
On devrait pas écrire *Text.l
Publié : sam. 27/nov./2004 15:29
par Chris
Il ne s'agit pas de savoir ce qu'on devrait écrire ou pas.
Les structures de Pure sont faites comme ça, et pas autrement.
Exemple tiré du visualiseur de structures de PureBasic:
Publié : sam. 27/nov./2004 15:35
par Anonyme2
nico a écrit :On devrait pas écrire *Text.l
Je ne comprend pas ce que tu veux dire Nico
Pour moi *Text.l est parfaitement normal, on a un pointeur qui pointe sur des valeurs en 32 bits (long).
Publié : sam. 27/nov./2004 18:07
par nico
Justement, tel que Chris l'a écrit, ce n'est pas un pointeur.
il a dû oublié l'étoile.
Publié : sam. 27/nov./2004 18:25
par Anonyme2
nico a écrit :Justement, tel que Chris l'a écrit, ce n'est pas un pointeur.
il a dû oublié l'étoile.
Ha c'était une question
Je fatigue un peu

Publié : sam. 27/nov./2004 18:35
par nico
J'avoue que j'étais pas clair

Publié : sam. 27/nov./2004 18:39
par Chris
J'ai pas oublié l'étoile, il n'y en a pas dans les structures da Pure.
PS, Quand on pose une question, avec un point d'interrogation, ça devient tout de suite beaucoup plus compréhensible

Publié : sam. 27/nov./2004 19:05
par nico
Chris a écrit :J'ai pas oublié l'étoile, il n'y en a pas dans les structures da Pure.
PS, Quand on pose une question, avec un point d'interrogation, ça devient tout de suite beaucoup plus compréhensible

C'était un point d'exclamation que j'ai omis!