0

Mfc アプリケーションがまだ背後で実行されている間に、Qt モーダル ウィンドウを開きたい Mfc アプリケーションがあります。

Mfc から Qt アプリケーションを起動する方法については、こちらを参照しください。このページでは Dll を作成しますが、私のソリューションでは代わりに静的ライブラリを作成します

メイン アプリケーションを背後で実行する Qt モーダル ウィンドウの作成に関しては、簡単に見えます。

私の問題は、両方のソリューションを組み合わせることができないように見えることです。

次のコードは Qt ウィンドウを開始しますが、メイン スレッドをブロックしていて、メイン スレッドがイベントを受信できない可能性が高いと思われます。

void QtMfcFacade::startDevicesConfigurationWizard(HWND hWnd)
{
    QWinWidget win( hWnd );
    win.showCentered();
    DevicesConfigurationWizard devicesConfigurationWizardUI(&win);
    devicesConfigurationWizardUI.exec();
} 

exec 関数がメイン スレッドをブロックしている可能性があります

次の解決策はメインスレッドをブロックするべきではありませんが、Qt ウィンドウは数ミリ秒しか表示されず、消えてしまいます。

void QtMfcFacade::startDevicesConfigurationWizard(HWND hWnd)
{
    QWinWidget win( hWnd );
    win.showCentered();
    DevicesConfigurationWizard devicesConfigurationWizardUI(&win);
    devicesConfigurationWizardUI.show();
}

質問は、exec関数の代わりにshow関数を使用することは可能ですか?

(これは、DLL を作成し、Mfc アプリケーションからワーカー スレッドで DLL を呼び出す場合に機能しますが、静的ライブラリを使用することを好みます)

4

1 に答える 1