Bonjour, je cherche à convertir d'ANSi en unicode dans mon programme , HNULL qui est défini comme cela :
merci ;)Citation:
#define HNULL (SYS_HANDLE)0
Version imprimable
Bonjour, je cherche à convertir d'ANSi en unicode dans mon programme , HNULL qui est défini comme cela :
merci ;)Citation:
#define HNULL (SYS_HANDLE)0
Ben, je ne vois pas ce qu'il y a à convertir ici...
On peut savoir comment est défini SYS_HANDLE ?
heu, tu sais ce que c'est unicode et ansi ? 8O
je ne vois pas ce que ton HNULL vient faire la :roll:
J'en ai besoin pour cette fonction car LPCWSTR est foireux.Citation:
PostMessage( FindWindow( GalssClassName2_unicode, (LPCWSTR) HNULL),
Citation:
typedef void * SYS_HANDLE;
Tu devrais peut-être poster ca sur le forum Visual C++.
C'est pourtant simple.Code:PostMessage( FindWindow( GalssClassName2_unicode, NULL), ...);
Je ne vois pas ce que venait faire un SYS_HANDLE là-dedans...
Et quand on programme bien, on utilise des LPCTSTR. On programme tout en TCHAR, et hop, c'est magique, on n'a pas besoin de convertir en unicode!
PS: Le cast d'avant était nécessaire parce qu'en C++ NULL est défini à 0 au lieu de (void*)0, parce qu'en C++ il n'y a pas de conversion implicite de void* à un autre type de pointeur.
Ce qui hélas, permet d'utiliser NULL pour autre chose qu'un pointeur, à moins d'un compilateur qui utilise sa propre extension pour NULL.
LPCTSTR tu peux utiliser ca en ansi ?:roll:
ok, petit résumé sur la signification du nom :Citation:
Envoyé par FamiDoo
LP-C-T-STR :
LP : long pointer
C : constant
T : using TCHAR
STR : string
donc, c'est une string de type C (pointer de chars) terminée par un NULL, donc char caractere est un TCHAR plutot qu'un simple char ou wchar_t.
TCHAR est défini comme suit :
donc tu utilises des TCHAR partout dans ton code ; si tu veux builter ton code en ansi, tu mets un #undef UNICODE dans un entete qui est appelé par tout le monde, sinon, si tu veux builter en unicode, tu changes la commande précédente par un #define UNICODECode:
1
2
3
4
5 #if !defined(UNICODE) #define TCHAR char #else #define TCHAR wchar_t #endif
ANSI et UNICODE, c'est fait pour...Citation:
Envoyé par FamiDoo
Sous un Visual C++ récent (6 non, 2005 oui), tu as des options pour définir directement: Project properties -> Configuration properties -> General -> Option "Character set".Citation:
si tu veux builter ton code en ansi, tu mets un #undef UNICODE dans un entete qui est appelé par tout le monde, sinon, si tu veux builter en unicode, tu changes la commande précédente par un #define UNICODE
Sous un Visual plus ancien comme le 6, tu définis ou non les symboles UNICODE et _UNICODE (il faut toujours les deux ou aucun: Le premier est utilisé par l'API Win32, le second par la C Run-Time library et les MFC) dans le champ "Preprocessor definitions" qui doit se trouver, de mémoire dans les Project Settings -> onglet "C/C++"
Cherche pas, j'ai toujours raison ( Vaniteux, moi ? :aie: )Citation:
Envoyé par FamiDoo
merci Médi comme d'hab ;)
Je voulais mettre NULL mais je voulais ta confirmation .