[問題] win32 DialogBox運作出現"沒有回應"

看板C_and_CPP (C/C++)作者 (呵呵)時間15年前 (2010/12/15 16:15), 編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/1
大家好 小弟需要寫一個很簡單的視窗程式 因為之前完全沒有寫過 胡亂摸索就直接用VC++ 2008 win32專案 我利用 DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG), hWnd, func1); 點擊之後就會打開 IDD_DIALOG,這個dialog的行為就由func1控制 函式如下(參考vc++2008內建dialog的寫法) INT_PTR CALLBACK func1(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if ( LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } else if (LOWORD(wParam) == IDOK ){ //在此執行一個無限迴圈的函式 return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; } 希望的得到結果是 這個dialog會不斷傳回函式執行的結果 但遇到的問題是 當按下IDOK的button時 程式就會當掉 dialog會出現 "無法回應" (但其實好像還在執行) 請問如何解決這個問題呢(如果執行的不是無限迴圈的函式就不會有這個問題..orz) 謝謝大家..orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.29.130

12/15 16:44, , 1F
請把 infinite loop 放在另一個 thread 當中執行
12/15 16:44, 1F

12/15 16:46, , 2F
Window procedure (你的 func1) 是用來接收事件、畫 UI 用的
12/15 16:46, 2F

12/15 16:48, , 3F
把繁重的工作放在 window procedure 裡面會造成畫 UI 的程式
12/15 16:48, 3F

12/15 16:50, , 4F
沒有機會被執行 (因為只有一個 thread),看起來就是沒有回應
12/15 16:50, 4F

12/15 17:00, , 5F
AfxPumpMessage()
12/15 17:00, 5F

12/15 17:01, , 6F
對啊!不應該在這放無窮迴圈,視窗本身其實就是在跑迴圈。
12/15 17:01, 6F

12/15 17:07, , 7F
瞭解 十分感謝!!!!!
12/15 17:07, 7F
文章代碼(AID): #1D27aons (C_and_CPP)
文章代碼(AID): #1D27aons (C_and_CPP)