托盘程序创建

来源:互联网 发布:raphael min.js 编辑:程序博客网 时间:2024/06/05 02:48

1。先定义一个NOTIFYICONDATA类型的变量

typedef struct _NOTIFYICONDATA
{
 DWORD cbSize; //以字节为单位的这个结构的大小
 HWND hWnd; //接收托盘图标通知消息的窗口句柄
 UINT uID; //应用程序定义的该图标的ID号
 UINT uFlags; //设置该图标的属性
 UINT uCallbackMessage; //应用程序定义的消息ID号,此消息传递给hWnd
 HICON hIcon; //图标的句柄
 char szTip[64]; //鼠标停留在图标上显示的提示信息
} NOTIFYICONDATA, *PNOTIFYICONDATA;


  该结构中,成员uFlags可以使下列之一或组合:

   NIF_ICON 设置成员hIcon有效
   NIF_MESSAGE 设置成员uCallbackMessage有效
   NIF_TIP 设置成员szTip有效

      uCallbackMessage定义了托盘程序发出的事件,(任何操作都会发出这个消息,如右键、左键等),只要响应这个消息即可。也可以重载
WindowProc对消息进行处理。可以自定义一个消息。然后响应这个消息即可。

2。用Shell_NotifyIcon() 添加即可

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid);


  ---Pnid是NOTIFYICONDATA结构的指针; dwMessage是被传递的消息,可以是以下消息之一:

   NIM_ADD 增加图标
   NIM_DELETE 删除图标
   NIM_MODIFY 修改图标

 

///添加托盘图标

void CDlgTest::OnButton7()
{
 // TODO: Add your control notification handler code here
 m_tnid.cbSize = sizeof(NOTIFYICONDATA);
 m_tnid.hWnd = m_hWnd;
 m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
 m_tnid.uCallbackMessage=MYWM_NOTIFYICON;
 CString szToolTip;
 szToolTip=_T("托盘图标实例");
 _tcscpy(m_tnid.szTip, szToolTip);

 m_tnid.uID=IDR_MAINFRAME;
 HICON hIcon;
 hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
 m_tnid.hIcon = hIcon;
 ::Shell_NotifyIcon(NIM_ADD, &m_tnid);
 if(hIcon) ::DestroyIcon(hIcon);

 AfxGetMainWnd()->ShowWindow(SW_HIDE);

}

//删除托盘图标

void CDlgTest::OnButton8()
{
 // TODO: Add your control notification handler code here
 ::Shell_NotifyIcon(NIM_DELETE, &m_tnid);
}

//托盘响应函数

LRESULT CDlgTest::OnMyWm_Notifyicon(WPARAM wParam, LPARAM lParam)
{
 if(lParam==WM_LBUTTONDBLCLK)
 {
  //AfxMessageBox("message send");
  //AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
  AfxGetMainWnd()->ShowWindow(SW_SHOW);
 }
 else if(lParam==WM_RBUTTONDOWN)
 {
  
  CMenu m;
  m.LoadMenu(IDR_MENU1);
  CMenu *b = m.GetSubMenu(0);
  CPoint cp;
  ::GetCursorPos(&cp);
  b->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, cp.x, cp.y, AfxGetMainWnd());
  
 }
 
 //AfxMessageBox("message send");
 return 0;
}

很简单。。。。

 
原创粉丝点击