您的位置:首页 > 其它

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)

欧了,第二张差不多就这些内容,最后面还有个程序,放到下一次写.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: