[問題] MFC中Thread及MessageBox問題

看板C_and_CPP作者 (阿東)時間7年前 (2018/06/01 01:53), 7年前編輯推噓1(1011)
留言12則, 3人參與, 7年前最新討論串1/2 (看更多)
各位版友好, 小弟是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), 來自: 36.227.182.240 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1527789193.A.93A.html

06/01 04:01, 7年前 , 1F
傳入null ?
06/01 04:01, 1F

06/01 04:02, 7年前 , 2F
傳入 bool stop
06/01 04:02, 2F

06/01 09:31, 7年前 , 3F
MFC過時很久都快化成灰了 連軟軟自己都不推
06/01 09:31, 3F

06/01 09:34, 7年前 , 4F
想學習的話不如直接學windows api 例如CreateWindow()
06/01 09:34, 4F
嗚嗚,我知道現在都用WPF或其他的語言寫啊,先前就聽過MFC很舊很麻煩,但因為工作需 要不得不碰,只好硬著頭皮面對它了。 ※ 編輯: Dong0129 (42.73.61.214), 06/01/2018 10:00:32

06/01 15:22, 7年前 , 5F
s_path -> (LPVPID)pPath
06/01 15:22, 5F

06/01 15:25, 7年前 , 6F
原型寫了LPVOID pParam, 當然不能硬塞CString
06/01 15:25, 6F
嗯嗯,謝謝指教, 也有試過不要傳值, thread=AfxBeginThread(test,NULL); 還是沒辦法順利編譯過,一樣會提示沒有使用正確引數,傷腦筋。 ※ 編輯: Dong0129 (42.73.61.214), 06/01/2018 16:13:32

06/01 17:30, 7年前 , 7F
不傳值 可以用(LPVOID)this, 把dialog丟進去
06/01 17:30, 7F

06/01 18:16, 7年前 , 8F
test裡面, 可以試著把this還原
06/01 18:16, 8F

06/01 18:17, 7年前 , 9F
另外, 使用正確引數, 應該會顯示哪個參數錯誤吧
06/01 18:17, 9F

06/01 18:23, 7年前 , 10F
.h -> static UINT test(LPVOID pParam);
06/01 18:23, 10F

06/01 18:24, 7年前 , 11F
.cpp -> UINT Dlg::test(LPVOID pParam) {return 0;}
06/01 18:24, 11F

06/01 18:25, 7年前 , 12F
AfxBeginThread(test, NULL);
06/01 18:25, 12F
文章代碼(AID): #1R43Q9aw (C_and_CPP)
文章代碼(AID): #1R43Q9aw (C_and_CPP)