cocos2dx 显示中文的三种方法

来源:互联网 发布:电力采集数据的整理 编辑:程序博客网 时间:2024/05/22 14:33
//随便在cpp中写下列函数,不用再.h文件声明
BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize){ DWORD dwMinSize; dwMinSize = WideCharToMultiByte(CP_UTF8,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE); if(dwSize < dwMinSize) {  return false; } WideCharToMultiByte(CP_UTF8,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE); return true;}


//在cpp中调用
    
    wchar_t str[100] = {L"小朋友,试一试根据黑色的轮廓把小动物们拖进去吧!"};    char strs[200] = {0};    WCharToMByte(str,strs,sizeof(str)/sizeof(strs[0]));     pLabel = CCLabelTTF::create(strs, "CourierNewPS-ItalicMT", 30);    pLabel->setColor(ccc3(0,0,0));    pLabel->setPosition(ccp(512,700));    this->addChild(pLabel,1);


//另外一个方法,无意从某人的博客看到,借鉴下

声明:

//转换中文char* G2U( const char* gb2312 ){int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);    wchar_t* wstr = new wchar_t[len+1];    memset(wstr, 0, len+1);    MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);    len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);    char* str = new char[len+1];    memset(str, 0, len+1);    WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);    if(wstr) delete[] wstr;    return str;}

//调用

char* ch1 = G2U("请输入账号");CCLabelTTF* test= CCLabelTTF::create(ch1, "Arial", 24);test->setPosition(ccp(100,100));this->addChild(test);CC_SAFE_DELETE(ch1);


用cocos2d-x自带的iconv库来转码,来实现中文显示,具体参考:

http://momowing.diandian.com/post/2013-01-16/40047183777


编译到android版本上,可以查看我的一篇博客:
http://blog.csdn.net/cwn0812/article/details/11113699


原创粉丝点击