标题
    
    
        [mfc]怎么能让程序运行时不在任务栏显示图标?
    
 
    
 	 
       
    
    clq
    
    
    
		
        浏览(0) + 
        2010-04-26 10:55:13 发表
        
编辑
         
        
        
        
        关键字: 
        
 
        
        
        
        
                
        [mfc]怎么能让程序运行时不在任务栏显示图标?
        
        
        
        		
		        
                
                
     
    
 
	
	
     
    
       
    
    clq
    
    
    
    
    
    		    
    
          
              
    	楼主wlpwind(robin)2002-06-23 11:19:00 在 VC/MFC / 基础类 提问
怎么能让程序运行时不在任务栏显示图标?  
   
  程序窗口在桌面上显示,且是当前活动窗口,但任务栏中不显示图标。 问题点数:40、回复次数:8Top
1 楼pcman1990(pcman)回复于 2002-06-23 11:24:46 得分 0
让你的主窗口带上WS_EX_TOOLWINDOW风格Top
2 楼pcman1990(pcman)回复于 2002-06-23 11:35:43 得分 0
以SDI和MDI应用为例,你可以在CMainFrame中重载PreCreateWindow(),在其中加一句:  
  cs.dwExStyle   |=   WS_EX_TOOLWINDOW;  
  Top
3 楼pcman1990(pcman)回复于 2002-06-23 11:47:55 得分 20
对基于对话框的应用,稍微复杂一些:  
  先在资源编辑器中,把对话框的属性(Extended   Style中)设成“Tool   Window”,然后在主对话框的OnInitDialog()中加入下面代码:  
          DWORD   Style   =   ::GetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE);  
          Style   =   WS_EX_TOOLWINDOW   ;  
          AfxGetMainWnd()->ShowWindow(SW_HIDE);  
          ::SetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE,   Style);    
          AfxGetMainWnd()->ShowWindow(SW_SHOW);  
  Top
4 楼beijingshizi(北京石子)回复于 2002-06-23 11:49:16 得分 0
支持楼上的Top
5 楼wlpwind(robin)回复于 2002-06-23 15:41:44 得分 0
thank   you.  
   
  我试一试.Top
6 楼Redeon(Leon)回复于 2002-06-26 18:20:31 得分 7
今天我也在想这个问题。后来在网页上和msdn中找到一种方法。  
  先得到任务栏的句柄:  
  hTabWnd   =   FindWindow("Shell_TrayWnd",   0);  
  hTabWnd   =   FindWindowEx(hTabWnd,   0,   "ReBarWindow32",   NULL);  
  hTabWnd   =   FindWindowEx(hTabWnd,   0,   "MSTaskSwWClass",   NULL);  
  hTabWnd   =   FindWindowEx(hTabWnd,   0,   "SysTabControl32",   NULL);  
  然后用TabCtrl_DeleteItem删除你想要删除的那个按钮(就是程序在任务栏中的那个)。  
  不过我调用TabCtrl_GetItem时老是出现非法内存操作,哪位哥们给个方法?  
  Top
7 楼shilong(银羽 www.ylog.net)回复于 2002-06-26 18:48:28 得分 7
在对话框中实现隐藏任务栏也很简单  
  用文本方式打开资源文件,在对话框资源所在的地方  
  把EXSTYLE   WS_EX_APPWINDOW改成WS_EX_TOOLWINDOW  
  保存就可以了Top
8 楼shilong(银羽 www.ylog.net)回复于 2002-06-26 18:48:51 得分 0
在对话框中实现隐藏任务栏也很简单  
  用文本方式打开资源文件,在对话框资源所在的地方  
  把EXSTYLE   WS_EX_APPWINDOW改成WS_EX_TOOLWINDOW  
  保存就可以了Top
9 楼andy_lau(天行键,君子当自强不息!)回复于 2002-06-26 20:39:10 得分 6
对基于对话框的应用,稍微复杂一些:  
  先在资源编辑器中,把对话框的属性(Extended   Style中)设成“Tool   Window”,然后在主对话框的OnInitDialog()中加入下面代码:  
          DWORD   Style   =   ::GetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE);  
          Style   =   WS_EX_TOOLWINDOW   ;  
          AfxGetMainWnd()->ShowWindow(SW_HIDE);  
          ::SetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE,   Style);    
          AfxGetMainWnd()->ShowWindow(SW_SHOW);  
    
    
    
     
 
	 
    
       
    
    clq
    
    
    
    
    
    
    
          
              
    	隐藏掉基于对话框的主窗口.
    //--------------------------------------------------
    //clq
          DWORD   Style   =   ::GetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE);  
          Style   =   WS_EX_TOOLWINDOW   ;  
          AfxGetMainWnd()->ShowWindow(SW_HIDE);  
          ::SetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE,   Style);    
          AfxGetMainWnd()->ShowWindow(SW_SHOW); 
          //AfxGetMainWnd()->ShowWindow(SW_MINIMIZE);
          //AfxGetMainWnd()->ShowWindow(SW_HIDE);
          //::MoveWindow(AfxGetMainWnd()->GetSafeHwnd(), 0, 0, 0,0, FALSE);
          ::MoveWindow(AfxGetMainWnd()->m_hWnd, 0, 0, 0, 0, TRUE);
    //--------------------------------------------------
    
    
     
 
	 
    
       
    
    clq
    
    
    
    
    
    
    
          
              
    	    //--------------------------------------------------
    //clq
    ::MoveWindow(AfxGetMainWnd()->m_hWnd, 0, 0, 0, 0, TRUE);
          DWORD   Style   =   ::GetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE);  
          Style   =   WS_EX_TOOLWINDOW   ;  
          AfxGetMainWnd()->ShowWindow(SW_HIDE);  
          ::SetWindowLong(AfxGetMainWnd()->m_hWnd,   GWL_EXSTYLE,   Style);    
          AfxGetMainWnd()->ShowWindow(SW_SHOW); 
          //AfxGetMainWnd()->ShowWindow(SW_MINIMIZE);
          //AfxGetMainWnd()->ShowWindow(SW_HIDE);
          //::MoveWindow(AfxGetMainWnd()->GetSafeHwnd(), 0, 0, 0,0, FALSE);
          ::MoveWindow(AfxGetMainWnd()->m_hWnd, 0, 0, 0, 0, TRUE);
    //--------------------------------------------------
    
    
     
 
	 
	
    NEWBT官方QQ群1: 276678893
    可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
    但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
    验证问题说明申请入群原因即可.