私は現在、マイクからオーディオ信号をキャプチャし、別のスレッドでフーリエ変換 (オーディオの周波数を取得するため) を計算し、最終的に結果を画面にプロットするプログラム (C++ Win32、Visual Studio 2012) を開発しています。 .
プロット以外はすべて正常に動作するため、これは GUI 関連のトピックです。
WndProc では、バッファーがいっぱいで処理の準備ができたときにメッセージを受け取り、呼び出します。
boost::thread t(&ComputationThread,data);
計算スレッドを開始します。
最後にComputationThread
、定義済みの固定値とデータ ポインターを引数として使用して、データをプロットするために GUI スレッドにメッセージを送信します。
SendMessage(hWnd, WM_PAINT, PARAM_FFT_COMPUTED, (LPARAM)data);
これも問題なく動作し、メッセージが表示され、計算されたデータをファイルに書き込むこともできますが、フォーム上での描画 (例: を使用SetPixel
) は効果がwParam
ありません PARAM_FFT_COMPUTED
が、そうでない場合、たとえばフォームがサイズ変更されます。
InvalidateRect
も効果がありません。
私は何を間違っていますか?
前もって感謝します!