MFC 视频捕获 问题

MFC 视频捕获 问题

解决这个问题的确要用到多线程,在建立这一个MFC的工程的时候默认的会建立一个进程,而这个进程里面会有一个默认的主线程;也就是说进程是线程的的容器。如果在细分的话线程是由内核对象和线程堆栈组成的,这些事基础知识,如果想了解的话可以查阅相关书籍..这里就不细说了。 线程分为两类,工作者线程和用户界面线程,工作者线程也是在后台完成计算,不需要与用户交互;用户界面线程可以处理自己的消息队列中的消息。 你的情况可以再开一个工作者线程在后台来完成文件的生成,而界面上的交互可以教给主线程就可以了。 MFC封装了一个线程基类CWinThread,也可自己继承来实现自己想要的功能,在MSDN中也用详细的说明。简单一点主要用到它的成员函数AfxBeginThread()这个函数主要注意头两个参数即可,第一个是控制函数的指针,也就是你要这个线程实现什么功能只要把代码放进这个函数里面即可(这个函数是自己创建的,然后你把这函数传递过来就可以了,要强制转换函数类型为AFX_THREADPROC),第二个参数是一个LPVOID的空指针,也就是为了方便传递参数,因为你在此线程外定义的变量不能在此线程中直接使用,只能通过这个LPVOID类型的空指针来传递(也可以通过定义全局变量来使用,但此时你的线程函数要定义为静态..说到这就开始繁琐了所以不建议用这种方法) 简单的步骤就是 1、定义一个线程成员变量;(例如:CWinThread* m_myThread;) 2、创建一个线程函数(例如:UINT SaveData(LPVOID pParam)然后算法代码就可以放在里面,而参数通过pParam来传递) 3、启动线程;(例如:m_myThread=AfxBeginThread((AFX_THREADPROC)SaveData,pParam)) 4、最后终止进程,有多种方法,最简单的一种就是在线程函数中的最后调用AfxEndThread(0); 一个简单的多线程就完成了,提醒的就是在使用多线程的时候注意对共享资源的控制(也就是要用到互斥体对象),以免造成程序死锁和数据错误。 写得很乱,希望对你有帮助,建议多看一些相关书籍和学着别人写程序。