LPCTSTR】的更多相关文章

DWORD:本来被定义为unsigned long,DWORD的含义就是双字,一个字是2字节,双字就是32字节. 但是在C/C++中,经常会用到把一个指针转换成数字储存,然后再将其传唤为指针调用.那么在32位系统下,指针是32位长度的,在64位系统下,指针是64位长度的,所以微软引入了DWORD_PTR和INT_PTR等带_PTR的类型,这些类型是这么保证的:将指针转换成带_PTR的类型然后再转换回来,可以得到原始的指针,不会发生截断.在实现上,DWORD_PTR在32位程序和64位程序的定义是…
转自:http://blog.sina.com.cn/s/blog_4aa4593d0100odra.html 问题的原因是字符串ANSI和Unicode编码的区别, VC6与VS2003等默认使用ANSI编码,而VS2005默认采用Unicode.简单的说,ANSI用1个字节表示字符,Unicode用2个字节表示1个字符.若想要你的代码在VS2005中编译通过,3中方法:1.可修改编码选项:项目属性-->配置属性-->常规-->字符集-->使用多字节字符集2.把你字符串定义为宽字…
L表示long指针       这是为了兼容Windows  3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中,  long指针和near指针及far修饰符都是为了兼容的作用.没有实际意义.      P表示这是一个指针:C表示是一个常量:T表示在Win32环境中,  有一个_T宏,这个宏用来表示你的字符是否使用UNICODE,  如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串:STR表…
转自http://blog.chinaunix.net/uid-7608308-id-2048125.html 简介:这是DWORD及LPCTSTR类型的了解的详细页面,介绍了和类,有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处 首先声明,这都是在网上找的资料,我再整理修改的: 一:关于DWORD DWORD就是32bit的unsigned  long无符号长整型,DWORD是双字类型 ,4个字节,API函数中有很多参数和返回值是DWORD的. 二:如何…
编译程序的时候出现这样的错误,原因是在新建MFC项目的时候,设置字符集Unicode的属性. 解决方法一: 在VC2010的解决方案管理器窗口内,右击你的项目“项目”,然后选“属性”(最后一项),再点“配置属性”,是个“+”号,把它展开,然后选“常规”选项卡,倒数第三项“字符集”,选择“使用多字节字符集”.问题解决. 不过还是建议使用Unicode,否则你的程序将有很大的局限性:要是你的程序只在西方发布还好,但毕竟是适应中国大陆的程序吧,所以建议使用Unicode. 解决方法二: 使用调用CSt…
UNICODE:它是用两个字节表示一个字符的方法.比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节.UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义. MBCS,它是多字节字符集,它是不定长表示世界文字的编码.MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但表示其他文字时就需要用多字…
1. Unicode字符集: 它是用两个字节表示一个字符的方法.比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节.UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义. 2. MCBS字符集: 即多字节字符集,它是不定长表示世界文字的编码.MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但…
VS2010 (VC2010)建立工程时默认的字符集是Unicode,所以在代码中使用MessageBox时需要输入Unicode,用TEXT()这个宏输入参数,否则会报错:   代码:MessageBox(TEXT("消息对话框"),TEXT("提示"), MB_OK|MB_OKCANCEL);   错误:error C2664: "CWnd::MessageBoxW": 不能将参数 1 从"const char [3]"转…
試試用強制轉換變數型態的方法吧,像這樣(LPCTSTR)"WinSun",若不行再試L"WinSun",再不行試_L"WinSun".…
引用 LPSTR.LPCSTR.LPTSTR.LPCTSTR.LPWSTR及LPCWSTR的意义及区别 1.ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式.ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节. 2.Unicode:用两个字节表示一个字符的编码方式.比如字符'A'在ASCII下面用一个字节表示,而在Unicode下面用两个字节表示,其中高字节用“0”填充:函数'程'在ASCII下面用两个字节表示,而在Unicode下面也是用两个字节表…
LPCTSTR类型: L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用.没有实际意义. P表示这是一个指针 C表示是一个常量 T表示在Win32环境中, 有一个_T宏 STR表示这个变量是一个字符串>>>>>>>> A 32-bit pointer to a constant character string that is…
我用的是VS2005,在编译MFC时遇到了如下错误: error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'char *' to 'LPCTSTR' 后来发现解决方法很简单,点击"项目"->"属性"->"配置属性"->"常规"->"字符集"选择"使用多字节字符集" 问题解决,后来发现…
#ifdef UNICODE#define LPCTSTR LPCWSTR#else#define LPCTSTR LPCSTR#endif      LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS. An LPCWSTR if UNICODE is defined, an LPCSTR otherwise.LPCWSTR Pointer to a cons…
首先在编译程序时经常会遇到这种问题: 错误 1 error C2664: "CWnd::MessageBoxW": 不能将参数 1 从"const char [3]"转换为"LPCTSTR" 1.觉得很烦,一般的做法就是不管三七二十一,在字符串前面加一个'L':如调用函数FUN(LPCTSTR str)时,不能  FUN("HELLO"); 而是FUN(L"HELLO");通常这样做都比较能解决问题.2.或…
        类   型     MBCS  UNICODE TCHAR char char WCHAR wchar_t wchar_t LPSTR char* char* LPCSTR const char* const char* LPWSTR wchar_t* wchar_t* LPCWSTR const wchar_t* const wchar_t* LPTSTR TCHAR* TCHAR* LPCTSTR const TCHAR* const TCHAR*             相…
原文:http://www.cnblogs.com/GT_Andy/archive/2011/01/18/1938605.html 一.定义 1.CString:动态的TCHAR数组.它是一个完全独立的类,封装了+等操作符和字符串操作方法. 2.BSTR:专有格式的字符串(需要使用系统函数来操纵).定义为:typedef OLECHAR FAR* BSTR 3.LPCTSTR:常量的TCHAR指针.定义为:typedef const char* LPCTSTR 二.要点 1.char*:指向AN…
今天在使用vs2008+MFC时候,使用editControl的replacesel(“”)发生报错.如下::不能将参数1从“const char []”转换为“LPCTSTR” 其解决方案就是, 在项目属性里面找到项目默认值下面的字符集, 将其换为:使用多字节字符集就ok了.原因: typedef   LPCTSTR    LPTSTR ; #ifndef   _UNICODE      typedef   TCHAR   char;  #else      typedef   TCHAR  …
LPSTR = char* LPCSTR = const char* LPTSTR: 如果定义了UNICODE宏,那么LPTSTR = wchar_t*否则LPTSTR = char* LPCTSTR: 如果定义了UNICODE宏,那么LPCTSTR = const wchar_t*,否则LPCSTR = const char* 告诉你方法, "LP"前缀是历史遗留的,在Win32下就是 P ,代表指针的含义. "C"代表const "T"的含义…
CString->char* CString strSource;//宣告CString char* charSource; //宣告char* 法1: charSource = (char*)strSource.GetBuffer(0); 法2: charSource = (char*)strSource.GetBuffer(strSource.GetLength()); 法3: charSource = (char*)(LPCTSTR)strSource; char*->CString c…
注意,编写有 Unicode 意识的代码总是一件好事,比如: CString graycat = CString(_T("Gray")) + _T("Cat"); 这将使得你的代码可以直接移植.   1, 将参数从"const char *"转换为"LPCTSTR" 使用_T.L.TEXT等转换宏 MyFunZipCp(_T("C:\\SY.txt"),_T("C:\\SY.ZIP"),…
LPCTSTR用来表示字符是否使用UNICODE. 如果程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串. 类型理解:L,表示long指针.这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用.没有实际意义.P,表示这是一个指针.C,表示是一个常量.T,表示在Win32环境中, 有一个_T宏.STR,表示这个变量…
1.ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式.ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节.   2.Unicode:用两个字节表示一个字符的编码方式.比如字符'A'在ASCII下面用一个字节表示,而在Unicode下面用两个字节表示,其中高字节用“0”填充:函数'程'在ASCII下面用两个字节表示,而在Unicode下面也是用两个字节表示.Unicode的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义.…
标签: 杂谈 分类: VC     char*   是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容.        LP的含义是长指针(long   pointer).LPSTR是一个指向以‘’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR.而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPST…
(1)在ANSI字符集下 LPCTSTR想当于LPCSTR,当中L指long.P指Point,C指Const.在程序中能够直接用char*类型的数据对LPCSTR进行赋值,用下述语句: LPCSTR a1= "abc"; string a2 = "abcde"; a1 = a2.c_str(); (2)在Unicode字符集下 LPCTSTR相当于LPCWSTR.它相当于wchar_t.能够用下述的语句对它进行赋值 LPCWSTR a1; wstring a2; a…
类型理解 LPCTSTR类型: L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32位操作系统中, long指针和near指针及far修饰符都是为了兼容的作用.没有实际意义. P表示这是一个指针 C表示是一个常量 T表示在Win32环境中, 有一个_T宏 STR表示这个变量是一个字符串 详细释义       这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UN…
vs2008提示 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR” 在外面用vs2005编写mfc程序的时候经常要MessageBox("提示信息")函数,在vc6.0是没有问题的,但是在vs2005却会有下面的提示: error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [17]”转换为“LPCTSTR” 这个错误提示的原因是VS20…
LPCTSTR lpStr = "123456789";int i=CString(lpStr).GetLength();…
UNICODE:它是用两个字节表示一个字符的方法.比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节.UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义. MBCS,它是多字节字符集,它是不定长表示世界文字的编码.MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因),但表示其他文字时就需要用多字…
转自原文 error C2440 “static_cast” 无法从“void (__thiscall C* )(void)... error C2440: “static_cast”: 无法从“LRESULT (__thiscall CTextProgressCtrl::* )(UINT,LPCTSTR)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM). 开发平台由VC6.0升级至VS2005以上的版本,需要将原有的项目迁移,可能碰到类似错误:…
转: const char to LPCTSTR不能转化问题 Visual C++ 2008里cannot convert parameter 1 from 'const char [13]' to 'LPCTSTR'造成不能运行的原因主要是2005和2008中增加了一些参数类型的安全性检查,所以通常在6.0没有问题的LPCTSTR与 const char之间的转换到了这里就玩不转.微软给出的解决办法有两个: Change your project configuration to use mu…