Как запустить приложение 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;
Если вы ищете это, вы найдете кучу статей.