看板 C_and_CPP 關於我們 聯絡資訊
工作也會需要用到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能夠自行填入自己定義的按 : 鈕 : 嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.177.13 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1527863091.A.5CE.html
Dong0129: 非常感謝! 06/12 10:18