Chinaunix首页 | 论坛 | 博客
  • 博客访问: 455379
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:18:53

vcxian:每次变图标经过删除,不爽!
建议改为:
//-----------------
//....
switch(bkbmp_n)
{
case 0://nd.uID = IDR_MAINFRAME;
nd.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
break;
case 1://nd.uID = IDI_ICON1;
nd.hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
break;
case 2://nd.uID = IDI_ICON2;
nd.hIcon=AfxGetApp()->LoadIcon(IDI_ICON2);
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON2);
break;
default://nd.uID = IDR_MAINFRAME;
nd.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
nd.hIcon = m_hIcon;
Shell_NotifyIcon(NIM_MODIFY, &nd);
//...

//-----------------
(yinxian@netease.com)
(发表于2005-4-19 18:29:00)

vcxian://    Shell_NotifyIcon(NIM_DELETE, &nd);

(发表于2005-4-19 18:30:00)

angcba:需要每次删除托盘    
Shell_NotifyIcon(NIM_DELETE, &nd);
不删的话程序执行时托盘上将会增加两个图标影响美观.
(发表于2005-4-20 9:02:00)

vcxian:“不删的话程序执行时托盘上将会增加两个图标”?
不可能呀,你试了吗?
(发表于2005-4-20 10:32:00)

angcba:试的结果就是这样!需要删除托盘
(发表于2005-4-20 12:01:00)

amethystwu:angcba:
不知道你是在什么系统下测试? 我分别在Winxp,2K和me下试了一下, 切换托盘图标的时候用Shell_NotifyIcon(NIM_MODIFY, &nd)就够了。当然在程序退出的时候应该用Shell_NotifyIcon(NIM_DELETE, &nd)删除掉它。
(发表于2005-4-20 13:57:00)

amethystwu:不要忘记在switch(bkbmp_n)中删除case 1的nd.uID = IDI_ICON1和case 2中的nd.uID = IDI_ICON2。这里面的uID可不是图标的ID哦。
(发表于2005-4-20 15:22:00)

angcba:我又了一下,两位高手说的有道理,可以把这段程序改为:
void CbackdropDlg::OnTimer(UINT nIDEvent) 
{
if(!bkbmp)
{
bkbmp_n++;
if(bkbmp_n>2) bkbmp_n=0; 
//    Shell_NotifyIcon(NIM_DELETE, &nd);
switch(bkbmp_n)
{
case 0:
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
break;
case 1:
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
break;
case 2:
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON2);
break;
default:
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
nd.hIcon = m_hIcon;
// Shell_NotifyIcon(NIM_ADD, &nd);
    Shell_NotifyIcon(NIM_MODIFY, &nd);
InvalidateRect(NULL,TRUE);//刷当前程序界面

}
CDialog::OnTimer(nIDEvent);
}
(发表于2005-4-20 17:08:00)

vcxian:amethystwu:
您说的对!(当时我只是随手改的)
(发表于2005-4-20 19:15:00)

sohou:这么简单的东西拜托不要随便拿上来啊
(发表于2005-5-12 13:24:00)

uljtg021:不错
(发表于2007-1-15 18:59:00)

uljtg021:程序写的不错 很有指导意义
(发表于2007-1-15 18:59:00)

firefly3233:如果设计一个MFC程序,这段代码应该放到哪个类中?我试放到CMainFrame类中,编译没错,一执行就非法关闭...放到CXXXApp类中也不行...
(发表于2007-4-29 20:31:00)

..........................................................................
--------------------next---------------------

阅读(191) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~