0

MFC SDI アプリケーションを非アクティブで起動する必要があります。オンスクリーンキーボードです。

ストレートな Win32 では、単純に呼び出すだけで簡単に実行できます。ShowWindow( hWnd, SW_SHOWNA );

これは MFC では機能しません。私はさまざまなことを試しました:

OnActivate()、、、OnActivateApp()のオーバーライド。OnCreate()_ PreCreateWindow()_CMainFrame

LoadWindowPlacement()アプリクラスでのオーバーライドも試しました。

次のようなことも試しました:

AllowSetForegroundWindow( ASFW_ANY );
::SetForegroundWindow(::GetNextWindow(::GetDesktopWindow(), GW_HWNDPREV ));

運がない。

4

1 に答える 1

2

MFC アプリケーションには、特別なパラメーター CWinApp::m_nCmdShow があります。通常、このパラメータは SW_SHOW に設定され、アプリケーションが表示されてアクティブになります。パラメータは STARTUPINFO から取得されます。これは WinMain を介して定義され、MFC はそれを CWinApp::m_nCmdShow に格納します。

この smember は、フレーム ウィンドウが作成され、表示する必要がある場合に、フレームワークの深さで使用されます。

したがって、ウィンドウが作成される前に設定してください。アプリケーションを表示したいがアクティブ化したくない場合は、次のように設定します。

m_nCmdShow = SW_SHOWNA;

これを検索すると、たくさんの記事が見つかります。

于 2014-04-16T08:14:18.143 に答える