Я только что закодировал дочерний поток для создания и обновления окна, но столкнулся с некоторой проблемой. Мое окно закрывается автоматически после завершения этого потока (естественно). Но я не хочу закрывать его, поэтому я попытался поместить цикл while в поток, и в этом цикле я вызываю функцию InvalidateRect()
, чтобы она могла обновлять окно. Теперь окно не закрывается автоматически, но я не могу переместить его или взаимодействовать с ним, и курсор также показывает значок «занят» (означает, что он не отвечает). Как я могу решить эту проблему. ниже код:
вызов этого из main ()
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;
}
Я не могу использовать функцию main()
для создания окна. Поэтому я должен использовать нить и обновить это окно периодическим изображением, полученным с веб-камеры.