Ну, ваш диалог HWND - это одиночка, так что это не конец света.Но да, стандартный способ сделать это - передать непрозрачный указатель на код, который выполняет работу.Например, если сравнить с аргументом lParam в EnumWindows (), обратный вызов возвращает этот указатель.
Если элемент управления перерисовывает себя немедленно, это деталь реализации.Я знаю только о прогресс-баре, делающем это.Вы можете вызвать UpdateWindow на дескрипторе диалогового окна, чтобы получить все ожидающие обновления рисования, сбрасываемые на экран.
Всеобъемлющая лучшая ловушка мыши - выполнять длинные задачи в рабочем потоке.Предотвращает отображение в Windows призрачного окна «Не отвечает», предотвращает тайм-ауты широковещательных сообщений и многочисленные потенциальные проблемы взаимоблокировок.Но это сложно сделать правильно, вы не можете обновить окно непосредственно из рабочего потока.