MFC——中文输入

资料来源 https://zhidao.baidu.com/question/204957067.html?fr=qrl&index=2&qbl=topic_question_2&word=vs2013%C8%E7%BA%CE%C9%E8%D6%C3%CE%AAunicode

测试源代码:

#include "stdafx.h"
#include "windows.h"

char*   UNICODEtoASCII(const   wchar_t*   source)
{
DWORD   size   =   WideCharToMultiByte(CP_OEMCP,
  NULL,
  source,
  -1,
  NULL,
  0,
  NULL,   NULL); 搜索

char*   dest   =   new   char[size];
WideCharToMultiByte(CP_OEMCP,
  NULL,
  source,
  -1,
  dest,
  size,
  NULL,   NULL);

return   dest;
}

BYTE test[]={0xD5,0x8B,0x4B,0x6D,0x00};   //大小端模式的原因,在VC下,高位在后面
int main(int argc, _TCHAR* argv[])
{
printf("0x%X\n",*((DWORD*)test));
printf("%s",UNICODEtoASCII((wchar_t*)test));
getchar();
return 0;
}

只为测试,申请的空间我没有释放,请楼主自行修改


相关查询


WideCharToMultiByte ()函数:  

WideCharToMultiByte
函数原型:
int WideCharToMultiByte(
UINT CodePage, //指定执行转换的 代码页
DWORD dwFlags, //允许你进行额外的控制,它会影响使用了读音符号(比如重音)的字符
LPCWSTR lpWideCharStr, //指定要转换为宽字节字符串的 缓冲区
int cchWideChar, //指定由参数lpWideCharStr指向的缓冲区的 字符个数
LPSTR lpMultiByteStr, //指向接收被转换字符串的缓冲区
int cchMultiByte, //指定由参数lpMultiByteStr指向的 缓冲区最大值
LPCSTR lpDefaultChar, //遇到一个不能转换的宽字符,函数便会使用pDefaultChar参数指向的字符
LPBOOL pfUsedDefaultChar //至少有一个字符不能转换为其多字节形式,函数就会把这个变量设为TRUE
);


cchMultiByte:指定由参数lpMultiByteStr指向的字符串中 字节的个数。如果lpMultiByteStr指定的字符串以空字符终止,可以设置为-1(如果字符串不是以空字符中止,设置为-1可能失败,可能成功),此参数设置为0函数将失败。
lpWideCharStr:指向接收被转换字符串的 缓冲区
cchWideChar:指定由参数lpWideCharStr指向的缓冲区的宽字符个数。若此值为零,函数返回缓冲区所必需的 宽字符数,在这种情况下,lpWideCharStr中的缓冲区不被使用。


whcar_t,DWORD




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值