牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

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

在项目中有如下的一个需求:
软件在网络启动状态下显示主窗口,而在单机状态下只显示其子对话框(我的是无模式的).
在网上找了一天,各种办法都似乎不太好,
不过晚上终于找到了一个不错的解决办法.
使得我很好的解决了这个问题.
    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);将主窗口给关闭掉,否则程序进程实际还在.

嘿嘿,实在是很不错的解决方案,简单有效.

posted on 2006-12-19 22:06 杨粼波 阅读(2382) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记C++


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理