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:错误图标 丫的写完了,都一点多了,靠,明天哈要上班。

windows 程序设计 第一章相关推荐

  1. wi ndows ap i,windows程序设计第二章Unicode简介.doc

    windows程序设计第二章Unicode简介.doc Unico?de简介 在第一章中,我已经预告?,C语言中在?Micro?soft Windo?ws程序设?计中扮演着?重要角色的?任何部分都?会 ...

  2. c语言中调用一个程序设计,第一章 C语言程序设计概述

    1 计算机体系结构 计算机主要由硬件和软件的协作完成生活和工作中的绝大多数事情,例如听音乐,看电影,上网聊天,购物等等. 硬件主要包含CPU,内存,外存,IO设备等组成. CPU:负责从内存中读取进程 ...

  3. PL/SQL程序设计 第一章 PL/SQL 程序设计简介

    PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.除此之外,可以在O ...

  4. python程序设计第一章答案_Python《学习手册:第一章-习题》

    人们选择Python的六大主要原因是什么? 软件质量:Python注重可读性.一致性和软件质量.Python代码的设计致力于可读性,因此具备了比传统脚本语言更优秀的可重用性和可维护性. Python的 ...

  5. python内置函数用来返回列表、元组、字典_python程序设计第一章基础知识 题库及选解...

    由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 填空 1. Python安装扩展库常用的是()工具.(pip) 2. Python标准库m ...

  6. python程序设计第一章答案_Python语言程序程序设计-第一章习题解答

    作为一名非计算机专业毕业的学生,一直想学Python用来解决工作中遇到的问题,但是对计算机一直摸不到好的门路,于是买到了Python语言程序程序设计这本书,用做习题的形式,积累自己的学习成果,相信不怕 ...

  7. javascript高级程序设计第一章

    看后总结: 1.javascript的组成成分:ECMAscript+DOM+BOM

  8. C++Primer Plus (第六版)阅读笔记 + 源码分析【第一章:预备知识】

    第一章:预备知识 C++简介 C++简史 C语言 C语言编程原理 面向对象编程 C++和泛型编程 C++的起源 可移植性和标准 程序创建的技巧 创建源代码文件 编译和链接 UNIX Linux Win ...

  9. python程序设计第二章序列类型 题库及选解

    由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 python程序设计题库完整版 https://blog.csdn.net/lijia11 ...

最新文章

  1. 第五次作业:四则运算之升级
  2. 8 种方案解决重复提交问题!你选择哪一种呀?
  3. 对比let、const、var的异同
  4. Reactor:深入理解reactor core
  5. 【成长点滴】对SMART原则的一些粗浅理解
  6. 智慧交通day02-车流量检测实现05:小车匀速案例
  7. ActiveMQ配置文档
  8. matlab误比特率,[转载]使用Matlab进行误比特率仿真
  9. Uninstalling ASP.NET MVC 1.1 after installing Visual Studio 2010 beta 2
  10. 用python画八卦图-使用turtle绘制太极八卦图
  11. H264 帧、pps 、sps
  12. 已锁定 java.lang.Object@25ff46f5
  13. 【Caffe实践】基于CNN的性别、年龄识别的代码实现
  14. go技术文章梳理(2018)
  15. 测试工具(一)——Abbot 测试SWT
  16. 【年度总结】回顾2021,展望2022,老杨来了
  17. node生成唯一设备id(node-machine-id)
  18. 成功解决 RecoveryYour PC/Device needs to be repairedThe Boot c onfiguration Data for your PC is missin
  19. PMP常考知识点核对单-10.沟通管理
  20. MVC模式 与 如何实现struts MVC模式

热门文章

  1. 移动端h5页面软键盘弹出后 背景图片被顶上去
  2. 随机变量的定义分类和各种主要概率密度分布介绍
  3. php大写数字转换,PHP将阿拉伯数字转换成汉字大写支持小数点
  4. UML-认识六种箭头,轻松读懂UML图
  5. Win10笔记本触控板关闭/打开
  6. 怎么开发一个小程序?从零开始手把手教你
  7. 【论文】AlexNet 一
  8. 图片+文案(在图片上)
  9. 基于javaweb的蓝天幼儿园管理系统(java+springboot+thymeleaf+html+mysql)
  10. Hfut | 集电竞赛指南