Как запустить приложение MFC SDI неактивным?

Мне требуется, чтобы приложение MFC SDI запускалось неактивно. Это экранная клавиатура.

В прямой Win32 это просто сделать, просто позвонив ShowWindow( hWnd, SW_SHOWNA );

Это не работает в MFC. Я пробовал разные вещи:

Переопределение OnActivate(), OnActivateApp(), OnCreate(), PreCreateWindow() из CMainFrame,

Я также попытался переопределить LoadWindowPlacement() в моем классе приложения.

Также пробовал такие вещи, как:

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

Неудачно.

1 ответ

В приложении MFC есть специальный параметр CWinApp::m_nCmdShow. Этот параметр обычно имеет значение SW_SHOW, и приложение отображается и активируется. Параметр исходит от STARTUPINFO. Он определяется через WinMain, и MFC сохраняет его в CWinApp::m_nCmdShow.

Этот элемент используется в глубине рамки, когда окна рамки созданы и должны быть показаны.

Поэтому установите его до того, как будет создано любое окно. Если вы хотите показать свое приложение, но не хотите его активировать, установите для

m_nCmdShow = SW_SHOWNA;

Если вы ищете это, вы найдете кучу статей.

Другие вопросы по тегам