有一个edit控件用于输入中文字符,绑定cstring型变量m_editin。
想使用如下函数
void UniToAsc(LPCWSTR uniBuff, LPSTR asciBuff)
{
 DWORD iLen;
 iLen = WideCharToMultiByte(CP_ACP, 0, uniBuff, -1, NULL, 0, NULL, NULL);
 WideCharToMultiByte(CP_ACP, 0, uniBuff, -1, asciBuff, iLen, NULL, NULL);
}我遇到的问题是,怎么样将m_editin的cstring类型,转换成LPCWSTR的类型,从而可以使用该函数呢?
请帮帮我!

解决方案 »

  1.   

    LPCWSTR lpstr;lpstr = m_editin.GetBuffer(0);试试
      

  2.   

    你为什么需要转换呢,中文也是Ascii表示的,只不过用两个而已。不过可以这样转换:
    CStringW strW(m_editin);
    (LPCWSTR)strW;
      

  3.   

    好好吃饭:你的方法我用了,很遗憾啊,好像不行。
    broadoceans:我是新手,你的CStringW是个类型吗?我看不明白(呵呵,可别笑话我啊)。我就想搞个小程序,输入几个汉字,然后按一下“ok”键,就显示出该汉字的unicode编码。
    初步打算就用afxmessagebox来显示。
    各位能否帮助我啊?
    有源程序参考就再好不过啦!:)
      

  4.   

    CStringW是16为的string
    CStringW strW(m_editin);UniToAsc((LPCWSTR)strW, asciBuff)
    这看不动吗?
      

  5.   

    我觉得你只是这样解决不了问题,
    如果要做到支持UNICODE,整个工程编译方式是用UNCODE方式才能解决问题。
    当定义了_UNICODE编译宏之后,MFC类库都是以UNICODE方式编译的,也就是说CSting类自动替换为是
    CStringW类,自动支持UNICODE。
    不过要支持UNICODE编译,编码必须采用UNICODE方式,具体的就是用TCHAR代替char,用_T("字符串")
    代替"字符串"常量,另外还有字符串操作函数如strcpy/strlen都要使用相应的T类的函数。可以通过
    MSDN找到对于的函数。
      

  6.   

    yanzai8848(yanzai)说的对,应该在把工程的属性里面改为UNICODE才行