IMO, используйте таймер, если он решает проблему. Как вы упомянули, рабочий поток, взаимодействующий с пользовательским интерфейсом в MFC, может иногда доставлять больше хлопот, чем стоит.
Если проблема достаточно проста для таймера, вот что я бы использовал (Помните, ПОЦЕЛУЙ)
SetTimer не нужно передавать окно для работы, он может вызывать метод обратного вызова.
Вы можете использовать это в своем приложении - объявите в своем CWinApp (или где-либо еще)
static void CALLBACK OnTimer(HWND, UINT, UINT, DWORD);
Тогда в InitInstance
звоните SetTimer(0, [eventid], [time period], OnTimer);
В OnTimer
вы можете вернуться к экземпляру CWinApp через AfxGetApp()
или theApp
, поскольку существует только один.