如何启动MFC SDI应用程序处于非活动状态

How to start MFC SDI app inactive?

本文关键字:应用程序 SDI 于非 活动状态 MFC 何启动 启动      更新时间:2023-10-16

我要求我的MFC SDI应用程序启动为非活动状态。这是一个屏幕键盘。

在直接Win32中,只需调用ShowWindow( hWnd, SW_SHOWNA ); 是很简单的

这在MFC中不起作用。我尝试过各种各样的东西:

覆盖CMainFrameOnActivate()OnActivateApp()OnCreate()PreCreateWindow()

我还尝试在应用程序类中重写LoadWindowPlacement()

也尝试过类似的东西:

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

运气不好。

MFC应用程序有一个特殊参数CWinApp::m_nCmdShow。此参数通常设置为SW_SHOW,并显示和激活应用程序。该参数来自STARTUPINFO。它是通过WinMain定义的,MFC将其存储在CWinApp::m_nCmdShow中。

当创建框架窗口并需要显示时,该成员将用于框架的深度。

因此,在创建任何窗口之前设置它。如果你想显示你的应用程序,但不想激活它,设置为

m_nCmdShow = SW_SHOWNA;

如果你搜索这个,你会发现一堆文章。