要实现系统托盘程序,就要借助Shell_NotifyIcon这个函数。
下面是一个例子:
首先要初始化一个NOTIFYICONDATA
m_Tnd.cbSize=sizeof(NOTIFYICONDATA); m_Tnd.hWnd=this->m_hWnd; m_Tnd.uID=IDD_CONSOLE_DIALOG; m_Tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; m_Tnd.uCallbackMessage=NULL; m_Tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON_ID)); strcpy(m_Tnd.szTip,"Test"); Shell_NotifyIcon(NIM_ADD,&m_Tnd); |
上面的m_Tnd就是一个NOTIFYICONDATA,其中IDI_ICON_ID是图标的ID,IDD_CONSOLE_DIALOG是窗口ID
初始化完成之后调用Shell_NotifyIcon(NIM_ADD,&m_Tnd);将图标加入系统托盘
以后可以调用 m_Tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON_ID));来修改系统托盘的图标,然后调用Shell_NotifyIcon(NIM_MODIFY, &m_Tnd);更新系统托盘的图标,如果要移除系统托盘的图标可以调用Shell_NotifyIcon(NIM_DELETE, &m_Tnd);