客户提供的打开设备的函数CanDevOpen(),需要一个LPCTSTR类型的设备名
可是在Unicode编码下,CanDevOpen(_T("IFCAN1")),却会打开失败
但是在Ansi编码下,CanDevOpen("IFCAN1"),是可以成功打开设备的现在我如何能在Unicode编码下,打开这个设备呢?
也就是在Unicode编码下,只让CanDevOpen()这一个函数接受Ansi编码的字符串呢?

解决方案 »

  1.   

    USES_CONVERSION;
    CString str(_T("IFCAN1"));
    CanDevOpen(W2A(str.getbuffer(str.getlength()))); 试试看
      

  2.   

    Unicode下能不能使用需要看CanDevOpen这个函数是否有Unicode的版本
    比如一个普通的API函数CreateFile就存在两个版本 CreateFileA(ANSI)版本和 CreateFileW(Unicode版本)
    如果你使用的API函数没有 "W" 的实现,那就不能使用Unicode的版本
      

  3.   

    直接用CanDevOpen("IFCAN1")好了,你客户给的函数可能没有Unicode的版本,只有Ansi版本的。那你就直接用Ansi版本好了。
      

  4.   

    一般的外部设备如果接收英文字符串,不太可能支持UNICODE,所以自己转换是正道。
      

  5.   

    你直接写成("...")不就完了,不用_T("...");
    CanDevOpen的Unicode版本没有实现?
      

  6.   

    用户的那个库,虽然写着LPCTSTR,但是实际上是个ansi库,所以LPCTSTR根本上就是char *的,所以你只需要修改一个头文件或修改一下typedef语句,将LPCTSTR改为const char *就行了,或者char *也行。
      

  7.   

    这样会报类似于"char无法转换到LCPTSTR的错误"