隐藏程序图标到任务栏

BOOL TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip)
{
 BOOL bReturn;
 NOTIFYICONDATA NofityData;
 NofityData.cbSize = sizeof(NOTIFYICONDATA);
 NofityData.hWnd = hWnd;
 NofityData.uID = IDR_MAINFRAME;                                                //工具栏图标ID
 NofityData.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;                //指定哪些项有效
 NofityData.uCallbackMessage = WM_MY_TRAY_NOTIFICATION;   //程序定义的响应任务栏图标操作的消息
 NofityData.hIcon = hIcon;                                                             //图标的指针
 lstrcpyn(NofityData.szTip, pszTip, sizeof(NofityData.szTip));         //提示信息
 bReturn = Shell_NotifyIcon(dwMessage, &NofityData);                //朝工具栏区域发送消息
 if (hIcon)
  DestroyIcon(hIcon);
 return bReturn;
}

 

Parameters:

hWnd: 接收消息的窗口

dwMessage: 工具栏图标的所作的变化。主要有:NIM_ADD,NIM_DELETE,NIM_MODIFY,NIM_SETFOCUS等对图标动作的定义。

hIcon: 指定工具栏图标

pszTip:提示消息

 

通过上面的函数我们就可以随意的处理工具栏的图标操作了。

如想添加图标:

 TrayMessage(m_hWnd, NIM_ADD, NULL, "测试程序");
 TrayMessage(m_hWnd, NIM_MODIFY, m_hIcon, "测试程序");

想删除图标:

TrayMessage(m_hWnd, NIM_DELETE, NULL, "");

 

如果要处理图标的消息,需要添上如下消息映射:

BEGIN_MESSAGE_MAP(...)
 ON_MESSAGE(WM_MY_TRAY_NOTIFICATION,OnTrayNotification)
END_MESSAGE_MAP()

在程序中的消息处理函数如下处理:

LRESULT CTest::OnTrayNotification(WPARAM wparam, LPARAM lparam)
{
 switch (lparam )
 {
 case WM_RBUTTONUP://如果右键点击释放
//do something
  break;
 case WM_LBUTTONDBLCLK://如果鼠标左键双击
//do something

break;  
 }
 return 0;
}

你可能感兴趣的:(测试,null,delete,Parameters,工具,任务)