Блокировка экрана MFC

У меня есть приложение MFC, в котором у меня есть мастера, созданные с использованием CPropertySheet. У меня есть несколько элементов управления и кнопка "Далее". Когда я нажимаю кнопку "Далее", я буду выполнять различные операции. В это время я хочу заблокировать экран, чтобы пользователь не мог нажимать или выполнять какие-либо операции на экране. Пожалуйста, предложите мне какой-нибудь способ справиться с этим сценарием?

2 ответа

Лучше всего было бы вызвать диалоговое окно, используя DoModal с отключенным "Закрыть" и без кнопок для отмены диалога. В этом диалоговом окне вы можете выдать несколько значимых сообщений о прогрессе или даже показать индикатор выполнения. Таким образом, вы эффективно блокируете пользователя от каких-либо действий с приложением, а также предоставляете ему некоторую обратную связь, чтобы он знал, что какая-то работа выполняется.

Вы можете "заблокировать" окно с помощью EnableWindow. Заметьте, это всего лишь одно окно, пользователь все еще может взаимодействовать с другими окнами / приложениями, для которых вы не вызывали эту функцию.

HWND hWnd;
CWnd *pWnd;

// do stuff

// lock window
::EnableWindow(hWnd, FALSE);

// do stuff

//unlock window
::EnableWindow(hWnd, TRUE);

// lock window
pWnd->EnableWindow(FALSE);

// do stuff

// unlock window
pWnd->EnableWindow(TRUE);
Другие вопросы по тегам