windows 程序设计 第一章

MD,在公司实在蛋疼,每天捣鼓那些废码子,看到哥们有本windows程序设计,闲来没事总结总结,提高提高,也免得回家闲着蛋都碎了。
 

          第一章简单一些,多是概念,也不用太深入看,当然要是全记住,跟同行吹牛逼倒也很拉风,比如window 98是哪年生的,盖茨他爹是哪年挂的之类的,前半部分有个比较重要的概念,说是重要是因为跟学校里学的c不同,我称之为重要。

         动态链接:所谓的动态链接,就是在用的时候再链接,多他娘的简明。打个比喻,c语言(非window编程)在编译的时候把所有程序中调用的函数都生成机器码都给你装到exe里面,而window编程不是这样,你在程序中调用的API函数,它只留下个地址,在你运行exe的时候,会有一个动态链接的进程控制程序根据地址去windows系统中找到这个函数执行(这些函数大都在C:\windows\system32目录下的dll里面),有人又可能说不一定是exe,有可能是dll之类的,奶奶的,扣字眼就木法活了。

 下面看一个牛X的程序:
                 
    

                          #include<windows.h>

                           int WINAPI WinMain(HINSTANCE hInstance,
                                        HINSTANCE hPrevInstance,
                                        PSTR szCmdLine,  
                                        int iCmdShow)
                           {
                               MessageBox(NULL, TEXT("HELLO 凤姐"), TEXT("love"), 0);
                               return 0;
                           }



                其实这个程序老霸道了,要是某位仁兄说不会编译建工程,建议你找个没人的地方自己狠劲掳掳,我说是掳掳你自己的脑袋,下面分析分析:

               第一行不用说,都一样,头文件包含#include<windows.h>,据说是最重要的一个头文件,据猜测应该相当于c语言里面的iostream,总之包上没错。

               第二行 :int WINAPI WinMain( HINSTANCE hInstance,

                                                                 HINSTANCE hPrevInstance,                                         

                                                                 PSTR szCmdLine,                                           

                                                                 int iCmdShow)

这个就相当于c语言里面的main函数,长得不太一样,有些人可能觉得不习惯,那没办法,就长这样。

            从左向右看,int不用说了吧,int main()这c语言里面的也有。

            第二个WINAPI,这个在windef.h文件里面有如下定义 #define WINAPI  _stdcall,         这规定了在windows中该函数的的调用约定,什么叫调用约定?就是调用时候的规矩,比如在调用堆栈中如何放置该函数的参数,顺序了之类的,只需要记住,这就是在WinMain函数的返回值类型之后 windows规定了该函数的调用时候的规范就行了。

            第三个 WinMain,他娘的这就是个名字。

                 再看参数,你要说为啥要弄4个长那么难看的参数,我也不知道,就是那么搞的。

                            第一个 HINSTANCE hInstance, 这个HINSTANCE 是个句柄类型,什么是句柄?那你需要百度,相当于无符号整形,但你不能直接当无符号int用,为啥?因为人家是句柄类型,只是不能直接用,你强制转换也是可以理解滴, HINSTANCE hInstance就是定义了一个句柄类型,这个句柄类型代表了这个程序本身 ,表示了这个程序本身这个实例HINSTANCE 可以这样记忆:H-〉 handle,handle+instance,句柄+实例 。

                             第二个参数HINSTANCE hPrevInstance, 对于win32程序,这个总是为null,什么叫win32?实在不知道就认为你写的都是win32,反正你现在用不到这个hPrevInstance, 但是初意是为了表示先前的程序句柄,比如你泡了两个马子,这个就代表第一个 ,相对于现在的女友,第一个就是prev,prev不是你已经甩了,俩都在运行着,只是同一个程序同时运行两次,先后顺序不一样,记忆方式:handle+prev+instance,prev本身就有上一个的意思。

                            第三个 :PSTR szCmdLine, PSTR 理解起来就是pointer+string,相当于char*,这个szCmdLine就是通过命令行运行程序的时候的那个命令的字符串,这个szCmdLine的sz的意思就是s指的是string,z指的是zero,合起来就是表示以“\0"结尾的字符串,这其实就是windows程序以前变量命名的规范,比如下面第四个参数iCmdShow中的i就代表了int,说明这个变量是int型。

                            第四个:int iCmdShow,说明窗口如何显示,比如hide了,normal了之类,这个现在用不到,以后用到会说明。

 

             函数调用:MessageBox(NULL, TEXT("HELLO 凤姐"), TEXT("love"), 0);,这就是传说中的信息框,MessageBox,总共有4个参数,就是一副麻将的人数啊,日了,函数原型是这样的:

int    WINAPI   MessageBoxA( HWND hWnd ,LPCSTR lpText, LPCSTR lpCaption, UINT uType);

这只是其中一个, 也有个MessageBoxW,宽字符的,不用管它,参数都一样。

                         第一个参数:HWND hWnd,指的是 这个消息框的拥有者,也就是父窗口,当设为NULL,表示没有父窗口。

                         第二个参数:LPCSTR lpText, 注意这个LPCSTR跟前面WinMain里面的PSTR长的不一样了,LPCSTR就是 const+long+LPSTR,常字符串,这个参数就是你要在消息框中要显示的消息了,这个程序中有个TEXT()这个宏用来增加程序的可移植性,比如在Unicode字符集下TEXT("AAA"),就相当于L“AAA”,L宏表示是Uncode字符,而在ASCII集下TEXT("AAA")相当于“AAA”

                        第三个参数:LPCSTR lpCaption,就是标题。

                        第四个参数:UINT uType,就是类型,这个类型说白了就是错误提示啊,还是警告提示等,比如错误提示就会显示个红叉,警告提示就会显示一个叹号,这就是图标类型,消息框下面的按钮,不同的类型也不一样,比如只显示一个ok按键,或者还显示cancel按键等,下面是一些类型,彼此可以用 “|" 组合,比如“MB_OK|MB_ICONERROR"

                       按钮类型:

                           MB_ABORTRETRYIGNORE:消息框含有三个按钮:Abort,Retry和Ignore。        

                                 MB_OK:消息框含有一个按钮:OK。这是缺省值。        

                                 MB_OKCANCEL:消息框含有两个按钮:OK和Cancel。                         

                                 MB_RETRYCANCEL:消息框含有两个按钮:Retry和Cancel。            

                                 MB_YESNO:消息框含有两个按钮:Yes和No。               

                                 MB_YESNOCANCEL:消息框含有三个按钮:Yes,No和Cancel。            

                     图标类型:                    

                           MB_ICONWARNING:一个惊叹号出现在消息框。       

                                 MB_ICONINFORMATION:一个信息标识                    

                                 MB_ICONASTERISK:一个圆圈中小写字母i组成的图标出现在消息框。                           

                                 MB_ICONQUESTION:一个问题标记图标出现在消息框。                       

                                 MB_ICONSTOP: //停止图标                    

                                 MB_ICONERROR:错误图标 丫的写完了,都一点多了,靠,明天哈要上班。  

                      

 

 

                           

          

     

 

 

 

 

       

     

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值