巧妙解决问题:&CMFCcodeDlg::RunCommands”创建指向成员的指针。MFC多线程调用要求调用的接口必须是全局函数或静态成员函数
来源:互联网 发布:网址导航手机版源码 编辑:程序博客网 时间:2024/04/24 02:45
在使用多线程的时候总是报错:“函数调用缺少参数列表;请使用“&CMFCcodeDlg::RunCommands”创建指向成员的指针”,才知道面向对象编程要求线程是调用的接口必须是全局函数或静态成员函数。但是已经写好的很多代码修改起来又很麻烦,如何解决呢?
在主类中定义一个指针,在构造函数里初始化此指针为this,然后用指针来调用已有的方法:
1. 定义指针,必须是静态的 ------ 重点
static CMFCcodeDlg *p_cmfcode = NULL;
2. 初始化指针
CMFCcodeDlg::CMFCcodeDlg(CWnd* pParent /*=NULL*/): CDialogEx(CMFCcodeDlg::IDD, pParent) { p_cmfcode = this;}
3. 在线程可以调用的函数里调用指针:
DWORD WINAPI CallBatThreadFunc(HANDLE Thread){if (p_cmfcode){p_cmfcode->RunCommands();}return 0;}
4. 早就有的函数:
void CMFCcodeDlg::RunCommands(){ ......成员变量调用,赋值。}
5. 创建多线程
void CMFCcodeDlg::StartNewThreadRunCommands(void){m_bRun = FALSE;HANDLE hThread;DWORD dwThreadId;hThread=::CreateThread(NULL,0,CallBatThreadFunc,NULL,0,&dwThreadId);}
解决。。。。
0 0
- 巧妙解决问题:&CMFCcodeDlg::RunCommands”创建指向成员的指针。MFC多线程调用要求调用的接口必须是全局函数或静态成员函数
- 函数调用缺少参数列表;请使用“&****Dlg::getThread”创建指向成员的指针”--多线程函数调用
- this指针指向当前调用对象,只是用于类的非静态成员函数。静态函数和全局函数 无当前对象,无this指针。
- static函数 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针;类的static成员函数
- “Caculate::writehtml”: 函数调用缺少参数列表;请使用“&Caculate::writehtml”创建指向成员的指针
- 函数调用缺少参数列表;请使用“&Student::Printf”创建指向成员的指针 问题解析
- 把全局函数指针指向类的成员函数
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 指向成员函数的指针
- 排序——插入排序法
- LUA常见库和工具
- 删除ssh默认known_hosts
- Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'armv7'
- Android使用socket使底层和framework通信
- 巧妙解决问题:&CMFCcodeDlg::RunCommands”创建指向成员的指针。MFC多线程调用要求调用的接口必须是全局函数或静态成员函数
- python 的 append 和 extend
- python super()
- 理解ThreadLocal
- STL之函数对象
- STL 之数字算法
- STL 之插入迭代器
- STL 之堆算法
- STL 之非修改算法