您的位置:首页 > 运维架构 > Shell

VC下添加和删除系统托盘图标,及托盘事件的响应

2009-03-25 08:59 232 查看
 

添加和删除系统托盘图标:

//需要添加一个成员变量

NOTIFYICONDATA m_nd; //NOTIFYICONDATA结构

 

/***************************************

 * 将图标加入系统托盘

 * 参数:

 * hWnd - 窗体句柄

 * hIcon  - 所要加入的图标句柄

 * title     - 悬停于系统托盘之上时所要显示的消息

 * uCallbackMessage - 消息标识(需用户自己定义消息)

 ***************************************/

void CMyDlg::AddIcon(HWND hWnd, HICON hIcon, UINT uCallbackMessage, char *title)

{

        m_nd.cbSize = sizeof(NOTIFYICONDATA);

        m_nd.hWnd = hWnd;

        m_nd.uID = IDR_MAINFRAME;

        m_nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;

        m_nd.uCallbackMessage = uCallbackMessage;

        m_nd.hIcon = hIcon;

        strcpy(m_nd.szTip, title);

        Shell_NotifyIcon(NIM_ADD, &m_nd);       //加入图标

}

 

//删除系统托盘图标

void CMyDlg::RemoveIcon()

{

        Shell_NotifyIcon(NIM_DELETE, &m_nd);

}

下面就是为图标添加自己的响应消息:

//用户定义的消息(在相应头文件中加入)

#define MYWM_NOTIFYICON WM_USER+1

 

//添加WinProc消息函数

LRESULT CMyCatchScreenDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

 // TODO: Add your specialized code here and/or call the base class

 switch(message)

 {

  case MYWM_NOTIFYICON:

   //如果是用户定义的消息

   if(lParam==WM_LBUTTONDOWN)

   {

    //添加自己的函数

   

    //鼠标单击图标时主窗口出现

    //ShowMyWindow();

   }

   else if(lParam==WM_RBUTTONDOWN)

   {

    //添加自己的函数

   

    //鼠标右键单击弹出选单

    /*

    CMenu menu;

    menu.LoadMenu(IDR_MY_MENU); //载入事先定义的选单

    CMenu*pMenu=menu.GetSubMenu(0);

    CPoint pos;

    GetCursorPos(&pos);

    pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());

    */

   }

  break;

 }

 return CDialog::WindowProc(message, wParam, lParam);

}

调用演示:

void CMyDlg::ShowMyWindow()

{

        RemoveIcon();   //删除系统图标

        ShowWindow(SW_SHOW);    //显示窗口

}

 

void CMyDlg::HideMyWindow()

{

        ShowWindow(SW_HIDE);    //隐藏窗口

        AddIcon(m_hWnd,m_hIcon,MYWM_NOTIFYICON,“MyDlg”);        //添加系统图标

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  menu shell delete user