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