Все, что вам нужно, это цикл сообщений - просто используйте этот код (измененный с здесь ):
MSG msg;
BOOL bRet;
while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Редактировать:
Для I/ O или другие задачи, вы можете (1) создать другой поток и делать все оттуда, или (2) использовать MsgWaitForMultipleObjects внутри цикла (перед следующим вызовом GetMessage
()), чтобы одновременнодождитесь ввода-вывода и сообщений, чтобы вы могли получать уведомления, когда есть либо сообщение, либо когда ваш ввод-вывод завершен.
Предупреждение :
Я не понял, как заставить приложение не отображать форму песочных часов при запуске.Если вам нужна эта функциональность, рассмотрите возможность создания службы Windows.Вы также можете скомпилировать как консольное приложение, а затем использовать FreeConsole
, чтобы скрыть окно.