俺觉得吧,你好像没有设置 NOTIFYICONDATA 结构的 hwnd 成员(CMainFrame::PreCreateWindow 时,你已经有创建了其它的窗口?)。

解决方案 »

  1.   

    最好在App类的InitInstance()函数中去做,构造一个NOTIFYICONDATA 结构,用Shell_NotifyIcon去设置,直到ExitInstance时释放。
      

  2.   

    我本人已经解决我在加图标的时候应该在  
    CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 中,具体的原因我个人还不清楚,
    如果有哪位高手能从原理上讲一下为什么?
      

  3.   

    PreCreateWindow 在程序刷新时使用,可以用来调整窗口的大小以及风格等每一个窗口都只会Create一次。
      

  4.   

    我想你应该记得在NOTIFYICONDATA中有一个hWnd的窗口句柄,如果你在PreCreateWindow中实现托盘的注册的话,此时的主窗口尚未建立,系统会认为这是一个无根的图标,所以在你的鼠标移上去后系统就会自动注销。而在OnCreate中时窗口句柄已经建立。以此类推就可以了。