Winapi MFC:启动时显示或最小化(隐藏)窗口

Winapi MFC:启动时显示或最小化(隐藏)窗口,winapi,mfc,showwindow,Winapi,Mfc,Showwindow,在CWinApp::InitInstance()中,我有: if (!ProcessShellCommand(cmdInfo)) return FALSE; m_pMainWnd->ShowWindow(m_MinimizeOnStartup ? SW_SHOWMINIMIZED : SW_SHOWNORMAL); m_pMainWnd->UpdateWindow(); 但是我的ShowWindow调用不会导致OnSize()或OnShowWindow()回调?在Process

CWinApp::InitInstance()中,我有:

if (!ProcessShellCommand(cmdInfo))
  return FALSE;
m_pMainWnd->ShowWindow(m_MinimizeOnStartup ? SW_SHOWMINIMIZED : SW_SHOWNORMAL);
m_pMainWnd->UpdateWindow();
但是我的ShowWindow调用不会导致
OnSize()
OnShowWindow()
回调?在
ProcessShellCommand()
过程中,这些被调用几次,作为第一个
OnShowWindow()
通过
SetWindowPlacement()
恢复上次关机时的窗口大小。这一切正常,恢复到上一个状态,但是
ProcessShellCommand()
之后使用
SW\u SHOW
调用
ShowWindow
,这会在任务栏上显示“最小化时隐藏的我”窗口。显示窗口或最小化窗口(隐藏窗口)的正确位置在哪里。基本上是最小化(在
SetWindowPlacement()
上,窗口是隐藏的,
MFC
以后调用
SW_SHOW
使其在任务栏上最小化而不是隐藏,我的强制
ShowWindow()
没有任何作用


TIA!!

当ShowWindow()已经处于这些状态时,它没有OnSize()或OnShowWindow()回调。在
CAppWnd
中设置
m\u nCmdShow=SW\u HIDE
然后在
InitInstance()的末尾调用
SetWindowPlacement()在最小化的情况下,如果请求最小化,它会出现。在Win32 C++应用程序中,即使在窗口创建如下函数后,我也可以通过函数设置<代码> SWO-StiminSimult:<代码>显示窗口(HWND,SWO-Stimin最小化)。
但您无法接收MFC的相应调用,这是您的问题吗?是的,当它已经处于该状态时,没有OnSize或OnShowWindow。我发现我可以在
CAppWnd
中设置
m\u nCmdShow=SW\u HIDE
,然后我会执行
SetWindowPlacement()
让它做它自己的事情。但是,当使用
wp->showCmd=SW\u showmimized;
时,该函数在
SIZE\u最小化之前发送一个
SIZE\u RESTORED
,因此在窗口消失之前,您会看到一个闪烁的窗口(因为我的OnSize将
ShowWindow(SW\u SHOW)
SIZE\u RESTORED
上,如果隐藏).不确定这是否是一个小把戏?我拿出了我的
ShowWindow(SW_SHOW)
on
SIZE\u在不可见时恢复了
,它仍然显示了窗口,现在没有闪光灯。所以我现在很好!如果问题解决了,你可以发布答案并接受它。