0

C++ (Windows XP、Visual C++ 2008) で GUI インターフェイスを作成しました。ここでいくつかのパラメータを設定できます。[OK] ボタンをクリックすると、サイレント アプリケーションが起動されます (設定された値が使用されます)。これを行うと、他のウィンドウに切り替えるとGUIがフリーズして消えます(まだそこにありますが、空白しか見えません)。他のアプリケーションが終了すると、GUIが再び機能します。

これは正しい動作です。ユーザーがフィールドを編集できるようにしたくありませんが、GUI が表示されない場合は少し見苦しくなります。他のウィンドウに切り替えて、元に戻したときに GUI を表示できる簡単な方法を知っている人はいますか?

前もって感謝します

編集:

こんにちは、これをやってみましたが、問題はアプリをバックグラウンドで実行するために、CreateProcess を使用する関数があったことです。つまり、プロセスを作成するスレッドを作成する場合と、プロセスを直接作成する場合の両方で、GUI がフリーズします。

次に、プロセスが完了するのを待ちます。

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;

何か案が?

4

1 に答える 1

0

2 番目のスレッドで外部アプリケーションを開始し、モーダル ポップアップを介してメイン スレッドをブロックします。モーダル ポップアップでは、タイマーを使用して 2 番目のスレッドが既に終了しているかどうかを定期的に確認し、終了している場合は閉じます。

おまけとして、モーダルポップアップで費やされた時間を表示できます。

于 2010-02-18T10:28:03.350 に答える