基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现

在项目中有如下的一个需求:
软件在网络启动状态下显示主窗口,而在单机状态下只显示其子对话框(我的是无模式的).
在网上找了一天,各种办法都似乎不太好,
不过晚上终于找到了一个不错的解决办法.
使得我很好的解决了这个问题.
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现    if (theApp.m_bUnConnect)
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现    {
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现        CRecordDlg* dlg;
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现        CWnd* m_pCWnd = this;
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现        dlg = new CRecordDlg(m_pCWnd);
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现        dlg->Create(IDD_DLG_RECORD,m_pCWnd);
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现        dlg->ShowWindow(SW_SHOW); 
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现        this->SetWindowPos(&wndTop,0,0,0,0,NULL);
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现    }
 // if ()
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现
    else
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现    {
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现       ShowWindow(SW_MAXIMIZE);
基于Dialog程序,启动时不显示主窗口,只显示子窗口的实现    }
以上为我实现代码.
实现主窗口隐藏的是SetWindowPos(),从代码很容易理解出来,就是把主窗口的坐标设置为(0,0,0,0),也就是说把主窗口设置为一个点,并且点处于原点处.
其实是一种伪隐藏,可是它还是实现了隐藏,并且实现的效果相当不错,没有闪烁,也没有副作用(至少现在没有发现有).
不过要注意的是,无模式对话框关闭时候除了要DestroyWindow(),还需要PostQuitMessage(0);将主窗口给关闭掉,否则程序进程实际还在.

嘿嘿,实在是很不错的解决方案,简单有效.
上一篇:韩松、朱俊彦等人提出GAN压缩法:算力消耗不到1/9,现已开源


下一篇:一天之内,两大AI预测蛋白结构算法开源,分别登上Nature、Science