windows 程序设计 第二章 (上)
2013-05-14 23:33
239 查看
今天领导没去,老激动了,跟我旁边的叼丝大哥扯了一天蛋,解了俩bug就匆匆回家吃饭饭了,奶奶个锤子的,程序里竟然还有20年前写的代码,让我不胜感慨自己那个年轻哟。
第二章其实也比较简单,就是要记得东西比较多,我建议就是先记住主要的,能立即马上现在就用的,不然几十个名称记忆,会忘记很快,记住主要的,其他的以后见到用到,一看,靠!丫都长得差不多,就都记住了。
第二章的内容主要可以分为三部分,第一,为啥有了ASCii还要整个UNICODE。第二,windows编程中字符(ASCii和UNICODE)类型的定义,第三,常见的一些通用函数( ASCii和UNICODE类型都能处理的
)
第一,为啥有了ASCii还要整个UNICODE。
他娘的,天朝威武,那么多字,ASCii只用7位标识,装不开啊,记住是7位!,一个字节有8位,但ASCii只用7位,最高的那个位永远是0,当然说天朝有点目光短浅了,但说白了,他娘的就是美国鬼子设计的时候鼠目寸光,只考虑了自己国家的,只想省兜里那几分钱了,所以就有了UNICODE,UNICODE用16位,所以几乎能涵盖全宇宙最常用的字符,包括火星文。
第二,windows编程中字符(ASCii和UNICODE)类型的定义。
对不起兄弟姐妹们,标题没表达简洁,说白了就是与字符相关的类型定义,拿c语言来说,定义字符类型用啥?char! 卧槽,答对了,由char又引申出来char[],char*,差不多就这些锤子。但是我们现在在学的是windows编程,windows编程有自己的字符定义方式,但三种类型是与上面差不多的,这就好记了,来个对应就行了。
C语言: char char[] char*
windows 8位(ASCii): CHAR CHAR[] (PCHAR, PSTR, LPSTR)
windows 16位(UNICODE): WCHAR WCHAR[] (PWCHAR, PWSTR, LPWSTR)
关于char* 我只列出了3个,先记住这三个就够了,
如果是 ------> const char* ,
那对应的就是---> ASCii(PCCHAR, PCSTR, LPCSTR)
UNICODE( PCWSTR, LPCWSTR)
在中间加了一个C而已,擦,看清楚了,没有PWCCHAR这个玩意。
到这里了,就能想到,你说一个狗日的码农,写个程序又要考虑ASCII字符集,又要考虑UNICODE的,太他娘的蛋疼了,所以微软的包子们弄了一些通用的,这就简单了,就是用PTCHAR/ PTSTR/ LPTSTR,大家不要搞糊涂了,其实这三个是一样的类型,只是长的不一样,可能又觉得废柴,明明一样,非要搞那么多种干嘛,操,谁他娘的说不是了,估计这是为了每一种写法在字面意思上能体现不同的含义。
我没看具体的在WINNT.H里面这些是怎么弄的,但是按我的理解肯定是使用这种类似的定义的:
#ifdef UNICODE
typedef WCHAR * PTSTR *LPTSTR
#else
typedef CHAR *PTSTR *LPTSTR
#endif
靠,差不多就那么个意思,不对欢迎指正。
我们要将一个字符串写成ASCII和UNICODE字符集下都能用的可以这样写_T("AAA")或TEXT(“AAA”)
类型定义完了要干啥?要用,要处理,所以处理的函数来了。
第三:常见的一些通用函数( ASCii和UNICODE类型都能处理的 )
跟上面的一样,写程序的时候不可能,当然也有可能啊,不绝对,我说的是在脑子没被驴踢的情况下,谁都不愿意写2 个功能一样的长的一样的函数 而只为了处理字符集不同,在ASCii下strlen()和UNICODE夏的wcslen()都是获取字符数,所以这种情况下就需要定义一些通用的字符处理函数,名字如下:
lstrlen(PTSTR s)
lstrcpy(PTSTR s,PTSTR o)
lstrcpyn(PTSTR s,PTSTR o,count)
lstrcat(PTSTR s,PTSTR o)
lstrcmp(PTSTR s,PTSTR o)
lstrcmpi(PTSTR s,PTSTR o)
欧了,第二张差不多就这些内容,最后面还有个程序,放到下一次写.
第二章其实也比较简单,就是要记得东西比较多,我建议就是先记住主要的,能立即马上现在就用的,不然几十个名称记忆,会忘记很快,记住主要的,其他的以后见到用到,一看,靠!丫都长得差不多,就都记住了。
第二章的内容主要可以分为三部分,第一,为啥有了ASCii还要整个UNICODE。第二,windows编程中字符(ASCii和UNICODE)类型的定义,第三,常见的一些通用函数( ASCii和UNICODE类型都能处理的
)
第一,为啥有了ASCii还要整个UNICODE。
他娘的,天朝威武,那么多字,ASCii只用7位标识,装不开啊,记住是7位!,一个字节有8位,但ASCii只用7位,最高的那个位永远是0,当然说天朝有点目光短浅了,但说白了,他娘的就是美国鬼子设计的时候鼠目寸光,只考虑了自己国家的,只想省兜里那几分钱了,所以就有了UNICODE,UNICODE用16位,所以几乎能涵盖全宇宙最常用的字符,包括火星文。
第二,windows编程中字符(ASCii和UNICODE)类型的定义。
对不起兄弟姐妹们,标题没表达简洁,说白了就是与字符相关的类型定义,拿c语言来说,定义字符类型用啥?char! 卧槽,答对了,由char又引申出来char[],char*,差不多就这些锤子。但是我们现在在学的是windows编程,windows编程有自己的字符定义方式,但三种类型是与上面差不多的,这就好记了,来个对应就行了。
C语言: char char[] char*
windows 8位(ASCii): CHAR CHAR[] (PCHAR, PSTR, LPSTR)
windows 16位(UNICODE): WCHAR WCHAR[] (PWCHAR, PWSTR, LPWSTR)
关于char* 我只列出了3个,先记住这三个就够了,
如果是 ------> const char* ,
那对应的就是---> ASCii(PCCHAR, PCSTR, LPCSTR)
UNICODE( PCWSTR, LPCWSTR)
在中间加了一个C而已,擦,看清楚了,没有PWCCHAR这个玩意。
到这里了,就能想到,你说一个狗日的码农,写个程序又要考虑ASCII字符集,又要考虑UNICODE的,太他娘的蛋疼了,所以微软的包子们弄了一些通用的,这就简单了,就是用PTCHAR/ PTSTR/ LPTSTR,大家不要搞糊涂了,其实这三个是一样的类型,只是长的不一样,可能又觉得废柴,明明一样,非要搞那么多种干嘛,操,谁他娘的说不是了,估计这是为了每一种写法在字面意思上能体现不同的含义。
我没看具体的在WINNT.H里面这些是怎么弄的,但是按我的理解肯定是使用这种类似的定义的:
#ifdef UNICODE
typedef WCHAR * PTSTR *LPTSTR
#else
typedef CHAR *PTSTR *LPTSTR
#endif
靠,差不多就那么个意思,不对欢迎指正。
我们要将一个字符串写成ASCII和UNICODE字符集下都能用的可以这样写_T("AAA")或TEXT(“AAA”)
类型定义完了要干啥?要用,要处理,所以处理的函数来了。
第三:常见的一些通用函数( ASCii和UNICODE类型都能处理的 )
跟上面的一样,写程序的时候不可能,当然也有可能啊,不绝对,我说的是在脑子没被驴踢的情况下,谁都不愿意写2 个功能一样的长的一样的函数 而只为了处理字符集不同,在ASCii下strlen()和UNICODE夏的wcslen()都是获取字符数,所以这种情况下就需要定义一些通用的字符处理函数,名字如下:
lstrlen(PTSTR s)
lstrcpy(PTSTR s,PTSTR o)
lstrcpyn(PTSTR s,PTSTR o,count)
lstrcat(PTSTR s,PTSTR o)
lstrcmp(PTSTR s,PTSTR o)
lstrcmpi(PTSTR s,PTSTR o)
欧了,第二张差不多就这些内容,最后面还有个程序,放到下一次写.
相关文章推荐
- windows程序设计第二章-Unicode简介
- windows程序设计第二章-Unicode简介
- windows 程序设计 第二章(下)
- [学习笔记]Windows程序设计:第二章 UNICODE
- windows程序设计第二章学习笔记
- MFC Windows 程序设计 第二章 在窗口中绘图
- windows程序设计:第二章:Unicode简介
- Windows程序设计-王艳平.pdf==> 第二章
- windows程序设计「BLOWUP.C」范例分析笔记
- C语言程序设计 第二章 数据类型
- Windows程序设计-HelloWorld
- C语言程序设计 练习题参考答案 第二章
- Windows Shell编程-第二章.Shell的结构
- C语言Windows程序设计->第三天->属于自己的窗口
- Windows环境下32位汇编语言程序设计
- Windows程序设计-键盘
- 第二章 shell程序设计(2)
- 【入门】C程序设计(第三版)谭浩强―第二章
- 第七章 对话框的子控件 windows程序设计 王艳平版
- Java语言程序设计 第二章(2.7)