CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

启动后如何直接隐藏到任务栏?

楼主antwork(人活着总得有点精神)2001-01-03 17:46:00 在 VC/MFC / 基础类 提问

我看了相关的文章,不过没什么大用。  
  隐藏到任务栏已经没有问题,只是由于这个是有模式的对话框,所以用了  
  ShowWindow   (SW_HIDE);对话框仍旧显示出来。  
   
  如何才能像Foxmail那样启动后自动隐藏到对话框呢。  
  。。寻求完美解决方案,最好隐藏时不闪烁。 问题点数:95、回复次数:16Top

1 楼abnegate(无知者无畏)回复于 2001-01-03 17:51:00 得分 15

利用api   函数Shell_NotifyIconTop

2 楼adrianx(蓝色心情)回复于 2001-01-03 17:52:00 得分 0

FOXMAIL不是一个基于对话框的程序Top

3 楼antwork(人活着总得有点精神)回复于 2001-01-03 17:57:00 得分 0

我的问题不是怎么让对话框藏到任务栏,而是如何启动后不显示主窗体,直接隐藏到任务栏。  
  我没说Foxmail是基于对话框的程序,只是问如何像它那样可以启动后直接藏到任务栏。Top

4 楼adrianx(蓝色心情)回复于 2001-01-03 18:03:00 得分 0

你的任务栏好象是指托盘(TRAY)图标????  
  Top

5 楼dusj(小兔乖乖)回复于 2001-01-03 18:04:00 得分 15

响应WM_CREATE,再利用Shell_NotifyIcon,应该可以Top

6 楼vcmfc(【痛苦的虫虫】)回复于 2001-01-03 18:36:00 得分 15

难呀!,有模式的在启动的时候你根本就无法进行ShowWindow(SW_HIDE),无模式在ShowWindow(SW_HIDE);就返回,本人是井底之蛙,你知道一定要告诉俺!Top

7 楼antwork(人活着总得有点精神)回复于 2001-01-03 18:41:00 得分 0

到System   Tray  
  现在是如何隐藏,vcmfc所说的是事实。  
  不知哪位仙人指点迷津。。。  
   
  分不够可以再加。Top

8 楼mrboy()回复于 2001-01-03 18:42:00 得分 0

To   dusj:   shell_NotifyIcon   如何用啊?   pnid   如何设?    
  Thanks   in   advance.Top

9 楼antwork(人活着总得有点精神)回复于 2001-01-03 18:53:00 得分 0

加分了,大家来看阿!!!Top

10 楼antwork(人活着总得有点精神)回复于 2001-01-03 18:57:00 得分 0

在描述一下问题,以免哪为仁兄发生理解错误,翻错笔记本。  
  目的,让基于对话框的程序启动后直接进入System   Tray(这个东东中文怎么说?),  
  只要球不显示对话框的技术,关于System   Tray的一些东东可以不讨论。  
  洗眼镜了。。。Top

11 楼antwork(人活着总得有点精神)回复于 2001-01-03 21:32:00 得分 0

埃,现在只实现了自动隐藏,就是启动时要闪一下。  
  InitDialog中加入  
  PostMessage   (WM_SIZE,   WM_SHOWMINIMIZED,   0);自动最小化  
  我在OnSize   ()里判断如果是SIZE_MINIMIZED消息,就隐藏到system   tray  
   
  闪烁是由于在DoModal   ()里的那句CreateDialogIndirect   ()引起的,不过我不知道如何防止闪烁。。。Top

12 楼adrianx(蓝色心情)回复于 2001-01-03 21:53:00 得分 20

 
  int   CXXXWnd::OnCreate(LPCREATESTRUCT   lpCreateStruct)    
  {  
  if   (CXXXParentClass::OnCreate(lpCreateStruct)   ==   -1)  
  return   -1;  
          m_uNotifyHitMSG   =   RegisterWindowMessage("YOURUSE_MESSAGE");//注册消息以免与其它程序冲突  
          AddTrayIcon();  
          return   0;  
  }  
  void   ::OnDestroy()    
  {  
  CXXXParentClass::OnDestroy();  
  DeleteTrayIcon();  
   
  }  
   
  LRESULT   CXXXWnd::WindowProc(UINT   message,   WPARAM   wParam,   LPARAM   lParam)    
  {  
          if(message==m_uNotifyHitMSG)  
          {  
                  switch(lParam)  
                  {  
                          case   WM_LBUTTONDBLCLK:  
                          case   WM_LBUTTONDOWN:  
                          case   WM_LBUTTONUP:  
                          case   WM_RBUTTONDBLCLK:  
                          case   WM_RBUTTONDOWN:  
                          case   WM_RBUTTONUP:  
                  }  
                  return   1;  
          }  
  return   CView::WindowProc(message,   wParam,   lParam);  
  }  
   
  void   CXXXWnd::AddTrayIcon()  
  {  
          //TODO:   Add   your   source   code   here  
  NOTIFYICONDATA   tnid;  
          HICON   hicon   =   LoadIcon(GetModuleHandle(NULL),IDI_YOURICONID);  
  tnid.cbSize   =   sizeof(NOTIFYICONDATA);  
  tnid.hWnd   =   (HWND)Handle;  
  tnid.uID   =   (UINT)this;  
  tnid.uFlags   =   NIF_MESSAGE   |   NIF_ICON   |   NIF_TIP;  
  tnid.uCallbackMessage   =   m_uNotifyHitMSG;  
  tnid.hIcon   =   hicon;  
        strcpy(tnid.szTip,"Your   Strings   !!!");  
  Shell_NotifyIcon(NIM_ADD,&tnid);  
  }  
  void   CXXXWnd::DeleteTrayIcon()  
  {  
          //TODO:   Add   your   source   code   here  
   
          NOTIFYICONDATA   tnid;  
   
          tnid.cbSize   =   sizeof(NOTIFYICONDATA);  
          tnid.hWnd   =   (HWND)Handle;  
          tnid.uID   =   (UINT)this;  
   
          Shell_NotifyIcon(NIM_DELETE,   &tnid);  
  }  
   
  void   CXXXWnd::ChangeTips()  
  {  
          //TODO:   Add   your   source   code   here  
   
          NOTIFYICONDATA   tnid;  
          tnid.cbSize   =   sizeof(NOTIFYICONDATA);  
          tnid.hWnd   =   (HWND)Handle;  
          tnid.uID   =   (UINT)this;  
  tnid.uFlags   =NIF_TIP;  
          strcpy(tnid.szTip,"Your   String   Changed   !!!!");  
          Shell_NotifyIcon(NIM_MODIFY,   &tnid);  
  }  
  Top

13 楼antwork(人活着总得有点精神)回复于 2001-01-03 22:01:00 得分 0

多谢楼上这位大哥。Top

14 楼newx(Royale with Cheese)回复于 2001-01-03 23:07:00 得分 20

哎呀呀,太复杂了!  
  只要在OnInitDialog()中调用  
  SetWindowPos(  
      hWnd,                         //   your   dialog   window   handle  
      NULL,                         //   placement-order   handle  
      0,                               //   horizontal   position  
      0,                               //   vertical   position  
      0,                               //   width  
      0,                               //   height  
      SWP_HIDEWINDOW       //   window-positioning   options  
  );  
  应该可以搞定。  
  你前面提到的闪烁问题在于用了PostMessage(),如果用SendMessage()可能也没事了。Top

15 楼antwork(人活着总得有点精神)回复于 2001-01-03 23:17:00 得分 0

用SendMessage()也一样的,我看到codeguru早有人提出类似的问题,不过都没有好的答案。Top

16 楼Acely(Acely)回复于 2001-01-04 00:13:00 得分 10

重载CMainFrame::OnPreWindows(LPCREATESTRUCT   lpCreateStruct)试一试,好像是这个函数  
  只要将lpCreateStruct的属性配置一下就行了,你可以看看MSDN  
  Top

相关问题

  • 隐藏到任务栏中
  • 关于任务栏隐藏?
  • 如何隐藏一个应用程序启动后在任务栏上出现的按扭
  • 怎样在程序启动是将windows的任务栏设为自动隐藏&&去掉总在最前属性??
  • 如何在PB中隐藏任务栏
  • 隐藏/显示任务栏的问题
  • 紧急,隐藏任务栏问题
  • 请问如何在启动程序的时候把windows的任务栏隐藏,或者把它改成自动隐藏的?
  • 关于任务栏,在程序中调出隐藏在任务栏的应用程序?
  • 窗体在任务栏中不可见,不在任务栏外,是隐藏,在后台工作

关键词

  • 模式
  • shell
  • 任务栏
  • tnid
  • 隐藏
  • 对话框
  • cxxxwnd
  • 启动
  • lpcreatestruct
  • unotifyhitmsg

得分解答快速导航

  • 帖主:antwork
  • abnegate
  • dusj
  • vcmfc
  • adrianx
  • newx
  • Acely

相关链接

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

广告也精彩

反馈

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