Блокировка экрана 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);