Bonjour, je cherche à convertir d'ANSi en unicode dans mon programme , HNULL qui est défini comme cela :
merci#define HNULL (SYS_HANDLE)0![]()
Bonjour, je cherche à convertir d'ANSi en unicode dans mon programme , HNULL qui est défini comme cela :
merci#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 ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
heu, tu sais ce que c'est unicode et ansi ?![]()
je ne vois pas ce que ton HNULL vient faire la![]()
J'en ai besoin pour cette fonction car LPCWSTR est foireux.PostMessage( FindWindow( GalssClassName2_unicode, (LPCWSTR) HNULL),
typedef void * SYS_HANDLE;
Tu devrais peut-être poster ca sur le forum Visual C++.
C'est pourtant simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ok, petit résumé sur la signification du nom :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 UNICODE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #if !defined(UNICODE) #define TCHAR char #else #define TCHAR wchar_t #endif
ANSI et UNICODE, c'est fait pour...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".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 ?Envoyé par FamiDoo
)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
merci Médi comme d'hab![]()
Je voulais mettre NULL mais je voulais ta confirmation .
Partager