欢迎来到天天文库
浏览记录
ID:40231643
大小:97.00 KB
页数:19页
时间:2019-07-27
《Windows程序运行原理42954》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Windows程序内部运行原理Windows应用程序,操作系统,计算机硬件之间的相互关系关于API向下的箭头③表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是应用程序。关于API那么,应用程序是如何通知操作系统执行某个功能的呢?应用程序也是以函数调用的方式来通知操作系统执行相
2、应的功能的。操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(ApplicationProgrammingInterface),简称WindowsAPI。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。关于消息及消息队列向上的箭头④表示操作系统能够将输入设备的变化上传给应用程序。如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的
3、是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。关于消息及消息队列操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序,参看MSDN。MSG结构定义如下:typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;关于MSD
4、N关于句柄句柄(HANDLE),资源的标识。操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。从变量的类型区分变量的用途intx,y;x=30;y=30;//x和y既可以用来表示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。typedefintWIDTHtypedefintHEIGH
5、TWIDTHx;HEIGHTy;//好处:我们从变量的类型上就可以知道x和y是用来表示宽度和高度。WinMain函数Windows程序的入口函数intWINAPIWinMain(HINSTANCEhInstance,//handletocurrentinstanceHINSTANCEhPrevInstance,//handletopreviousinstanceLPSTRlpCmdLine,//commandlineintnCmdShow//showstate);窗口的创建创建一个完整的窗口需要经过下面四个操作步骤:设
6、计一个窗口类;注册窗口类;创建窗口;显示及更新窗口。设计窗口类typedefstruct_WNDCLASS{UINTstyle;WNDPROClpfnWndProc;intcbClsExtra;intcbWndExtra;HANDLEhInstance;HICONhIcon;HCURSORhCursor;HBRUSHhbrBackground;LPCTSTRlpszMenuName;LPCTSTRlpszClassName;}WNDCLASS;例:窗口类的类型我们经常根据特征的英文拼写的大写去定义一些宏。使用gotod
7、efinition就能发现CS_VREDRAW=0x0001,CS_HREDRAW=0x0002,CS_DBLCLKS=0x0008,CS_NOCLOSE=0x0200。他们的共同点就是只有一位为1,其余位都为0。如果我们希望某一变量的数值既有CS_VREDRAW特性,又有CS_HREDRAW特性,我们只需使用二进制OR(
8、)操作符将他们进行或运算相组合,如style=CS_VREDRAW
9、CS_HREDRAW
10、CS_NOCLOSE。窗口过程函数第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数,也称回调
11、函数。回调函数的原理是这样的,当应用程序收到给某一窗口的消息时,就应该调用某一函数来处理这条消息。这一调用过程不用应用程序自己来实施,而由操作系统来完成,但是,回调函数本身的代码必须由应用程序自己完成。窗口过程函数举例:汽车厂家生产汽车好比应用程序创建窗口,用户使用汽车好比操作系统管理窗口,某种汽车在销售前就指定好了修理站(类似回
此文档下载收益归作者所有