ウィンドウを作成して更新するために子スレッドをコーディングしましたが、問題が発生しました。私のウィンドウは、スレッドの実行が完了した後に自動的に閉じます(自然に)。しかし、私はそれを閉じたいとは思わないので、whileループをスレッドに入れようとしました。そのループでは、InvalidateRect()
関数を呼び出してウィンドウを更新できるようにしています。今すぐウィンドウが自動的に閉じていないが、私はそれを移動することはできませんし、カーソルとはまた、いくつかの忙しいアイコン(完全に応答しないことを示す)とカーソルを操作することはできません。どのように私はその問題を解決することができます。私は、ウィンドウを作成するためにmain()
機能を使用することはできませんvC++を使用して子スレッドでウィンドウを作成し更新する方法
メインからこれを呼び出す()
bool CameraApp::OnInit()
{
hThread = (HANDLE)_beginthreadex(NULL, 0, &CameraFrame::StartCameraPreview,
NULL, 0, &threadID);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
return TRUE;
}
unsigned __stdcall CameraFrame::StartCameraPreview(void* pArgs)
{
cFrame.ShowCameraWindow();
while(1)
{
cFrame.StartCapture();
InvalidateRect(hwnd, NULL, false);
Sleep(5000);
}
_endthreadex(0);
return 0;
}
スレッド機能ブロック:以下のコードです。だから、私はスレッドを使用して定期的な画像をWebカメラから撮影したウィンドウを更新する必要があります。
私はウィンドウを更新することができ、それはメッセージに従って更新されますか? –
タイマーを作成し、毎秒ウィンドウを更新します。このメッセージループでWM_TIMERを処理したり、ウィンドウのwindow procを作成したりすることができます。 – DReJ