DWORD id;
UpdateData();
DATA senddata;
senddata。hWnd = this…》GetSafeHwnd();
·248 ·
…………………………………………………………Page 260……………………………………………………………
第 9 章 多线程
senddata。length = m_SendData。GetLength();
strcpy(senddata。data; (LPCTSTR)m_SendData);
senddata。pm = &m_m;
// 创建发送线程
CreateThread(NULL; 0; mSendProc; &senddata; 0; &id);
}
(7 )关闭串口
响应“关闭串口”按钮的单击事件,用来关闭串口,代码如下:
void CSmDlg::OnClose()
{
// TODO: Add your control notification handler code here
if( m_m。GetPortOpen() )
{
// 关闭串口
m_m。SetPortOpen(0);
}
}
(8)打开串口
响应“打开串口”按钮的单击事件,用来打开串口,代码如下:
void CSmDlg::OnOpen()
{
// TODO: Add your control notification handler code here
if( !m_m。GetPortOpen() )
{
// 打开串口
m_m。SetPortOpen(1);
}
}
(9 )退出
响应“退出”按钮的单击事件,用来释放资源,退出程序,代码如下:
void CSmDlg::OnCancel()
{
// TODO: Add extra cleanup here
// 释放互斥量资源
ReleaseMutex(g_hMutex);
// 关闭句柄
CloseHandle(g_hMutex);
·249 ·
…………………………………………………………Page 261……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
CDialog::OnCancel();
}
(10)运行结果
运行程序后,首先弹出“选择串口参数”对话框,选择需要的串口,如图 9…8 所示。
图 9…8 “设置串口参数”对话框
在程序主界面中,单击“发送”按钮,发送输入框中的内容会出现在另一个程序的接收
框中,如图 9…9 和图 9…10 所示。
为了更加简便,本节仅给出利用多线程串口发送数据的方法,读者若有兴趣可以自行实
现多线程控制多个串口的功能。
图 9…9 发送窗口 图 9…10 接收窗口
9。4 本章小结
本章主要介绍 Windows 操作系统下多线程的基本概念,如何创建和管理线程,以及线程
的同步问题。通过本章的介绍,读者可以看出,多线程程序设计通常比一般的单线程程序复
杂,在程序设计过程中,一定要考虑清楚各线程的关系,避免出现死锁或不同步的现象。另
外需要注意现在大多数用户使用的是单 CPU 计算机,在这种机器上运行多线程程序,有时反
而会降低系统的性能 。因此,在设计多线程应用程序时,应慎重选择,视具体情况加以处理,
使应用程序获得最佳的性能。
·250 ·
…………………………………………………………Page 262……………………………………………………………
第 10 章 动态链接库
第 10 章 动态链接库
动态链接库(Dynamic Link Library )是一个可执行模块,其包含的函数可以由 Windows
应用程序调用以执行一些功能,主要为应用程序模块提供服务。本章将全面、系统地阐述在
Visual C++平台下进行 Win32 动态链接库的设计和应用。主要包括下面几个方面的内容。
o 动态链接库(DLL )的基本知识。
o DLL 的出入口函数。
o 调用 DLL 中的两种方式。
o 开发 DLL 的方式。
o DLL 中资源的利用。
o 钩子(Hook )函数的应用方法。
为了使读者充分理解概念,对于动态链接库的开发,本章使用了“界面汉化”的示例来
说明资源在动态链接库中的使用 。钩子函数对于大多数读者来说可能是一项较为陌生的技术,
为了加深理解,这里列举了两个关于捕获消息的钩子函数示例,可以帮助读者更好地理解钩
子函数的原理和使用方法。
10。1 动态链接库的基础知识
比较大的应用程序都是由很多模块组成的,这些模块彼此协作,以完成整个软件系统的
工作。其中可能存在一些模块的功能较为通用,在构造其他软件系统时仍会被使用。在构造
软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE 文件中,会产生一些
问题。一是增加了应用程序的大小,这样会占用更多的磁盘空间,程序运行时也会消耗较大
的内存空间,造成系统资源的浪费;另外,在编写大的 EXE 程序时,每次修改重建时都必须
调整编译所有源代码,不但增加了编译过程的复杂性,也不利于阶段性的单元测试。
Windows 系统平台上提供了一种完全不同的有效编程和运行环境,可以将独立的程序模
块创建为较小的动态链接库(Dynamic Linkable Library )文件,并可对它们单独进行编译和
测试。在运行时,只有在 EXE 程序确实要调用这些 DLL 模块的情况下,系统才会将它们装
载到内存空间中。这种方式不仅减少了 EXE 文件的大小和对内存空间的需求,而且使这些
DLL 模块可以同时被多个应用程序使用,从而充分利用资源。Microsoft Windows 将一些主要
的系统功能以 DLL 模块的形式实现 。例如 IE 中的一些基本功能就是由 DLL 文件实现的,它
可以被其他应用程序调用和集成。一般来说,下面的这几种情况必须用到动态链接库技术。
o 多个应用程序共享代码和数据就是通过共享动态链接库实现的,比如 Office 软件的各
个组成部分有相似的外观和功能。
o 在钩子程序过滤系统消息时必须使用动态链接库。
o 设备驱动程序必须是动态链接库。
…………………………………………………………Page 263……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
o 如果要在对话框编辑器中使用自己定义的控件,也必须使用动态链接库。
o 动态链接库以一种自然的方式将一个大的应用程序划分为几个小的模块,有利于小组
内部成员的分工与合作。而且,各个模块可以独立升级。如果小组中的一个成员开发
了一组实用示例,他就可以把这些示例放在一个动态链接库中,让小组的其他成员使
用。
o 为了实现应用程序的国际化,往往需要使用动态链接库。使用动态链接库可以将针对
某一国家、语言的信息存放在其中。对于不同的版本,使用不同的动态链接库。在使
用 AppWizard 生成应用程序时,可以指定资源文件使用的语言,这就是通过提供不同
的动态
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言设计
- 作者:谭浩强1 C 语言概述1.1 C语言的发展过程1.2 当代最优秀的程序设计语言1.3 C语言版本1.4 C语言的特点1.5 面向对象的程序设计语言1.6 C和C+1.7 简单的C程序介绍1.8 输入和输出函数1.9 C源程序的结构特点1.10书写程序时应遵循的规则1.11C语言的字符集1.12
- 最新章:第45章
- 设计成婚:不入豪门
- 作者:海未央《设计成婚2:名门新娘》作品介绍《名门新娘》介绍:她是骆家收养的孤女,性格因为受他的影响,变得有些古灵精怪,也懂得是非之分!他说他的一切只为他而努力,可是为什么要拒绝自己呢?什么?没有满十八岁?那今天生日,够十八岁了吧?什么,还太小?太过分了,这不是耍着自己玩吗?嘿嘿,有个邪恶的老师,那
- 最新章:第196章
- 玄学,从入门到放弃
- 《玄学,从入门到放弃》作者:李传言文案:周诣一手拿着卜卦,一手拿着《演员的自我修养,叹息良久。他本是百年前观天占星的玄术师,谁知却一朝重生现代。他只想平淡地生活下去,可天不遂人愿,他注定将在这末法时代掀起波澜!成就一代影帝!谢千仇沉默地看着他…大师,你卦和书都拿倒了#玄学,从入门到放弃,入土,删库跑
- 最新章:第86章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 要你言听计从
- 作者:决明第一章哈士奇,没有护卫看家的本领,对主人、客人甚至是闯空门的恶人都一样友善,咬着皮球跟小偷一块玩你丢我捡也不用太惊讶,时常被人认为忠诚度不足。贺世祺背靠在冰冷玻璃落地窗前,一整间屋子都是伸手不见五指的黑暗,也好,反正他现在什么也不需要看到,只要耳朵还有听觉就好,顺便听听贴在耳边的手机里还要
- 最新章:第28章