CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

对话框启动时的隐藏

楼主sunky_song(龙笑)2003-08-02 17:47:22 在 VC/MFC / 界面 提问

我作了一个基于对话框的应用程序,我想使对话框一启动时就隐藏,而且在任务栏里面也无法显示,只有右下脚的一个托盘图标,应该如何实现呢? 问题点数:0、回复次数:33Top

1 楼zyleon(zy)回复于 2003-08-03 00:44:26 得分 0

http://www.vckbase.com/document/viewdoc.asp?id=492Top

2 楼masterz(www.fruitfruit.com)回复于 2003-08-03 02:15:56 得分 0

/////////////////////////////////////////////////////////////////////////////////  
  //hide   dialog   at   startup  
  /////////////////////////////////////////////////////////////////////////////////  
  void   CHidedlgDlg::OnWindowPosChanging(WINDOWPOS   FAR*   lpwndpos)    
  {  
  if   (lpwndpos->flags   &   SWP_SHOWWINDOW)   {  
  lpwndpos->flags   &=   ~SWP_SHOWWINDOW;  
  PostMessage(WM_WINDOWPOSCHANGING,   0,   (LPARAM)lpwndpos);  
  ShowWindow(SW_HIDE);  
  }  
  else  
  CDialog::OnWindowPosChanging(lpwndpos);  
  }  
  //通过重载DoModel、RunModelLoop可以解决问题Top

3 楼newlife2002_313(永恒新生)回复于 2003-08-03 16:31:05 得分 0

看样子是解决了Top

4 楼zhucde(【風間苍月】★<==>★【虚拟闲人】)回复于 2003-08-03 17:07:47 得分 0

那可是五颗星Top

5 楼caylay(Michael)回复于 2003-08-04 13:57:47 得分 0

不说我还不知道,真是牛牛Top

6 楼wanderman(森林)回复于 2003-08-06 09:06:22 得分 0

牛Top

7 楼FAICHEN(CC)回复于 2003-08-06 09:15:59 得分 0

void   CHidedlgDlg::OnNcPaint()  
  {  
        ShowWindow(SW_HIDE);  
  }  
  托盘找一个包装好的,在initidialog()里建,我用的一个是systray类吧,在vckbase有下载Top

8 楼fishzlz()回复于 2003-08-06 20:40:13 得分 0

void   CHidedlgDlg::OnNcPaint()  
  {  
        ShowWindow(SW_HIDE);  
  }  
  是不行的  
  会执行两次,所以要这样:  
  static   int   i   =   2;  
  if(i   >   0)  
  {  
        i   --;  
        ShowWindow(SW_HIDE);  
  }  
  else  
      CDialog::OnNcPaint();  
  Top

9 楼fishzlz()回复于 2003-08-06 20:42:21 得分 0

我的意思是说,照你的办法就永远也看不到窗口了  
   
  当然实现隐藏是足够了:)Top

10 楼fgwf1(坦荡男儿)回复于 2003-08-06 21:48:36 得分 0

kankanTop

11 楼dhyuser10(段誉)回复于 2003-08-06 23:08:29 得分 0

向masterz致敬Top

12 楼sunky_song(龙笑)回复于 2003-08-08 17:42:04 得分 0

以上方法、我都试过了,好像都不行。我只是在启动时隐藏,以后可以通过点托盘图表来恢复隐藏Top

13 楼lonkil(www.vcfans.com)回复于 2003-08-08 18:16:30 得分 0

隐藏框体的方法很多的,你可以订阅VCKBASE里面的VC杂志。里说到了那多。  
  不好意思,楼主的要求我实现过,不过现在源码不在这里,其实看了下那个杂志上面的功能就能实现了。Top

14 楼GoldenSea(void*)回复于 2003-08-08 22:01:10 得分 0

五颗心的就是牛啊!Top

15 楼kinogre(小熊)回复于 2003-08-09 00:34:16 得分 0

在OnInitDialog中调用ShowWindow(SW_HIDE)就行了.  
  至于在系统托盘区显示为图标,看一下MSDN中对Shell_NotifyIcon函数的说明就行了,  
  里面写的很详细.Top

16 楼shilong(银羽 www.ylog.net)回复于 2003-08-09 00:55:57 得分 0

简单点的办法  
  把App类的InitInstance把对话框改成无模式打开的并隐藏  
          CxxxDlg*   pWnd   =   new   CxxxDlg();  
          m_pMainWnd=pWnd;  
          if(pWnd->Create()   ==   FALSE)  
          return   FALSE;          
  pWnd->ShowWindow(SW_HIDE);  
  pWnd->UpdateWindow();  
        return   true;Top

17 楼clife(笨狗API.NET)回复于 2003-08-09 18:32:09 得分 0

在WM_PAINT中响应ShowWindow(hwnd,SW_SHOW/SW_HIDE);就可以了Top

18 楼fishzlz()回复于 2003-08-09 21:56:12 得分 0

请问masterz,用OnWindowPosChanging隐藏后,用什么方法可以再显示呢?Top

19 楼BSRONG(戎亚新)回复于 2003-08-09 22:28:06 得分 0

在OnInitDialog中调用ShowWindow(SW_HIDE)就行了.  
  至于在系统托盘区显示为图标,看一下MSDN中对Shell_NotifyIcon函数的说明就行了,  
  里面写的很详细.  
  我同意这个做法,  
  Top

20 楼m0772()回复于 2003-08-12 13:03:18 得分 0

upTop

21 楼tryber(Go with the CWnd)回复于 2003-08-12 13:26:44 得分 0

我还是趋向于  
  shilong(银羽·以吻赠剑)  
  的做法.Top

22 楼xudong1105(东东)回复于 2003-08-14 12:57:34 得分 0

在OnPaint()  
  {  
        ShowWindow(SW_HIKE);  
  }  
  即可!Top

23 楼zhdleo(叮东)回复于 2003-08-17 22:02:52 得分 0

按照“标准”来!  
   
  隐藏Dialog嘛!就是masterz(MS   MVP)   的!没错的  
   
  当我们想让窗口初始时不显示时,通常会用ShowWindow(SW_HIDE)   ,但实际上还是在启动是可以看到窗口一闪而过的痕迹。所以,可以使用下面的方法来实现它:  
  (1.1)先在构造函数中设置布乐变量   visible值为false.    
   
  visible   =   false;  
  (1.2)重载   WM_WINDOWPOSCHANGING,并添加下面代码:void   CTest_deleteDlg::OnWindowPosChanging(WINDOWPOS   FAR*   lpwndpos)    
  {  
          if(!visible)  
                  lpwndpos->flags   &=   ~SWP_SHOWWINDOW;  
   
          CDialog::OnWindowPosChanging(lpwndpos);  
  }  
   
  (1.3)然后设布尔visible变量值为true,并在要显示窗口时,再用ShowWindow(SW_SHOW)既可。visible   =   true;  
  ShowWindow(SW_SHOW);Top

24 楼stoning(stoning)回复于 2003-08-20 18:57:48 得分 0

可以用非模态对话框,然后用不用WS_VISIBLE  
   
  在托盘相应中在showwindow吧,我照着一个程序做过一个Top

25 楼sunky_song(龙笑)回复于 2003-08-21 19:20:48 得分 0

感谢大家的帮助。我用两种方法都实现了。  
  一种:在OnPain()里当第一次进入的时候调用ShowWindow(SW_HIDE);  
  一种是:将对话框改为非模态显示,调用ShowWindow(SW_HIDE),不过一定要在Inistance函数里自己写对话框的消息循环,否则对话框会在Inistance函数返回以后也即关闭。根本看不到对话框的出现。Top

26 楼xiaoliuzi(小六子)回复于 2003-08-21 20:20:00 得分 0

markTop

27 楼heweixing_77(何足道)回复于 2003-08-22 14:07:05 得分 0

upTop

28 楼c8051(简单是美)回复于 2003-08-28 11:03:47 得分 0

根本就不行嘛,隐藏后图标看都看不见,程序也不知道去哪里了。我还得注销一次系统才能再次debug  
  Top

29 楼karrysatan(黄河之水)回复于 2003-08-29 14:06:15 得分 0

哈哈,我要冲五星,搂主给鼓励一下吧Top

30 楼c8051(简单是美)回复于 2003-08-29 18:30:02 得分 0

龙笑:  
  你是不是搞定了?可否将源码发给我一份  
  急,拜托!  
  wbwinner@263.netTop

31 楼yiwan_ny(一万)回复于 2003-09-12 16:21:39 得分 0

同意以上观点,请有关同志办理Top

32 楼wwwllg(野蛮人)回复于 2003-09-12 17:17:58 得分 0

回复人:   masterz(MS   MVP)   (   )   信誉  
  void   CHidedlgDlg::OnWindowPosChanging(WINDOWPOS   FAR*   lpwndpos)    
  {  
  if   (lpwndpos->flags   &   SWP_SHOWWINDOW)   {  
  lpwndpos->flags   &=   ~SWP_SHOWWINDOW;  
  }  
  else  
  CDialog::OnWindowPosChanging(lpwndpos);  
  }  
  到了这一步,如果还不能达到你的要求,只能说明你的头太呆板。  
   
  在if后加一个自己的变量不就可以了吗  
  如  
  if(要隐)  
  {  
  if   (lpwndpos->flags   &   SWP_SHOWWINDOW)   {  
  lpwndpos->flags   &=   ~SWP_SHOWWINDOW;  
  }  
  else  
  CDialog::OnWindowPosChanging(lpwndpos);  
  }else  
  {  
  CDialog::OnWindowPosChanging(lpwndpos);  
  }  
   
  想要改你自己的变量,可以通过发消息,事件,等多种方法。  
  比如收到用户托盘消息,就改变量,达到你的要求。  
  Top

33 楼sniperqy(杨扬)回复于 2003-09-17 16:26:24 得分 0

如果有showwindow(SW_HIDE);  
  当程序刚运行时会性出现对话框,然后才消失Top

34 楼lxm7(凡星)回复于 2003-09-17 16:56:34 得分 0

各位牛人!!!!!  
  在SDI工程里又如何???  
  故去看看我的问题吧!!!!!  
  http://expert.csdn.net/Expert/topic/2270/2270252.xml?temp=.9871332  
  标题:关于托盘编程!急!为什么我的程序隐常不了!!!Top

相关问题

  • 怎么让对话框程序启动时隐藏?
  • 一个对话框程序如何在启动时隐藏自己?
  • 在VC中,如何使基于对话框的程序在启动时隐藏主对话框窗口???给分啦!
  • 基于对话框的应用程序,在程序启动时将对话框隐藏了,如何将其重新显示出来??
  • 对话框的程序如何在启动时,就把他隐藏起来,或是最小化?
  • 对话框程序如何能在启动运行时不显示窗口而隐藏起来?
  • 基于对话框的程序(MFC)如何在刚开始启动时隐藏窗口?
  • 如何让对话框程序一启动就隐藏?
  • 对话框程序启动隐藏窗口的最后一次
  • 如何使得对话框程序启动就隐藏??

关键词

  • .net
  • 函数
  • lpwndpos
  • showwindow
  • onwindowposchanging
  • 对话框
  • 隐藏
  • 托盘
  • sw
  • hide

得分解答快速导航

  • 帖主:sunky_song

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo