> Je cherche a afficher un texte en unicode ( du corréen ) dans un
combobox.
Comment faire ? ( actuellement ca m'affiche une bouillie de carrés , le
jeu
de caractere est bien installé )
c'est de la soupe miso ? désolé, j'ai pas pu m'empecher :)
patrox
test a l'arrache, si qqun pouvais me dire d'ou ca viens... ( fait sous VC cette fois )
merci. pat.
#define UNICODE #define _UNICODE
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. unsigned short uString[128] ;
test a l'arrache, si qqun pouvais me dire d'ou ca viens... ( fait sous VC
cette fois )
merci.
pat.
#define UNICODE
#define _UNICODE
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
unsigned short uString[128] ;
test a l'arrache, si qqun pouvais me dire d'ou ca viens... ( fait sous VC cette fois )
merci. pat.
#define UNICODE #define _UNICODE
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. unsigned short uString[128] ;
Que tu ais à faire le cast en char*, c'est déjà mauvais signe. Apparement c'est MessageBoxExA et non MessageBoxExW qui est appelée (au passage, le paramètre wLanguagId ne sert à rien)
J'ai fait le test, et apparement c'est la faute aux en-têtes précompilés : en mettant le #define UNICODE dans stdafx.h, ça affiche bien nihongo.
Que tu ais à faire le cast en char*, c'est déjà mauvais signe.
Apparement c'est MessageBoxExA et non MessageBoxExW qui est appelée (au
passage, le paramètre wLanguagId ne sert à rien)
J'ai fait le test, et apparement c'est la faute aux en-têtes précompilés
: en mettant le #define UNICODE dans stdafx.h, ça affiche bien nihongo.
Que tu ais à faire le cast en char*, c'est déjà mauvais signe. Apparement c'est MessageBoxExA et non MessageBoxExW qui est appelée (au passage, le paramètre wLanguagId ne sert à rien)
J'ai fait le test, et apparement c'est la faute aux en-têtes précompilés : en mettant le #define UNICODE dans stdafx.h, ça affiche bien nihongo.
-- Møgluglu
Martinez Jerome
patrox wrote:
#define UNICODE #define _UNICODE
Ben la est le pb : tu le definis bien trop tard... Met ca dans les options du projet, pas par un define. Le define sera mis automatiquement.
Dans le Projet : "utiliser le jeux de carctere", un truc comem ca. Tu as le chois entre defaut, MBCS et Unicode... Met Unicode.
> // TODO: Place code here. > unsigned short uString[128] ;
Ensuite vire-moi cette chose horrible de unsigned short! Une chaine, c'est _TCHAR pour etre compatible Ansi et unicode. Ou wchar.
Virer ce (char*), jamais de transtypage fort!!! (preuve aussi que tu appelle la version Ansi, et non Unicode... Donc projet mal configuré)
patrox
> Ensuite vire-moi cette chose horrible de unsigned short! Une chaine, c'est _TCHAR pour etre compatible Ansi et unicode. Ou wchar.
un TCHAR c'est quoi ? 2 bytes... enfin...
Virer ce (char*), jamais de transtypage fort!!! (preuve aussi que tu appelle la version Ansi, et non Unicode... Donc projet mal configuré)
Si tu avais essayé tu saurai que MessageBoxEx prends un (char*) en parametre, ca refuse de compiler sinon. ( enfin sauf sous VC qui prendrai meme un float tellement il est peu regardant... )
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir , bref microsoftesque... ) J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche au poil.
Pat.
>
Ensuite vire-moi cette chose horrible de unsigned short!
Une chaine, c'est _TCHAR pour etre compatible Ansi et unicode.
Ou wchar.
un TCHAR c'est quoi ? 2 bytes... enfin...
Virer ce (char*), jamais de transtypage fort!!!
(preuve aussi que tu appelle la version Ansi, et non Unicode... Donc
projet mal configuré)
Si tu avais essayé tu saurai que MessageBoxEx prends un (char*) en
parametre, ca refuse de compiler sinon. ( enfin sauf sous VC qui prendrai
meme un float tellement il est peu regardant... )
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans
windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir ,
bref microsoftesque... )
J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche
au poil.
> Ensuite vire-moi cette chose horrible de unsigned short! Une chaine, c'est _TCHAR pour etre compatible Ansi et unicode. Ou wchar.
un TCHAR c'est quoi ? 2 bytes... enfin...
Virer ce (char*), jamais de transtypage fort!!! (preuve aussi que tu appelle la version Ansi, et non Unicode... Donc projet mal configuré)
Si tu avais essayé tu saurai que MessageBoxEx prends un (char*) en parametre, ca refuse de compiler sinon. ( enfin sauf sous VC qui prendrai meme un float tellement il est peu regardant... )
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir , bref microsoftesque... ) J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche au poil.
Pat.
Martinez Jerome
patrox wrote:
Ensuite vire-moi cette chose horrible de unsigned short! Une chaine, c'est _TCHAR pour etre compatible Ansi et unicode. Ou wchar.
un TCHAR c'est quoi ? 2 bytes... enfin...
un TCHAR (oui, pas de _), c'est un byte en Ansi, 2 bytes en Unicode. Ca depend de ton option de compialtion (et pas d'un define!)
Virer ce (char*), jamais de transtypage fort!!! (preuve aussi que tu appelle la version Ansi, et non Unicode... Donc projet mal configuré)
Si tu avais essayé tu saurai que MessageBoxEx prends un (char*) en parametre, ca refuse de compiler sinon. ( enfin sauf sous VC qui prendrai meme un float tellement il est peu regardant... )
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messageboxex.asp Etonant, il prend un LPCTSTR il y a un T avant STR, tu n'a pas l'air de comprendre... Chez moi, en compilant en Unicode, LPCTSTR est un wchar*, absolument pas un char*. Apres, si tu t'entetes a penser que MessageBoxEx prend un char*, libre a toi... meme si c'est archi faux.
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir , bref microsoftesque... )
Magouille? suffit d'aller sur sourceforge, il y a un projet bien foutu pour prendre en charge. Mais bon, puisque tu ne veux pas mettre l'option UNICODe, tu en as pas besoin...
J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche au poil.
Cool. C'est bien de refaire le monde, j'esper que ce cas prend en charge les 100 000 caracteres de l'Unicode comme il faut...
patrox wrote:
Ensuite vire-moi cette chose horrible de unsigned short!
Une chaine, c'est _TCHAR pour etre compatible Ansi et unicode.
Ou wchar.
un TCHAR c'est quoi ? 2 bytes... enfin...
un TCHAR (oui, pas de _), c'est un byte en Ansi, 2 bytes en Unicode. Ca
depend de ton option de compialtion (et pas d'un define!)
Virer ce (char*), jamais de transtypage fort!!!
(preuve aussi que tu appelle la version Ansi, et non Unicode... Donc
projet mal configuré)
Si tu avais essayé tu saurai que MessageBoxEx prends un (char*) en
parametre, ca refuse de compiler sinon. ( enfin sauf sous VC qui prendrai
meme un float tellement il est peu regardant... )
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messageboxex.asp
Etonant, il prend un LPCTSTR
il y a un T avant STR, tu n'a pas l'air de comprendre...
Chez moi, en compilant en Unicode, LPCTSTR est un wchar*, absolument pas
un char*.
Apres, si tu t'entetes a penser que MessageBoxEx prend un char*, libre a
toi... meme si c'est archi faux.
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans
windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir ,
bref microsoftesque... )
Magouille? suffit d'aller sur sourceforge, il y a un projet bien foutu
pour prendre en charge.
Mais bon, puisque tu ne veux pas mettre l'option UNICODe, tu en as pas
besoin...
J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche
au poil.
Cool.
C'est bien de refaire le monde, j'esper que ce cas prend en charge les
100 000 caracteres de l'Unicode comme il faut...
Ensuite vire-moi cette chose horrible de unsigned short! Une chaine, c'est _TCHAR pour etre compatible Ansi et unicode. Ou wchar.
un TCHAR c'est quoi ? 2 bytes... enfin...
un TCHAR (oui, pas de _), c'est un byte en Ansi, 2 bytes en Unicode. Ca depend de ton option de compialtion (et pas d'un define!)
Virer ce (char*), jamais de transtypage fort!!! (preuve aussi que tu appelle la version Ansi, et non Unicode... Donc projet mal configuré)
Si tu avais essayé tu saurai que MessageBoxEx prends un (char*) en parametre, ca refuse de compiler sinon. ( enfin sauf sous VC qui prendrai meme un float tellement il est peu regardant... )
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messageboxex.asp Etonant, il prend un LPCTSTR il y a un T avant STR, tu n'a pas l'air de comprendre... Chez moi, en compilant en Unicode, LPCTSTR est un wchar*, absolument pas un char*. Apres, si tu t'entetes a penser que MessageBoxEx prend un char*, libre a toi... meme si c'est archi faux.
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir , bref microsoftesque... )
Magouille? suffit d'aller sur sourceforge, il y a un projet bien foutu pour prendre en charge. Mais bon, puisque tu ne veux pas mettre l'option UNICODe, tu en as pas besoin...
J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche au poil.
Cool. C'est bien de refaire le monde, j'esper que ce cas prend en charge les 100 000 caracteres de l'Unicode comme il faut...
Møgluglu
Martinez Jerome a écrit:
un TCHAR (oui, pas de _), c'est un byte en Ansi, 2 bytes en Unicode. Ca depend de ton option de compialtion (et pas d'un define!)
...sachant que l'option de compilation fait la même chose qu'un define.
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir , bref microsoftesque... )
Attention, même avec MSLU Windows 9x ne supporte *pas* l'Unicode. MSLU ne fait que convertir à la volée les chaînes Unicode en chaînes ANSI lors des appel de fonctions de l'API.
J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche au poil.
Cool. C'est bien de refaire le monde, j'esper que ce cas prend en charge les 100 000 caracteres de l'Unicode comme il faut...
C'est pourtant hélas la bonne méthode : tout faire soi-même (avec TextOut, GetTextExtentPoint32,... les seules fonctions Unicode de Win9x). Une autre solution c'est d'utiliser Internet Explorer, qui lui gère Unicode correctement même sous 9x.
-- Møgluglu
Martinez Jerome a écrit:
un TCHAR (oui, pas de _), c'est un byte en Ansi, 2 bytes en Unicode.
Ca depend de ton option de compialtion (et pas d'un define!)
...sachant que l'option de compilation fait la même chose qu'un define.
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans
windows95 et 98 ( il faut faire une magouille avec des DLL pour
l'obtenir , bref microsoftesque... )
Attention, même avec MSLU Windows 9x ne supporte *pas* l'Unicode. MSLU
ne fait que convertir à la volée les chaînes Unicode en chaînes ANSI
lors des appel de fonctions de l'API.
J'ai donc finalement fait un owner draw et je dessinne dedans, tout
marche au poil.
Cool.
C'est bien de refaire le monde, j'esper que ce cas prend en charge les
100 000 caracteres de l'Unicode comme il faut...
C'est pourtant hélas la bonne méthode : tout faire soi-même (avec
TextOut, GetTextExtentPoint32,... les seules fonctions Unicode de
Win9x). Une autre solution c'est d'utiliser Internet Explorer, qui lui
gère Unicode correctement même sous 9x.
un TCHAR (oui, pas de _), c'est un byte en Ansi, 2 bytes en Unicode. Ca depend de ton option de compialtion (et pas d'un define!)
...sachant que l'option de compilation fait la même chose qu'un define.
J'ai finalement trouvé la solution, l'unicode n'est pas inclus dans windows95 et 98 ( il faut faire une magouille avec des DLL pour l'obtenir , bref microsoftesque... )
Attention, même avec MSLU Windows 9x ne supporte *pas* l'Unicode. MSLU ne fait que convertir à la volée les chaînes Unicode en chaînes ANSI lors des appel de fonctions de l'API.
J'ai donc finalement fait un owner draw et je dessinne dedans, tout marche au poil.
Cool. C'est bien de refaire le monde, j'esper que ce cas prend en charge les 100 000 caracteres de l'Unicode comme il faut...
C'est pourtant hélas la bonne méthode : tout faire soi-même (avec TextOut, GetTextExtentPoint32,... les seules fonctions Unicode de Win9x). Une autre solution c'est d'utiliser Internet Explorer, qui lui gère Unicode correctement même sous 9x.