我有一个大型 C++/MFC 应用程序,它可以以两种模式启动:1)常规 GUI 模式和 2)使用命令行参数启动时的特殊模式,在这种情况下,程序的 GUI 部分没有显示,而是我添加了一个图标到通知(系统)托盘。
为了确保不显示模式 2 的主窗口,我按如下方式处理 WM_WINDOWPOSCHANGING:
void OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
CDialog::OnWindowPosChanging(lpwndpos);
// TODO: Add your message handler code here
//Prevent main window from showing
lpwndpos->flags &= ~SWP_SHOWWINDOW;
}
如果在处理此消息后逻辑确定命令行中有错误并希望显示主窗口,则会出现此问题。但是在处理 WM_WINDOWPOSCHANGING 消息后,我似乎无法显示主窗口,就像我在上面显示的那样。
PS。该项目是为 Visual Studio 2008 编写的 C++ MFC。