0

wxBusyInfo で問題が発生しました。計算中にユーザーの操作を無効にしたい。次のようにコードを書くだけです:

wxWindowDisabler disableAll;
wxBusyInfo info(_T("Working, please wait..."), this);
for(int i = 0; i < 1; i++)
{
Install();
}

Install() 関数では、次のような作業を行います。

wxSleep();
wxExecute(cmd, output, errors);

アプリケーションを実行すると、busyinfo ダイアログが表示されますが、アプリケーションの上部には表示されません。また、アプリケーションをクリックするか、busyinfo ダイアログをクリックすると、添付の写真のようになります。Install() 関数が終了したら、問題ありません。しかし、ユーザーがその方法でアプリケーションを終了できるようにしたくありません。どうしたの?私に何ができる? アプリケーション をクリックした後 ビジー情報ダイアログをクリックした後

4

1 に答える 1

0

wxExecute を同期的に呼び出していcmd completes.ます。つまり、アプリケーションが表示を更新する機会が得られないまで戻りません。

したがって、wxExecute を非同期で呼び出す必要があります。

問題は、実行されたコマンドからの出力とエラーを確認できないことです。

于 2012-07-31T12:01:47.053 に答える