有很多win 32 api后面都跟个W是怎么回事,我用这样的api经常出现这样的编译错误:
cannot convert parameter 2 from 'char [256]' to 'LPCWSTR'
难道要包含某些头文件吗?
应当如何解决?

解决方案 »

  1.   

    A表示ANSI版本,W表示Unicode版本。
      

  2.   

    UNICODE,LPCWSTR?
      

  3.   

    建议在NT系列上 直接使用Unicode开发……
      

  4.   

    为了系统兼容,现在BOSS要求编码时必须支持UNICODE;另外那个‘LPCWSTR’好象眼熟啊?
      

  5.   

    LPCWSTR = const w_char *LPCTSRT 在Unicode宏定义下就是 LPCWSTR
      

  6.   

    这些东西在Windows SDK的文档里全都有的,MSDN里也有。
      

  7.   

    我在projiect属性中将是否使用unicode设置为NO,但错误依旧
      

  8.   

    char buffer[x];
    改为
    wchar_t buffer[x];
      

  9.   

     我用了很多strcpy这样的函数,这样的函数支持_T()吗?
      

  10.   

    _T()是一个宏,会根据你项目的字符集属性决定是char还是wchar_t。
    相应的字符串拷贝函数是_tcscpy,它也是这样的一个宏而已,根据字符集属性决定是strcpy还是wcscpy。
    对于API,“与字符相关的”一般都有A和W两个版本,不带A或W的却是极少数。
    比如MessageBox这个API是不存在,它也只是一个宏定义,根据字符集属性决定带上A还是W。
    如果你直接指明wcscpy却使用char*做参数,自然无法通过编译,同理你直接指明api的W版函数,却使用char*结果亦是枉然。
    其他的t宏,请在tchar.h里面搜索。