windows 程序设计 第二章 (上)

        今天领导没去,老激动了,跟我旁边的叼丝大哥扯了一天蛋,解了俩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)  

 

欧了,第二张差不多就这些内容,最后面还有个程序,放到下一次写.                            

   

 

                                                

                                                           

 

 

                      

 

         

 

                 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值