Re: [问题] MFC中Thread及MessageBox问题

楼主: kinggto (吵闹的蓝天)   2018-06-01 22:24:49
工作也会需要用到MFC
.H档
CString sPath;
void ProcessFile(CString path);
static UINT ThreadControl(LPVOID pParam);
cpp档
BOOL CMFCApplication1Dlg::OnInitDialog()
{
.
.
.
sPath = L"123";
AfxBeginThread(ThreadControl, (LPVOID)this);
return TRUE;
}
void CMFCApplication1Dlg::ProcessFile(CString path)
{
MessageBox(path);
}
UINT CMFCApplication1Dlg::ThreadControl(LPVOID pParam)
{
CMFCApplication1Dlg *dlg = (CMFCApplication1Dlg*)pParam;
dlg->ProcessFile(dlg->sPath);
return 0;
}
※ 引述《Dong0129 (阿东)》之铭言:
: 各位版友好,
: 小弟是MFC新手,
: 最近在MFC上尝试写一个Thread读档案后透过呼叫写好的函式处理档案内容,
: 并能透过按钮实现"暂停"及"继续"的作用,
: 内容如下:
: pthread = AfxBeginThread(test, s_path);
: UINT TAB_Internal::test(LPVOID lpParam)
: {
: CString* file_path = (CString*) lpParam; //传档案路径
: processfile(*file_path); //程式中已宣告的函式
: }
: 上述写法并没有通过编译,
: 以下有几点问题想请教...
: 1.在pthread = AfxBeginThread(test, s_path);显示错误表示AfxBeginThread没有使用
: 正确引数,请问我该怎么写才是正确的呢?
: 2.在学习相关的知识时有看到AfxBeginThread的原型如下,
: CWinThread* AFXAPI AfxBeginThread(
: AFX_THREADPROC pfnThreadProc,
: LPVOID pParam,
: int nPriority,
: UINT nStackSize,
: DWORD dwCreateFlags,
: LPSECURITY_ATTRIBUTES lpSecurityAttrs)
: 想请问其中各个参数的作用是什么(查到的资料有说明,但不是很清楚),
: 是否每次使用AfxBeginThread时,都需要填满这些参数呢?
: 3.先前在JAVA上实作Thread时,Thread的"暂停"以及"继续"需要自己实作,并没有函式可
: 直接呼叫,请问在MFC上也需要自己实做吗?还是透过thread->suspend();
: 以及thread->resume();就能够暂停以及继续Thread呢?
: 4.请问MessageBox("mb内容","mb标题",mb_btn);中,mb_btn能够自行填入自己定义的按
: 钮
: 吗?
作者: Dong0129 (阿东跟上面讲的情况一样b)   2018-06-12 10:18:00
非常感谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com