码制转换的问题(Unicode到Ascii)

shaowei1108   2007-1-11 23:46 楼主
if(strcmp((buffer = MySock->RecvMsg()),"") != 0)
                {
                                                len=MultiByteToWideChar( //计算从Ansi转换到Unicode后需要的字节数
                                CP_ACP,
                                MB_COMPOSITE,
                                buffer, //要转换的Ansi字符串
                                -1, //自动计算长度
                                0,
                                0
                                );
                       
                        temp = NULL;
                        temp = (TCHAR*)malloc(len*sizeof(TCHAR));
                                                MultiByteToWideChar( //从Ansi转换到Unicode字符
                                CP_ACP,
                                MB_COMPOSITE,
                                buffer,
                                -1,
                                temp, //转换到temp       
                                len//最多转换len个Unicode字符
                                );
                                                SendMessage(hwnd, WM_GETMESSAGE, (WPARAM)0, (LPARAM)temp);//给窗口发送消息
                }

SendMessage(GetDlgItem(hWnd,IDC_EDIT1), WM_SETTEXT, NULL, lParam);//这里先在一个EditBox里显示传过来的字符串。显示成功“1&2&3$on”
                        buf = NULL;
                        buf = (char*)malloc(256*sizeof(char));
                        len=WideCharToMultiByte( //计算从Unicode转换到Ansi后需要的字节数
                                CP_ACP, //根据ANSI code page转换
                                WC_COMPOSITECHECK | WC_DEFAULTCHAR, //转换出错用缺省字符代替
                                (LPTSTR)lParam, //要转换的字符串地址
                                sizeof((LPTSTR)lParam), //要转换的个数
                                0, //转换后字符串放置的地址
                                0, //最多转换字符的个数,为0表示返回转换Unicode后需要多少个字节
                                0, //缺省的字符:"\0"
                                0 //缺省的设置
                                );
                       
                        WideCharToMultiByte( //转换Unicode到Ansi
                                CP_ACP,
                                WC_COMPOSITECHECK | WC_DEFAULTCHAR,
                                (LPTSTR)lParamg,
                                sizeof((LPTSTR)lParam),
                                buf, //转换到缓冲区中
                                len, //最多128个字节
                                0,
                                0
                                );
                        if(strcmp(buf,"1&2&3$on")==0)
MessageBox(NULL,_T("equil"),NULL,NULL);//这里总是不弹出

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复