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---------------------