CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎么让对话框程序启动时隐藏?

楼主vtable9999(肝肝肝肝)2002-05-24 22:06:51 在 VC/MFC / 基础类 提问

如题.   thanks 问题点数:150、回复次数:27Top

1 楼dgj(我是一匹狼)回复于 2002-05-24 22:09:58 得分 10

ShowWindow(SW_HIDE);Top

2 楼vtable9999(肝肝肝肝)回复于 2002-05-24 22:11:59 得分 0

我看到在int   CWnd::RunModalLoop(DWORD   dwFlags)中显示对话框的代码就只有这么一段:  
  //   show   the   dialog   when   the   message   queue   goes   idle  
  if   (bShowIdle)  
  {  
   ShowWindow(SW_SHOWNORMAL);  
   UpdateWindow();  
   bShowIdle   =   FALSE;  
  }  
  这岂不是无法让它以SW_HIDE启动???Top

3 楼xuying()回复于 2002-05-24 22:12:00 得分 0

在OnInitDialog函数中添加:  
      ShowWindow(SW_HIDE);  
  Top

4 楼vtable9999(肝肝肝肝)回复于 2002-05-24 22:12:53 得分 0

to   dgj(我是一匹狼):  
   
    我是想知道如何在启动时隐藏.Top

5 楼vtable9999(肝肝肝肝)回复于 2002-05-24 22:13:49 得分 0

我不知道在什么地方加上ShowWindow(SW_HIDE)才能让程序界面不出现Top

6 楼papaya_stone(^_^)shentong(^_^)回复于 2002-05-24 22:25:59 得分 30

在OnInitDialog()中;  
   
  BOOL   CTestDlg::OnInitDialog()  
  {  
  CDialog::OnInitDialog();  
   
  //   Add   "About..."   menu   item   to   system   menu.  
   
  //   IDM_ABOUTBOX   must   be   in   the   system   command   range.  
  ASSERT((IDM_ABOUTBOX   &   0xFFF0)   ==   IDM_ABOUTBOX);  
  ASSERT(IDM_ABOUTBOX   <   0xF000);  
   
  CMenu*   pSysMenu   =   GetSystemMenu(FALSE);  
  if   (pSysMenu   !=   NULL)  
  {  
  CString   strAboutMenu;  
  strAboutMenu.LoadString(IDS_ABOUTBOX);  
  if   (!strAboutMenu.IsEmpty())  
  {  
  pSysMenu->AppendMenu(MF_SEPARATOR);  
  pSysMenu->AppendMenu(MF_STRING,   IDM_ABOUTBOX,   strAboutMenu);  
  }  
  }  
   
  //   Set   the   icon   for   this   dialog.     The   framework   does   this   automatically  
  //     when   the   application's   main   window   is   not   a   dialog  
  SetIcon(m_hIcon,   TRUE); //   Set   big   icon  
  SetIcon(m_hIcon,   FALSE); //   Set   small   icon  
   
  //   TODO:   Add   extra   initialization   here  
   
                    ShowWindow(SW_HIDE);  
   
  return   TRUE;     //   return   TRUE     unless   you   set   the   focus   to   a   control  
  }Top

7 楼lin1980(Hydralisk)回复于 2002-05-24 22:28:39 得分 10

同意Top

8 楼papaya_stone(^_^)shentong(^_^)回复于 2002-05-24 22:33:44 得分 0

呵呵,好像不成耶!Top

9 楼xuying()回复于 2002-05-24 22:36:52 得分 0

不行,放在OnInitDialog中不可以,我试过了。Top

10 楼lj9852(Loading)回复于 2002-05-24 22:45:57 得分 30

在你的OnInitDialog()里加入这一段:  
   
  WINDOWPLACEMENT     wp;  
  wp.length=sizeof(WINDOWPLACEMENT);  
  wp.flags=WPF_RESTORETOMAXIMIZED;  
  wp.showCmd=SW_HIDE;  
  SetWindowPlacement(&     wp);    
   
  立刻搞定!Top

11 楼papaya_stone(^_^)shentong(^_^)回复于 2002-05-24 22:49:30 得分 0

这样:  
   
  BOOL   CTestDlg::OnInitDialog()  
  {  
  CDialog::OnInitDialog();  
   
  //   Add   "About..."   menu   item   to   system   menu.  
   
  //   IDM_ABOUTBOX   must   be   in   the   system   command   range.  
  ASSERT((IDM_ABOUTBOX   &   0xFFF0)   ==   IDM_ABOUTBOX);  
  ASSERT(IDM_ABOUTBOX   <   0xF000);  
   
  CMenu*   pSysMenu   =   GetSystemMenu(FALSE);  
  if   (pSysMenu   !=   NULL)  
  {  
  CString   strAboutMenu;  
  strAboutMenu.LoadString(IDS_ABOUTBOX);  
  if   (!strAboutMenu.IsEmpty())  
  {  
  pSysMenu->AppendMenu(MF_SEPARATOR);  
  pSysMenu->AppendMenu(MF_STRING,   IDM_ABOUTBOX,   strAboutMenu);  
  }  
  }  
   
  //   Set   the   icon   for   this   dialog.     The   framework   does   this   automatically  
  //     when   the   application's   main   window   is   not   a   dialog  
  SetIcon(m_hIcon,   TRUE); //   Set   big   icon  
  SetIcon(m_hIcon,   FALSE); //   Set   small   icon  
   
                  //隐藏窗口  
                  WINDOWPLACEMENT     wp;  
                  wp.length=sizeof(WINDOWPLACEMENT);  
                  wp.flags=WPF_RESTORETOMAXIMIZED;  
                  wp.showCmd=SW_HIDE;  
                  SetWindowPlacement(&     wp);  
   
   
  return   TRUE;     //   return   TRUE     unless   you   set   the   focus   to   a   control  
  }  
   
  Top

12 楼kestrel(隼)回复于 2002-05-24 22:55:26 得分 10

干吗这么麻烦?换个角度思考问题,你可以把它做成封面嘛,显示若干时间后  
      AfxGetMainWnd()->ShowWindow(SW_HIDE);Top

13 楼xuying()回复于 2002-05-24 22:56:16 得分 0

测试通过,楼上的对。Top

14 楼papaya_stone(^_^)shentong(^_^)回复于 2002-05-24 23:02:51 得分 0

这两个都不成:  
  AfxGetMainWnd()->ShowWindow(SW_HIDE);  
  ::ShowWindow(m_hWnd,SW_HIDE);  
  :——(Top

15 楼roland_c(归去来兮)回复于 2002-05-24 23:13:18 得分 10

对话框资源中有一个Visual项,只要它不打勾就可以Top

16 楼xuying()回复于 2002-05-24 23:24:13 得分 0

在对话框资源中改也不管用。Top

17 楼vtable9999(肝肝肝肝)回复于 2002-05-24 23:39:52 得分 0

我先试试Top

18 楼vtable9999(肝肝肝肝)回复于 2002-05-24 23:46:45 得分 0

to   papaya_stone(^_^)shentong(^_^)  
  to   xuying()  
  to   lj9852(老实狼)    
   
  哎,不是很理想呀,   SW_HIDE没有起作用  
   
  谁有更好的方法???Top

19 楼vtable9999(肝肝肝肝)回复于 2002-05-24 23:50:39 得分 0

int   CWnd::RunModalLoop(DWORD   dwFlags)  
  //   show   the   dialog   when   the   message   queue   goes   idle  
  if   (bShowIdle)  
  {  
   ShowWindow(SW_SHOWNORMAL);  
   UpdateWindow();  
   bShowIdle   =   FALSE;  
  }  
  MFC代码是这样的,是不是无法实现这种功能??Top

20 楼xuying()回复于 2002-05-24 23:56:01 得分 0

我测试了   papaya_stone(^_^)shentong(^_^)   的方法,没有问题啊。Top

21 楼vtable9999(肝肝肝肝)回复于 2002-05-25 00:00:22 得分 0

它只是把对话框弄小了,在任务栏还是有图标,   SW_HIDE没有起作用Top

22 楼pcman1990(pcman)回复于 2002-05-25 00:04:09 得分 0

试试这个:  
  在OnInitDialog中加入下面代码:  
   
  ModifyStyle(WS_VISIBLE,   0);  
  Top

23 楼pcman1990(pcman)回复于 2002-05-25 00:06:37 得分 0

ModifyStyle(WS_VISIBLE,   0);  
  加在OnInitDialog()最后return之前Top

24 楼masterz(www.fruitfruit.com)回复于 2002-05-25 00:24:11 得分 30

add   WM_WINDOWPOSCHANGING   handler,  
  if   (lpwndpos->flags   &   SWP_SHOWWINDOW)    
  {  
  lpwndpos->flags   &=   ~SWP_SHOWWINDOW;  
  PostMessage(WM_WINDOWPOSCHANGING,   0,   (LPARAM)lpwndpos);  
  ShowWindow(SW_HIDE);  
  }  
  else  
  CDialog::OnWindowPosChanging(lpwndpos);Top

25 楼111222(www.111222.cn)回复于 2002-05-25 00:28:31 得分 10

pretranslatemsg里把WM_SHOW过滤一下不就得了Top

26 楼improgrammer(无忌)回复于 2002-05-25 01:28:38 得分 10

vtable9999:  
  int   CWnd::RunModalLoop(DWORD   dwFlags);是不是可以override的虚拟函数?  
  Top

27 楼lj9852(Loading)回复于 2002-05-25 02:34:57 得分 0

你的意思是在任务栏也要隐藏吗,在OnInitDialog()里加入:    
   
  //隐藏窗体:  
   
  WINDOWPLACEMENT     wp;  
  wp.length=sizeof(WINDOWPLACEMENT);  
  wp.flags=WPF_RESTORETOMAXIMIZED;  
  wp.showCmd=SW_HIDE;  
  SetWindowPlacement(&     wp);    
   
  //在任务栏和atl+tab列表中隐藏:  
   
  ModifyStyleEx(WS_EX_APPWINDOW,   WS_EX_TOOLWINDOW);Top

28 楼vtable9999(肝肝肝肝)回复于 2002-05-25 03:10:42 得分 0

to   lj9852(老实狼):  
   
  WINDOWPLACEMENT     wp;  
  wp.length=sizeof(WINDOWPLACEMENT);  
  wp.flags=WPF_RESTORETOMAXIMIZED;  
  wp.showCmd=SW_HIDE;  
  SetWindowPlacement(&     wp);    
   
  它只是把对话框弄小了,对吧?效果不好  
   
  to   improgrammer():  
   
  RunModalLoop不是virtual函数,不过可以重载。  
  通过重载DoModel、RunModelLoop可以解决问题,谢谢各位!!!  
   
  Top

相关问题

  • 如何让对话框程序一启动就隐藏?
  • 对话框程序启动隐藏窗口的最后一次
  • 如何使得对话框程序启动就隐藏??
  • 基于对话框的应用程序如何一启动就先把对话框隐藏掉?
  • 怎样使一个基于对话框的程序启动即隐藏
  • 如何让一个对话框程序启动后即自动隐藏?
  • 一个对话框程序如何在启动时隐藏自己?
  • 如何让一个对话框程序在一启动后就隐藏呢?
  • 基于对话框的应用程序,在程序启动时将对话框隐藏了,如何将其重新显示出来??
  • 在VC中,如何使基于对话框的程序在启动时隐藏主对话框窗口???给分啦!

关键词

  • 函数
  • 代码
  • wp
  • windowplacement
  • aboutbox
  • sw
  • oninitdialog
  • 对话框
  • showwindow
  • hide

得分解答快速导航

  • 帖主:vtable9999
  • dgj
  • papaya_stone
  • lin1980
  • lj9852
  • kestrel
  • roland_c
  • masterz
  • 111222
  • improgrammer

相关链接

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

广告也精彩

反馈

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