[問題] WinAPI Post Message後的func()執行問題

看板C_and_CPP (C/C++)作者 (當你孤單會想起誰)時間16年前 (2010/03/09 01:51), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 目前利用VC+postmessage開發 在寫程式的過程發現我寫出來的code在處理post message中的func() 會因下一個trigger到了 又跳去丟一次post message 而造成func()沒法執行完整 希望能有哪位大大能幫忙解決一下~ 感謝~ 希望得到的正確結果: 希望能將post message中所呼叫的func()執行完成OB 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC + WinXP 有問題的code: (請善用置底文標色功能) 以下是pseudo code BEGIN_MSG_MAP(SingleChannelPlaybackView) MESSAGE_HANDLER(WM_GoSetImageToVideo, OnEventToVideo) END_MSG_MAP() onFrameReady() { postmessage(WM_GoSetImageToVideo, reinterpret_cast<WPARAM>(data), 0); } OnEventToVideo() { DEVICE_IMAGE *Img_Info = reinterpret_cast<DEVICE_IMAGE *>(wParam); SetImageToVideo(Img_Info); //這行沒執行完 onFrameReady()就被trigger //然後這行就沒執完 delete Img_Info; return 0; } SetImageToVideo(DEVICE_IMAGE &Img_Info) { if(Img_Info) { push_Frame(); //這個function 內部還會有很多小func() } } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.160.100

03/09 08:42, , 1F
post message 應該會依序執行阿? 還是
03/09 08:42, 1F

03/09 08:42, , 2F
有什麼資料會被下一個 frame 更新變成不合法?
03/09 08:42, 2F

03/09 08:54, , 3F
他有依序做~ 但是我後來去trace 發現push_Frame()這沒
03/09 08:54, 3F

03/09 08:55, , 4F
沒做完~ 依之前同事說應該是push_Frame()太大~ 所以要
03/09 08:55, 4F

03/09 08:56, , 5F
加上sleep()可以解~ 但我現主管不希望這樣~ XD
03/09 08:56, 5F

03/09 12:50, , 6F
應該是你 push_Frame() 裡面有去取訊息造成重入吧
03/09 12:50, 6F

03/09 15:14, , 7F
我有去查過~ 可是裡面沒有去取任何msg耶~
03/09 15:14, 7F

03/09 20:52, , 8F
不一定是 GetMessage 才會處理訊息
03/09 20:52, 8F

03/09 20:53, , 9F
把發生問題的 call stack 貼出來就知道了
03/09 20:53, 9F
文章代碼(AID): #1BbJahfH (C_and_CPP)
文章代碼(AID): #1BbJahfH (C_and_CPP)