《Delphi程序设计与应用教程》电子教案-2837 第七章Windows编程基础.pptx

《Delphi程序设计与应用教程》电子教案-2837 第七章Windows编程基础.pptx

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章Windows编程基础;7.1 动态链接库(DLL);一、什么是DLL;二、DLL项目文件;DLL项目文件的格式如下: library 程序标识符号; uses 单元列表; exports 过程和函数标识符列表; begin 程序体; end.;三、创建DLL;四、DLL中的初始化代码;五、调用DLL;2. 动态引入 不必在应用程序启动时立即静态引入DLL,可在程序运行的必要时刻,动态引入DLL。动态方式不仅灵活,而且较为安全。缺陷是:若DLL文件较大,且引入时为首次引 导加载,则影响运行速度。;7.2 Windows API及其函数;一、Windows API函数分类;二、API函数调用;7.3 消息处理;一、Windows的消息机制;消息的数据结构在Windows中被定义为如下的记录类型: TMessage = record Msg: Cardinal; WParam: Word; LParam: Longint; Result: Longint; end;;消息定义为如下的TMsg记录类型: TMsg = packed record hwnd: HWND; message: UINT; wParam: WPARAM; lParam: LPARAM; time: DWORD; pt: TPoint; end;;二、Delphi的消息处理;三、发送消息;四、响应消息;2. 覆盖组件继承的虚拟方法 DefaultHandler 在继承类中对DefaultHandler过程进行覆盖,同样可以实现类似于前一种方法的消息过 滤。;3. 自定义消息和消息处理方法 Windows预定义了1024个编码从$0000到 $03FF的消息常量标识符,留出从$0400到 $7FFF的编码空间用于用户自定义消息。其中的$0400已定义为WM_USER。因此,自定义消息常量标识符的形式如下: const WM_UserMsgName = WM_USER + N; //其中,0<=N<=31743;4. TApplication的onmessage事件 每当应用程序从消息队列中检索到一个消息 时,便触发Application的onmessage事件。由此,在消息被派送到对其响应和处理的 目标对象之前,有机会处理该消息。;7.4 多线程编程;一、进程与线程;进程由下列部分组成: l 一个私有的、4GB大小的虚拟地址空间; l 程序相关的代码和数据; l 操作系统分配给进程的系统资源,如文件、单独的消息队列、同步对象等; l 至少包含一个线程,这个线程称为主线程,通过它可以创建或控制其他线程。;进程本身并不直接执行代码,进程内的基本执行单元是线程。一个进程可以包含多个线程,每个线程都可以独立运行,并保持各自的堆栈和寄存器的值。一个线程可以控制另一个线程的执行,一个进程内的各个线程共享该进程的虚拟空间和系统资源。而不同进程之间则互不干扰。;二、TThread类;TThread类的属性 Suspended属性、Terminated属性、Priority属性、 FreeOnTerminate属性、ReturnValue属性。 TThread类的方法 Create方法、Execute方法、Suspend方法、 Resume方法、Terminate方法、DoTerminate方法、Synchronize方法、WaitFor方法 TThread类的事件 TThread仅定义了一个OnTerminate事件,当线程对象运行终止时触发该事件。编写该事件代码,可用于通知应用程序的主线程该线程已结束运 行。;三、创建线程类;四、线程的优先级与线程调度;五、线程的挂起、恢复和终止;六、线程的协调;2. 线程同步 一个线程需要等待其他线程的任务结束才能继续,那么可以暂时挂起线程。有下列两种情况: 等待其他线程终止 等待一个作业完成;7.5 文件访问;一、Pascal方式的文件访问;二、Windows API方式的文件访问

文档评论(0)

151****1054 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档