- 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通信机制及DLL机制
山东科技大学
操作系统课程设计报告
题目:Windows通信机制和DLL机制
姓名:安文龙
学号:200901051301
班级:计算机09-2班
指导老师:房胜
学院:信息科学与工程学院
目录
一:设计要求
二:背景知识
三:设计环境
四:设计思想
五:程序结构
六:关键代码分析:
七:运行结果及分析:
八:参考源代码
一:设计要求
编写一个Windows应用程序产生一个窗口,该窗口能对窗口上的消息进行响应,即当鼠标点击相应区域或菜单后,程序会调用自己编写的DLL函数给出结果。
编写一个DLL,至少包含两个以上的接口函数供上述应用程序调用。
使用C++Win32函数,而不是MFC框架,体会windows消息机制。
二:背景知识
图形化基于视图的应用程序中,窗口就是屏幕上的一块区域,在这块区域中,应用程序取得用户的输入,显示程序的输出.窗口区是应用程序显示输出的部分.应用程序必须提供一个称为窗口函数的回调函数来处理窗口的输入,向客户区显示输出.
动态链接库是应用程序的一部分,它的任何操作都是代表应用程序进行的,它作为模块被进程加载到自己的空间地址.动态链接库在编译时并不会被加载到可执行文件中,在程序运行时整个库的代码才会调入内存.
WinMain入口点:
函数功能:该函数被系统调用,作为一个32位应用程序的入口点。 函数原型: int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ); 参数: hInstance:应用程序当前事例的句柄。 hPrevlnstance:应用程序的先事例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32的位程序,该参数总为NULL。 lpCmdLine:指向应用程序命令行的空字符串的指针,不包括函数名。获得整个命令行,参看GetCommandLine。 nCmdShow:指明窗口如何显示。
窗口类的注册与创建:
函数原型:
HWND CreateWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HANDLE hlnstance,
LPVOID lpParam);
参数:
lpClassName:窗口类的名字。
lpWindowName:窗口名。
dwStyle:指定创建窗口的风格。
x:指定窗口的初始水平位置。
y:指定窗口的初始垂直位置。
nWidth:指定窗口的宽度。
nHeight:指定窗口的高度。
hWndParent:指向被创建窗口的父窗口或所有者窗口的句柄。
hMenu:菜单句柄。
hlnstance:与窗口相关的模块事例的句柄。
lpParam:指向一个值的指针,该值传递给窗口 WM_CREATE消息。
DLL 基本原理:???????? Windows系统平台上,你可以将独立的程序模块创建为较小的DLL(Dynamic Linkable Library)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。Microsoft Windows自己就将一些主要的系统功能以DLL模块的形式实现。例如IE中的一些基本功能就是由DLL文件实现的,它可以被其它应用程序调用和集成。一般来说,DLL是一种磁盘文件(通常带有DLL扩展名,是标准win32可执行文件-“PE”格式),它由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分,进程中所有线程都可以调用其中的函数。如果与其它DLL之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。DLL模块中包含各种导出函数,用于向外界提供服务。Windows在加载DLL模块时将进程函数调用与DLL文件的导出函数相匹配。
???????? 在Win32环境中,每个进程都复制了自己的读/写全局变量。如果想要与其它进程共享内存,必须使用内存映射文件或者声明一个共享数据段。DLL模块需要的堆栈内存都是从运行进程的堆栈中分配出来的。
???????? DLL文件中包含一个导出函数表(存在于PE的.edata节中)。这些导出函数由
您可能关注的文档
最近下载
- 室外工程施工方案(管网、绿化、铺装、道路、景观、给排水、电气).doc VIP
- 《老年人健康管理实务》课程标准.docx VIP
- 茶叶深加工与综合利用-PPT课件(全).pptx
- 高压变频器生产项目可行性研究报告申请报告.doc VIP
- 路基填筑分层公式表(自动计算每层高程及宽度) (2).xls VIP
- 24年法考易混淆知识点对比--民诉.pdf VIP
- 年度省社科基金项目申报统计表(填学科).doc VIP
- 2023年苏州大学计算机科学与技术专业《计算机组成原理》科目期末试卷B(有答案).docx VIP
- AI时代的力学教学.docx VIP
- 青少年实践教育基地建设项目可行性研究.pptx VIP
文档评论(0)