Windows应用程序与动态链接库.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows应用程序与动态链接库

设计1 Windows应用程序与动态链接库 一、设计目的 1、通过编写一个Windows窗口应用程序,了解Windows编程的基本方法,理解Windows操作系统的消息通信机制; 2、通过编写一个动态链接库,体会程序执行时的动态链接过程,掌握DLL的基本原理及其导入与导出。 二、设计要求 (1)编写一个Windows应用程序,要求产生一个简单的窗口。在该窗口的菜单栏中有一个Menu菜单,其中包含三个菜单项:Menu1,Menu2和Exit.单击菜单项Menu1,在菜单的客户区显示“Hwllo from menu1!”;单击菜单Menu2,在窗口的客户区显示“Hello from menu2!”;单击Exit,退出程序。 (2)编写一个Dll,其中含有两个函数Func1和Func2可供应用程序调用,这两个函数的功能均为返回一个字符串。Func1返回的字符串是“Hello from Func1,this function was called from ...”其中“...”为调用该函数的应用程序的名称与路径.Func2返回的字符串与此相同。 (3)修改第一项创建的应用程序,使得当单击菜单项Menu1时调用第2项创建的Dll中的Func1,获得Func1返回的字符串,并将其显示在窗口的客户区中。单击菜单项Menu2时调用Func2,并完成类似的操作。 (4)要求使用C编程,不允许使用MFC,以便体会Windows应用程序的消息机制。要求创建新工程时使用empty project,程序中的所有代码均由自己完成(包括窗口和菜单的创建),不用VC++自动生成代码 三、设计说明 3.1具体设计 (1)对应于三个要求有三个工程:相应有三个文件夹:app,dll,app_dll。下面分别加以说明。 对于第一个程序app1,这个程序就是输出一个字符串来说明单击了哪个选项。示例程序没有写resource文件,在建立win32工程的时候选择了empty工程,并把所有的代码写到了一个app1.cpp文件里。并把添加菜单的工作用函数实现了,所以没有直接去写resource文件。 (2)dll文件夹下放了动态链接库程序,用来实现相应的函数功能。编译后生成dll文件dll.dll。 dll_cpp文件夹下放了一个由app改动后的app_dll.cpp的源文件,并把dll文件夹下的头文件(dll.h)放在了这里,并建立了一个win32工程一起编译连接运行。 (3)这里用的是隐式调用dll的方法,最简单的实现是把dll文件夹下的dll.dll放到app_dll的debug中,并把dll.lib文件引入。 3.2流程图: (1)dll.h部分 声明函数function1和function2为导出函数。形式如下: EXPORT PCSTR function1(HINSTANCE hinstance); EXPORT PCSTR function2(HINSTANCE hinstance); (2)dll.cpp部分 分别实现导出函数function1和function2。其功能为返回字符串”Hello from Func1(2),this function was called from ……”,其中”……”为调用该函数的应用程序的名称与路径。 (1)主函数部分 该主函数中只是引用了dll文件,通过#include “dll.h”来实现。其他与第一个程序中的一样。 (2)子程序部分(消息处理函数部分) 此处的消息处理函数的程序流程图与第一个程序中的消息处理函数的类似,只是实现显示字符串模块不同而已。后者直接实现显示字符串,而前者通过调用动态链接库中的导出函数实现。 主函数模块,即WinMain函数部分。 如下页图 四、运行结果及分析 (1)实验结果: 1.编译运行后出现下面的窗体: 依次点击Menu1和Menu2后出现的运行结果如下: 点击Exit后退出。 2.编译运行后出现如下所示的窗体: 依次点击窗体中的Menu1,Munu2后窗体变成如下所示: 点击Exit后退出。 五.总结: 1、第三个程序中需要将dll.h,dll.cpp和app_dll.cpp添加到一个工程中。 2.窗口函数是一个回调函数,它由Windows调用,应用程序并不会直接调用它的窗口函数。 3.CreateWindow并不能显示窗口,所以要利用ShowWindow将窗口显示在屏幕上。调用UpdateWindow传送一个WM_PAINT给窗口以驱动窗口的绘图操作。 4、DLL就是一个可执行程序模块,模块中包含了可以被其他应用程序或其他DLL共享的程序代码和资源。 5、DLL与C++类的区别在于,类是创建时的模块,而DLL是运行时的模块,链接是在程序运行时动态

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档