在MFC中类内部建立线程处理函数以便调用类的成员函数和变量
2014-08-17 19:33
351 查看
在用MFC做开发时,有时遇到些工作线程中有些状态需要在界面上显示,最直观的就是工作线程处理函数的进度显示。这时候我们就需要在线程内部调用类的成员函数和变量了。下面给出一种最直观,最简单的一种处理方法。
类中声明线程函数:
class CAudioREGDlg : public CDialogEx
创建线程
AfxBeginThread(MyThreadFunction,this);\\传入this指针
线程函数函数体
个人比较喜欢这种方法,有其他方法后续再慢慢补充。
类中声明线程函数:
class CAudioREGDlg : public CDialogEx
{ // 构造 public: CAudioREGDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 .... static UINT MyThreadFunction(LPVOID pParam); ... };
创建线程
AfxBeginThread(MyThreadFunction,this);\\传入this指针
线程函数函数体
UINT CAudioREGDlg::MyThreadFunction(LPVOID pParam) { CAudioREGDlg *p = (CAudioREGDlg*)pParam;//使用指针p调用成员 char *infilename = NULL; USES_CONVERSION; infilename = T2A(p->filePath); char outfilename[10] = "temp.txt"; int ret = p->AudioReg_login(); if ( ret != MSP_SUCCESS ) { printf("MSPLogin failed , Error code %d.\n",ret); //return -1; } int Finish = p->audio2text(infilename,outfilename); if (Finish == 0) { p->statusText = "识别已完成"; p->GetDlgItem(regStatus)->SetWindowTextW(p->statusText); p->GetDlgItem(Start_Button)->EnableWindow(TRUE); } MSPLogout();//退出登录 return 0; }
个人比较喜欢这种方法,有其他方法后续再慢慢补充。
相关文章推荐
- 跨线程调用MFC成员函数
- 【8.17】建立一个用来实现求3个数和的类模板(将成员函数定义在类模板的内部),并写出调用此类模板的完整程序。
- c++调用类内部使用成员变量和inline函数的区别
- MFC中 新建类与基本类 基本类内成员变量、函数调用
- 如何在MFC线程中使用控件的成员变量和函数
- linux C++ 类成员函数中创建线程,且能访问类中其他成员变量
- MFC界面包装类-多线程时成员函数调用的断言失败
- 线程函数能调用成员函数吗?
- MFC应用程序消息处理及其窗口创建和销毁过程函数调用顺序
- MFC界面包装类 ——多线程时成员函数调用
- function ain=innerfun() ain=2*b;内部函数调用外部变量
- 线程调用成员函数
- const成员函数内部如何改变成员变量
- 线程的静态函数如何访问类的非静态成员函数或成员变量
- 成员函数指针数组,处理函数中调用:
- C++中的线程函数如何访问类中的成员变量
- 创建线程调用类成员函数的方法。
- MFC界面包装类(多线程时成员函数调用的断言失败)
- MFC界面包装类(多线程时成员函数调用的断言失败)
- mfc界面包装类 ——多线程时成员函数调用的断言失败