作者:
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能夠自行填入自己定義的按
: 鈕
: 嗎?