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

关于系统栏上的图标

楼主rd828(这服烧包,延两人)2005-11-03 17:44:18 在 VC/MFC / 基础类 提问

我建立了一个基于单文档的小程序,可以系统栏添加图标,正常显示。但是基于对话框的显示的时候不显示我要求的图标,显示一小块灰颜色,就是系统栏默认的颜色  
  谁可以解决? 问题点数:100、回复次数:9Top

1 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-11-03 17:45:20 得分 50

2000下只能是16色图标Top

2 楼happyparrot(快乐鹦鹉)回复于 2005-11-03 18:07:07 得分 50

确认你选择的图标是存在的。该图标有16*16的图片Top

3 楼rd828(这服烧包,延两人)回复于 2005-11-03 18:14:01 得分 0

我的是2003,而且两个小程序用的图标是一样的Top

4 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-11-03 18:20:14 得分 0

tnid.cbSize   =   sizeof(NOTIFYICONDATA);    
          tnid.hWnd   =   hwnd;    
          tnid.uID   =   uID;    
          tnid.uFlags   =   NIF_MESSAGE   |   NIF_ICON   |   NIF_TIP;    
          tnid.uCallbackMessage   =   MYWM_NOTIFYICON;    
  //这里图标填错了  
          tnid.hIcon   =   hicon;    
          if   (lpszTip)    
                  lstrcpyn(tnid.szTip,   lpszTip,   sizeof(tnid.szTip));    
          else    
                  tnid.szTip[0]   =   '\0';    
     
          res   =   Shell_NotifyIcon(NIM_ADD,   &tnid);    
  Top

5 楼rd828(这服烧包,延两人)回复于 2005-11-03 18:28:32 得分 0

为什么基于单文档的就可以正常显示,基于对话框的却显示不正常呢?  
  就好像显示了一个图标,但是那个图标是一片灰颜色Top

6 楼rd828(这服烧包,延两人)回复于 2005-11-03 18:31:27 得分 0

这是基于对话框的源代码:  
  void   CTaskbariconDlg::OnControlAdd()    
  {  
  Shell_NotifyIcon(NIM_ADD,&nid);  
  }  
   
  BOOL   CTaskbariconDlg::PreCreateWindow(CREATESTRUCT&   cs)    
  {  
  hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));  
  nid.cbSize=sizeof(NOTIFYICONDATA);  
  nid.hWnd=GetSafeHwnd();  
  nid.uID=IDR_MAINFRAME;  
  nid.uFlags=NIF_ICON|NIF_TIP;  
   
  nid.hIcon=hIcon;  
  strcpy(nid.szTip,"任务栏图标");  
   
  return   CDialog::PreCreateWindow(cs);  
  }  
   
   
  这是基于单文档的:  
  BOOL   CTaskView::PreCreateWindow(CREATESTRUCT&   cs)  
  {  
  //   TODO:   Modify   the   Window   class   or   styles   here   by   modifying  
  //     the   CREATESTRUCT   cs  
   
  hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));  
  nid.cbSize=sizeof(NOTIFYICONDATA);  
  nid.hWnd=GetSafeHwnd();  
  nid.uID=IDR_MAINFRAME;    
  nid.uFlags=NIF_ICON|NIF_TIP;    
  nid.hIcon=hIcon;  
  strcpy(nid.szTip,"任务栏图标");  
   
   
   
  return   CView::PreCreateWindow(cs);  
  }  
  void   CTaskView::OnControlAdd()    
  {  
   
  Shell_NotifyIcon(NIM_ADD,&nid);  
  }  
  Top

7 楼happyparrot(快乐鹦鹉)回复于 2005-11-03 18:31:54 得分 0

估计还是你用错了吧。Top

8 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-11-03 18:33:07 得分 0

hIcon   =   AfxGetApp()->LoadIcon(IDR_MAINFRAME);Top

9 楼rd828(这服烧包,延两人)回复于 2005-11-03 18:35:51 得分 0

我感觉关键的地方好像在这里  
  CTaskbariconDlg::PreCreateWindow  
  CTaskView::PreCreateWindowTop

相关问题

  • 系统状态栏图标问题~~~~~~~~~~~~~
  • win98系统图标
  • 在delphi5中如何将程序图标添加到系统栏?
  • 如何换去标题栏上的系统菜单图标?
  • 如何查询系统任务栏中的程序图标?
  • 做了一个系统栏图标控件,大家来看看!
  • 求救:Kerio Personal Firewall (kpf) 系统状态栏无图标
  • 大送分!!!回答正确另有加分,工具栏的图标,系统图标???
  • 把程序放到任何栏的系统盒里,退出后,系统盒里的图标还在,如何在退出时清除系统盒里的图标?
  • 点标题栏的图标时系统发送的是什么消息?

关键词

  • 文档
  • 系统
  • 图标
  • tnid
  • nid
  • nif
  • hicon
  • ctaskbaricondlg
  • sztip
  • precreatewindow

得分解答快速导航

  • 帖主:rd828
  • goodboyws
  • happyparrot

相关链接

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

广告也精彩

反馈

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