创建线程,让线程函数回调函数也像成员函数一样

来源:互联网 发布:档案归类软件 编辑:程序博客网 时间:2024/06/03 21:49

// 这里只作最简单的提示void CMfcDlg_StudyDlg::showTip(CString strTip){AfxMessageBox(strTip);}struct ThreadData{void* _this;CString strName;};DWORD WINAPI TestThreadProc(LPVOID lpParameter){ThreadData* pThreadData = (ThreadData*)lpParameter;CMfcDlg_StudyDlg* _this = (CMfcDlg_StudyDlg*)pThreadData->_this;CString strTip = pThreadData->strName;// 只要要调用里加上 _this来访问, 基本上也类似于成员函数// 说白了, 成员函数也不过是编译器默认添加了一个this指针而已_this->showTip(strTip); delete lpParameter; // 如果创建线程成功, 这里也得把内存释放掉// do other ...return 0;}void CMfcDlg_StudyDlg::OnBnClickedOk(){// TODO: Add your control notification handler code hereThreadData* pThreadData = new ThreadData;pThreadData->_this = this;pThreadData->strName = "test...";DWORD dwThreadId;HANDLE hThread = CreateThread(NULL, 1024 * 1024 * 20, TestThreadProc, pThreadData, 0, &dwThreadId);if (hThread == NULL){delete pThreadData;// 记得创建线程不能成功, 把内存释放掉AfxMessageBox(TEXT("Create Thread Failed.."));}//OnOK();}

0 0
原创粉丝点击