C++ VS环境下unicode编码的位数问题
我在vs里建立了一个项目,在项目的常规选项卡里使用的字符集是Unicode字符集,使用API写了一个获取字符输入的东西,大致如下typedefstructWORDD{in...
我在vs里建立了一个项目,在项目的常规选项卡里使用的字符集是Unicode字符集,使用API写了一个获取字符输入的东西,大致如下
typedef struct WORDD
{
int serial_number; //字符的个数
int size; //本行空间大小
TCHAR * word; //存储该行的数据,一次申请80个空间,不足再申请80个
struct WORDD * prior; //上一行
struct WORDD * next; //下一行
}WORDD;
case WM_CHAR: { // 字符消息
TCHAR code = (TCHAR)wParam;
InsertSimpleChar(Yray, Xray, code);//yray表示的是第几行,xray表示的是第几个字符,都从0开始计算
_UpdateWindow(hWnd);
::SetCaretPos(4+Xray*8,15+Yray*20);
} break;
问题出在SetCaretPos上,查了Unicode说每个字符占2个字节,也就是16位,我设置Xray*16时,插字符位置设置正确,输入数字和英文就不正确了,更可怕的是我发现英文w和r对于插字符来说还不一样。这个问题该怎么办 展开
typedef struct WORDD
{
int serial_number; //字符的个数
int size; //本行空间大小
TCHAR * word; //存储该行的数据,一次申请80个空间,不足再申请80个
struct WORDD * prior; //上一行
struct WORDD * next; //下一行
}WORDD;
case WM_CHAR: { // 字符消息
TCHAR code = (TCHAR)wParam;
InsertSimpleChar(Yray, Xray, code);//yray表示的是第几行,xray表示的是第几个字符,都从0开始计算
_UpdateWindow(hWnd);
::SetCaretPos(4+Xray*8,15+Yray*20);
} break;
问题出在SetCaretPos上,查了Unicode说每个字符占2个字节,也就是16位,我设置Xray*16时,插字符位置设置正确,输入数字和英文就不正确了,更可怕的是我发现英文w和r对于插字符来说还不一样。这个问题该怎么办 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询