- 1、本文档共415页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows系统开发 全套知识介绍.ppt
3、添加消息处理函数实现代码: UINT CMultithreadView::MessageFunc(WPARAM wParam,LPARAM lParam) { CString str; str.Format (线程%d运行第%d次,lParam,wParam); CClientDC dc(this); dc.TextOut(0,y,str); y=y+20; return 0; } 例2:建立对话框程序,该程序包含两个线程,一个线程向数组中写A,一个线程向数据中写B,数组中的数据分别写入对应的编辑框中 1、新建基于对话框的应用程序Sync,设计对话框如上所示界面 按钮控件ID: ID_BUTTONA ID_BUTTONB 编辑框控件ID: IDC_EDITA IDC_EDITB 2、通过ClassWizard为编辑框分别添加CEdit类控制成员变量 3、为按钮添加BN_CLICKED消息处理函数OnButtona()和OnButttonb() 4、在SyncDlg.h头文件中定义线程处理函数: UINT writeA(LPVOID lParam); UINT writeB(LPVOID lParam); 在源文件中添加实现: void Point::output(int x,int y) { HWND hwnd=GetForegroundWindow(); //获取客户前景窗口的句柄 HDC hdc=GetDC(hwnd); char buf[20]; memset(buf ,0,20); sprintf(buf,x=%d,y=%d,x,y); TextOut(hdc,0,0,buf,strlen(buf)); ReleaseDC(hwnd,hdc); } //当调用此函数时将x,y值输出到调用者的客户窗口 在客户端程序DllTest中添加按钮,ID为IDC_BTN_OUTPUT,Caption为output,双击,并添加代码: Point pt; pt.output(5,3); 编译运行 查看导出函数: 打开cmd→ cd Dll1 →cd debug →dumpbin –exports dll1.dll 查看导入函数: 打开cmd →cd dlltest →cd debug →dumpbin –imports dlltest.exe 问题:若不想将整个类导出,而只导出类中的一个函数,那么修改头文件为: class /*Dll1_API*/ Point { public: Dll1_API void output(int x,int y); void test();//为了验证其它函数没有导出 } 在源文件中添加实现: void Point::test() { } 编译 使用dumpbin –exports dll1.dll查看 C++编译器会将函数名字改编(使用dumpbin时可以看到),如果调用者使用c编写程序去调用导出函数,则可能找不到。 而上述事例中动态链接库程序和测试端程序采用相同的编译器,因此可以找到 在实际使用过程中我们希望函数名不进行改编, 在Dll1.cpp上方修改如下代码: #define Dll1_API extern “C”_declspec(dllexport) 将类的定义及相关实现注释掉(extern “C”不能导出类) 大写 使用dumpbin命令查看导出函数,可以看到和源程序中的名称完全一致,即没有进行名字改编 在测试程序中将类相关代码注释掉,并修改代码: #define Dll1_API extern “C”_declspec(dllimport) 编译运行 注:为了保证程序正确运行,应使用extern “C”(解决C++和C之间调用问题) 使用DEF文件导出 新建工程→MFC AppWizard(dll)→工程名为Dll2 →默认动态链接库 在源文件dll2.cpp中添加代码: int add(int a,int b) { return a+b; } int subtract(int a,int b) { return a-b; } 打开文本文件Dll2.def(包含exe或dll文件的声明) 必须包含的语句: LIBRARY:指出dll的名字 EXPORTS:列出被导出函数的名字 在EXPORTS下面添加代码: add subtract 编译,并使用dump
您可能关注的文档
- VisualBasic.Net程序设计课件第14讲 参数传递与 及作用域.ppt
- VisualBasic.Net程序设计课件第19讲 常用控件与 及界面设计.ppt
- VisualBasic.Net程序设计课件第20讲 综合设计与 及实践.ppt
- visualization的秘密(关于自我思考的作用)教材.ppt
- VITA 玻璃渗透全瓷知识介绍.ppt
- vitd缺乏性佝偻病 教材课程.ppt
- vocabulary for unit5 active reading1东南大学四级英语教材.ppt
- vofr4 技能评估体系教材.ppt
- volume 1 - unit 1 大学英语基础教程1教材.ppt
- volume 1 - unit 2 大学英语基础教程1教材.ppt
- Windows线程同步和互斥 操作系统教材.ppt
- Windows进程和进程间通信 操作系统教材.ppt
- WJ-CH03-模式识别-线性分类-02 英文版 幻灯片课件.ppt
- WJ-CH04-模式识别-非线性分类 英文版 培训资料.ppt
- WJ-CH05-模式识别-模式选择 英文版 演示教学.ppt
- WJ-CH06-模式识别-模式产生 英文版 教学文稿.ppt
- WJ-CH07-模式识别-模板匹配 英文版 幻灯片课件.ppt
- WJ-CH08-模式识别-上下文分类 英文版 演示教学.ppt
- WJ-CH09-模式识别-系统评价 英文版 教学教案.ppt
- WJ-CH10-模式识别-聚类算法-01 英文版 教学文稿.ppt
最近下载
- (中联牌)W6013-6A 操作手册(20200207).pdf VIP
- 英美经典作家作品导读智慧树知到期末考试答案2024年.docx
- 2024届河北省部分高中高三二模地理试卷.doc VIP
- 《研究型病房建设和配置标准》.pdf
- 外科学第八版 胸部损伤.pptx
- 汽车造型与改装技术专业教学标准(高等职业教育专科).pdf
- 第二单元动物的一生单元测试卷-2020-2021学年科学三年级下册-教科版(含答案).doc VIP
- 电力系统分析课程设计复杂网络牛顿—拉夫逊法潮流分析与计算的设计.doc VIP
- 自学倪海厦老师人纪黄帝内经笔记.docx
- 2023年高考江苏卷物理真题(解析版).pdf VIP
文档评论(0)