CMainFrame::~CMainFrame()
{
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=this->m_hWnd;
tnid.uID=IDR_MAINFRAME;
Shell_NotifyIcon(NIM_DELETE,&tnid);
}可是发现,程序点击关闭退出程序时,托盘图标并没有消失为了测试,将上段代码放入窗口最大化的消息中.结果发现,在窗口最大化的时候,正常去掉了托盘图标.也就是说,上段代码并没有错误,为什么放在CMainFrame的析构函数里,却不能去掉托盘图标呢?那应该放在什么地方比较好呢?另外,发现在窗口最大化时,图标虽然去掉了,但是屏幕发生了明显的抖动现象.怎么会这样呢?

解决方案 »

  1.   

    难道是析构的时候m_hWnd已经不对了?你预先保存一个m_hWnd看看,tnid作为CMainFrame的成员,然后创建的时候就设定好tnid.cbSize和tnid.hWnd看看。或者你调用GetSafeHwnd看看……
      

  2.   

    在这个时候this->m_hWnd的窗口已经被销毁了,当然就不能释放拉。
    可以在你刚退出的时候,如点击退出键的时候释放。
      

  3.   

    在OnClose()里面释放应该也可以。
      

  4.   

    原来如此
    在OnClose和OnSysCommand的SC_CLOSE里面都可以,没有问题了,谢谢大家!