范圣帅 - 卡农的魔笛

卡迪的快乐生活

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一个MFC的程序,有个托盘图标,让每个界面退出的时候都能把他删除掉。于是想把这个做一个全局变量,任何界面退出的时候都 

Shell_NotifyIcon(NIM_DELETE,&tnd);

想到 stdafx.h 是整个MFC都包含的,于是把这个声明放入到 stdafx.cpp 中,然后 stdafx.h 中 extern 一下达到全局变量的作用,因为每个 cpp 都包含了 stdafx.h ,这个全局变量已经引用好了,不用每个页面都去 extern 了。

// stdafx.h

extern NOTIFYICONDATA tnd;

// stdafx.cpp

NOTIFYICONDATA tnd;

 其他页面直接使用:

    lstrcpy(tnd.szTip, _T("酷菠萝客户端正在运行中"));
    tnd.cbSize = sizeof(NOTIFYICONDATA);        //NOTIFYICONDATA结构体大小
    tnd.uID = IDR_MAINFRAME;                        //最小化后显示在托盘的图标的ID
    tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;//指示结构体中有效的成员,依次为表示uCallbackMessage 有效、表示hIcon 有效、表示szTip 有效
    tnd.uCallbackMessage = WM_MY_TRAY_NOTIFICATION;//程序员自定义的消息,当鼠标移动、单击、双击或是其他鼠标事件发生在托盘程序上时,所发送的消息
    tnd.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));//所加入图标的句柄

    Shell_NotifyIcon(NIM_ADD,&tnd);

 

posted on 2013-05-15 20:32  范圣帅  阅读(464)  评论(0编辑  收藏  举报