qintangtao

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年12月19日

摘要: L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP 与P是等效的。P表示这是一个指针。T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。STR表示这个变量是一个字符串。C表示是一个常量,const。LPTSTR: 如果定义了UNICOD 阅读全文
posted @ 2012-12-19 18:04 qintangtao 阅读(362) 评论(0) 推荐(0) 编辑

摘要: 字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。以下是别人的总结:一、在字符串前加一个L作用: 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。 strlen("asd") = 3; st 阅读全文
posted @ 2012-12-19 17:58 qintangtao 阅读(268) 评论(0) 推荐(0) 编辑

摘要: 假如现在有一个类型为LPARAM的变量lParam,要将其转化为CString类型,可以:①CString str((char*)lParam); --构造函数②CString str;str=(char*)lParam; --运算符重载③使用CString的格式化函数:CString str;str.format("%s", (char*)iParam);④一个行不通的办法!但是仔细一看却和方法②相差无几。CString str=(char*)lParam; --拷贝构造函数 (此时会编译不成功。提示:“初始化”: 无法从“char *”转换为“ATL::CStringT 阅读全文
posted @ 2012-12-19 16:41 qintangtao 阅读(5936) 评论(0) 推荐(0) 编辑