我目前正在開發一個程序(C++ Win32,Visual Studio 2012),它捕捉來自麥克風的音頻信號,計算傅立葉變換(您知道,音頻中的頻率)在另一個線程中,最後將結果繪製在屏幕上。C++ Win32:使用SendMessage從另一個線程調用WM_PAINT,繪圖沒有效果
一切正常,除了繪圖,所以這是一個GUI相關的主題。
在WndProc中,我得到一個消息時緩衝區已滿,並準備進行處理,我稱之爲
boost::thread t(&ComputationThread,data);
開始計算線程。
截至ComputationThread
年底我將消息發送到GUI線程繪製數據,使用預定義的固定值和數據指針作爲參數:
SendMessage(hWnd, WM_PAINT, PARAM_FFT_COMPUTED, (LPARAM)data);
這工作得很好,以及,我得到的消息,並且我還可以將計算的數據寫入文件,但是,繪製在窗體上(例如使用SetPixel
)沒有任何效果,但當wParam
是而不是PARAM_FFT_COMPUTED
時(例如窗體大小調整時),它會起作用。
InvalidateRect
也沒有效果。
我在做什麼錯?
在此先感謝!