Windows中没有多进程的概念,只有多线程。
在MFC中一般使用AfxBeginThread来启动工作者线程,用新建类,然后new这个类后调用CreateThread方法来启动界面线程。
工作者线程和界面线程的区别是:界面线程比工作者线程多一个可接收windows消息的功能,也就是说,我们可以给界面线程发送自定义消息,让界面线程响应。
来一份工作者线程的代码样例:

// 定义工作者线程函数
UINT ThreadScanSockets(LPVOID pParam)
{int i = 0;while (1) {TRACE("ThreadScanSockets %d\n", ++i);}
}// 调用方法:
AfxBeginThread(ThreadScanSockets, NULL);

界面线程的创建相对复杂,步骤如下:
1、点菜单的查看–建立类向导,Add Class… – New…。
2、填写类名称,如CMyThread,Base Class选择CWinThread,点OK按钮(我这里提示无法打开MyThread.h,其实已经创建成功了,关闭窗口就行了,这个是VC的bug):

3、注意首先把头文件里的构造函数、析构函数改为public类型。定义一个自定义的用户消息,因为这个类主要是要响应一些消息做一些事情(WM_USER+N), N >= 0:

#define WM_MSG_FIREUIMSG (WM_USER+11) // 用户自定义消息

4、注册消息函数,如下所示(注意你只需要添加ON_THREAD_MESSAGE到这个位置即可,其它代码VC已经自动生成了):

BEGIN_MESSAGE_MAP(CMyThreadMsg, CWinThread)//{{AFX_MSG_MAP(CFireUIThreadMsg)ON_THREAD_MESSAGE(WM_MSG_FIREUIMSG, CMyThreadMsg::FireUIWork)// NOTE - the ClassWizard will add and remove mapping macros here.//}}AFX_MSG_MAP
END_MESSAGE_MAP()

5、剩下的懂C++编程的同学就都懂了,在.h文件里增加:

afx_msg void FireUIWork(WPARAM wpParam, LPARAM lpParam); // 消息处理函数

然后实现它!

void CMyThreadMsg::FireUIWork(WPARAM wpParam, LPARAM lpParam)
{TRACE("FireUIWork: wpParam=%d lpParam=%d\n", wpParam, lpParam);
}

6、创建线程并运行:

// 定义全局变量
CFireUIThreadMsg *g_pThread = NULL;
// 其它代码.......
g_pThread = new CFireUIThreadMsg();
g_pThread ->CreateThread();

7、给该线程发送消息:
界面某个位置创建一个按钮,在按钮响应函数里增加下面的代码:
g_pThread->PostThreadMessage(WM_MSG_FIREUIMSG, 100, 200);

调试程序看看效果吧。

VC6.0++ MFC多线程运行相关推荐

  1. VC6.0 MFC 模拟弹簧运动(改进版)

    VC6.0 MFC 模拟弹簧运动(改进版) 一.内容描述 运用VC6.0新建工程MFC AppWizard(exe),创建单文档应用程序,画一个弹簧(用矩形代替),下面挂有重物(用圆代替),设定重物质 ...

  2. vc6.0 mfc一些函数明明调用语法正确,但是提示函数或者函数参数未定义等问题解决方法。

    使用vc6.0 mfc 编写程序时一些函数在正常声明.调用的情况下提示函数参数未定义等问题时 如调用EnumDisplayMonitors()会提示下面问题 运行后,出现以下问题: Compiling ...

  3. VC6.0 MFC 列表框 列表控件 添加 修改 删除

    VC6.0 MFC 列表框 列表控件 添加 修改 删除 写在前面:列表框是很常用,并且很重要的一个控件,那么接下来,就跟随我的脚步,去探索它的奥秘吧! 一.未卜先知 1.编译运行后,点击"学 ...

  4. VC6.0 MFC 时钟运动 调用对话框设置时间

    时钟运动 源码下载链接(免费) 问题描述 在VC6.0的MFC中画一个钟表,有时针.分针.秒针,并实现时针.分针.秒针的运动. 最终部分静态效果图如下: 操作详细过程 1.新建 1.打开VC6.0,点 ...

  5. 使用VC6.0创建和运行C程序的方法

    使用VC6.0可以有快捷的方式创建C程序,对于初学者,建议按照如下方式创建.先创建一个工作区,然后创建工程,最后在工程中创建源文件文件.理解工作区.工程与文件之间的关系. 转载于:https://ww ...

  6. VC6.0 MFC 单文档 机器人巡检

    机器人巡检 一.整体框架 主要包括三个类:场景类(CChangJing):机器人类(小车(CCar).无人机(CWuRenJi)):煤气泄露类(CMeiQiXieLou). 二.场景类 目标主要是数据 ...

  7. VC6.0 MFC 单文档 五子棋游戏 基础入门

    五子棋游戏 一.整体思路 1.目的:通过五子棋,掌握面向对象的思想,这是我们的目的.提升分析问题.解决问题的能力,在做项目之前要有一个系统的思路,第一步干什么,第二步干什么-- 2.思路:拿到这个问题 ...

  8. VC6.0读取Excel文件数据

    VC6.0读取Excel文件数据 文件存储在Excel文件中,因此第一步是能够在程序中方便地读取表格数据,这里用的是VC6.0 MFC.文章内容仅供参考,程序不完整. 完整的VC6.0相关程序,需要的 ...

  9. vc6.0到vs2015版本转换问题

    在vc6.0下可以运行的程序在往vs2015转换后不能运行.问题如下: 1.int变量未标识,常见于在for循环里声明的int. 2. #define MAX 10 在vc6.0中MAX的调用既可以是 ...

最新文章

  1. 《从paxos到zookeeper》学习笔记(一)
  2. springboot Serving Web Content with Spring MVC
  3. java classloader_Java Classloader原理分析
  4. android产品设计,Android产品设计
  5. 商业逻辑12讲之人力资源的逻辑
  6. 【PHP入门到精通】:Ch05:字符串处理
  7. matlab 码表,0-254 ascii 码表
  8. ubuntu下vscode字体间距 空格间距太小 增大间距
  9. android imagebutton 动画,android – ImageButton Icon Tint基于State
  10. android与单片机wifi通信原理图,单片机怎么和wifi模块实现通讯_wifi模块与单片机通信原理 - 全文...
  11. Token是什么 Token登录认证
  12. QQ空间 安卓App热补丁动态修复技术介绍
  13. 绿地控股2020年净利润下滑约7%,销售金额同比减少7.7%
  14. WINZIP压缩文件怎么加密?
  15. slam优化库,优化方法,G2o Ceres的学习
  16. 农村商业银行与中国农业银行的区别
  17. android 原生分享文件,Android原生文件分享
  18. 软件测试黑盒测试代码,软件测试黑盒测试代码.doc
  19. 5.1-python爬虫之Scrapy框架及入门
  20. 高通 UEFI:ABL(一)

热门文章

  1. 如何把图片批量转为jpg格式?
  2. 2.淘宝店铺轮播图装修方法代码
  3. 学校计算机室教师寄语,计算机与信息学院师生寄语2019届毕业生
  4. pydicom读取头文件_pydicom读取压缩格式的DICOM图像报错的解决方案
  5. 单幅图像去雾算法研究综述
  6. 图像处理进阶——去雾算法
  7. 使用java发邮件,附jar包
  8. Task3:Selenium模块学习及丁香园模拟登录爬取留言板
  9. VISHAY(威世通)样片申请与经验
  10. 如何利用Matlab制作色卡,手把手教你做一张属于自己的色卡,彩铅必备!