Графический интерфейс заблокирован при запуске приложения без вывода сообщений VC ++

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

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

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

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

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

Затем жду завершения процесса:

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

Любая идея?


person deb    schedule 18.02.2010    source источник


Ответы (1)


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

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

person Patrick    schedule 18.02.2010