- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                Windows程序内部运行机制
1.1 API与SDK
Visual Studio 2005这个是一个庞大的体系(包含很多的内容:Visual C++ 2005、Visual C# 2005等),它是建立在.NET技术的基础之上的。
API:Application Programming Interface,应用程序编程接口,实际上就是微软给程序员提供的一系列的编程函数库,程序员利用这这些函数,可以方便地编写自己的应用程序(主要是在Windows下的应用程序),这些函数都是面向过程OP的(结构化的程序设计方法思想,与面向对象OO相区别),就像我们普通的C程序一样,一步一步地运行。而面向对象的思想是完全的。
Win32 SDK:Software Development Kit,软件开发包,在这个包中,就将上面的一系列的函数包装成了面向对象的(以类的形式)给程序员进行开发。
MSDN:微软的帮助文档。
1.2 窗口与句柄
窗口(window)可以有一个父窗口,当然也可以没有。
句柄:Handle,实际上是一个long型的变量,当然在VC中,指针pointer也是long型,所以,Handle也是指针。Windows通过Handle来区别不同的对象(主要是窗口中),并对他们进行管理。窗口的Handle就是窗口句柄,用HWND来标识。
1.3 消息与消息队列
1、消息:Message。
Windows与DOS的运行机制是完全不同的。
在DOS中,我们是以中断的方式来,用中断的最主要的缺点1)中断是采用程序轮询方式(就是程序进入一个死循环,不断地查询这个事件是否已经发生),这样,不管事件是否已经发生,CPU都在运行,大量地浪费了CPU时间。2)中断是阻塞方式的,如果这个事件还没有发生,则程序就不会返回,会一直地运行下去。这样就无法实现多道程序设计(多线程)。
消息方式:现在的操作系统如Windows、Linux、UNIX等,都使用消息机制。消息机制是建立在消息(Message)基础之上的:用户如果使用消息机制进行编程,如建立了一个按钮,这个按钮用户可以点击,但是,我们编程不需要循环来检测这个按钮何时被用户点击,而是将这个交给了操作系统,操作系统会感知这个按钮是否被点击,如果被点击,则操作系统会生成一个消息来告诉我们的程序,这样我们的程序可以进行处理。
typedef  struct  message{
    HWND?hwnd;		//消息所属的窗口句柄
    UINT?message;		//消息的类型,如0x0001表示什么消息,在Windows中,以WM_XXXX来指明这是属于什么消息,方便程序员的记忆,如WM_LBUTTONDOWN等。
    WPARAM?wParam;	//消息的附加信息,如鼠标按下去的消息,
    LPARAM?lParam;	//
    DWORD?time;		//消息形成的时间
    POINT?pt;			//消息形成的坐标,主要对鼠标消息有用
} MSG, *PMSG;
UINT:无符号的int类型,unsigned int。
POINT,坐标类型
2、消息队列
在Windows系统中,经常会生成大量的消息,这些消息需要一个一个地投送出去,因此,在投送之前,需要保存好,先将它们放在一个队列中,然后遍历这个队列,将消息一个一个发送出去。
有可能会造成死锁,如果消息产生得太快,处理不过来,系统会进入一种死机一样的模式。最经常出现这种情况的就是定时器,如果我们将定时器的时间设得太短(如1毫秒),而处理一个消息需要的时间又大于1毫秒,则消息就处理不过来。
有一些消息,Windows会智能化,处理不过来的不重要的消息,会直接丢掉。
3、进队消息和不进队消息
1.4 WinMain函数
1.4.1  WinMain函数的定义
我们知道,在C程序中,都是以main函数开始运行的,但是在Windows 32位(像XP、Windows 2000都是32位的)系统中(Win 32)。程序的入口就是WinMain函数。
int?WinMain(??????
????HINSTANCE?hInstance,		//实例句柄,就是当前这个应用程序的句柄
????HINSTANCE?hPrevInstance,	//在Win32下,这个参数总是NULL
????LPSTR?lpCmdLine,			//命令行字符串
????int?nCmdShow				//窗口的显示方式(是显示还是隐藏)
);
这四个参数由操作系统自动设置好值,我们不要改变它们,但是我们可以将他们保存起来,后面可能有用。
LPSTR:long point string,以空(NULL)结尾的字符串指针。
长指针:一个指针中不但包含了offse
                您可能关注的文档
最近下载
- 专题突破10 几何辅助线与模型(10)——对角互补.pptx VIP
 - 第8课《回忆鲁迅先生》课件 (共45张ppt) 2025-2026学年统编版语文八年级上册.pptx VIP
 - Oracle集群-DG.doc VIP
 - 电解槽电气绝缘资料.pptx VIP
 - 2025兴业银行总行国际业务部交易银行部招聘笔试模拟试题及答案解析.docx VIP
 - 竖炉扩容方案.pdf VIP
 - 工业机器人离线编程与仿真(ABB)高职全套教学课件.pptx VIP
 - ORACLE12CRAC+DG集群容灾主备部署搭建.docx VIP
 - 2025广东东莞农村商业银行校园招聘笔试历年典型考题及考点剖析附带答案详解.docx
 - 南宁老友粉品牌评价 区域公用品牌.docx VIP
 
原创力文档
                        

文档评论(0)