GUI заблокирован во время работы тихого приложения VC ++ - PullRequest
0 голосов
/ 18 февраля 2010

Я создал графический интерфейс на C ++ (Windows XP, Visual C ++ 2008). Там вы можете настроить некоторые параметры, и когда я нажимаю кнопку ОК, запускается приложение без вывода сообщений (и использует установленные значения). Когда я это делаю, GUI замирает и даже исчезает, если вы переключаетесь на другие окна (они все еще там, но вы можете видеть только пробел), когда другое приложение завершает работу, GUI снова работает.

Это правильное поведение, я не хочу, чтобы пользователь мог редактировать поля ... но это немного уродливо, когда вы не видите графический интерфейс. Кто-нибудь знает простой способ переключаться на другие окна и видеть графический интерфейс при переключении обратно?

Заранее спасибо

Отредактировано:

Привет, я пытался сделать это, но проблема в том, что для запуска приложений в фоновом режиме у меня была функция, которая использует CreateProcess. Таким образом, оба способа замораживают графический интерфейс: если я создаю поток, который создает процесс, и если я создаю процесс напрямую.

Затем я жду окончания процесса:

if (! CreateProcess (NULL, Args, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, & StartupInfo, & ProcessInfo)) { return GetLastError ();
} WaitForSingleObject (ProcessInfo.hProcess, INFINITE); if (! GetExitCodeProcess (ProcessInfo.hProcess, & rc)) rc = 0;

Есть идеи?

1 Ответ

0 голосов
/ 18 февраля 2010

Запустите внешнее приложение во втором потоке и заблокируйте ваш основной поток через модальное всплывающее окно. В модальном всплывающем окне используйте таймер, чтобы регулярно проверять, завершился ли второй поток, и закрывайте его, если он имеет.

В качестве бонуса вы можете показать время, проведенное в вашем модальном всплывающем окне.

...