一个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);