好贷网好贷款

程序最小化到系统托盘

发布时间:2016-12-5 20:33:19 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"程序最小化到系统托盘",主要涉及到程序最小化到系统托盘方面的内容,对于程序最小化到系统托盘感兴趣的同学可以参考一下。

使用Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA lpdata)函数。在此之前需要建立PNOTIFYICONDATA结构体。 MSDN中PNOTIFYICONDATA结构体如下: typedef struct _NOTIFYICONDATA {    DWORD cbSize;    HWND hWnd;    UINT uID;    UINT uFlags;    UINT uCallbackMessage;    HICON hIcon;    #if (_WIN32_IE < 0x0500)        TCHAR szTip[64];    #else        TCHAR szTip[128];    #endif    #if (_WIN32_IE >= 0x0500)        DWORD dwState;        DWORD dwStateMask;        TCHAR szInfo[256];        union {            UINT  uTimeout;            UINT  uVersion;        } DUMMYUNIONNAME;        TCHAR szInfoTitle[64];        DWORD dwInfoFlags;    #endif    #if (_WIN32_IE >= 0x600)        GUID guidItem;    #endif} NOTIFYICONDATA, *PNOTIFYICONDATA; 我们需要定义这几个参数: cbSize = sizeof(NOTIFYICONDATA);//结构体大小 tnd.hWnd = this->m_hWnd;//接收发送出消息的窗口的句柄 tnd.uID = IDR_MAINFRAME;//最小化后显示在托盘的图标的ID tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;//指示结构体中有效的成员 tnd.uCallbackMessage = UM_TRAY;//程序自定义的消息,当鼠标移动、单击、双击 或是其他鼠标事件发生在托盘程序上时,所发送的消息 tnd.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));//所加入图标的句柄 strcpy(tnd.szTip,"我的托盘程序");//鼠标移到我们的托盘程序上时现实的文字   看了以上文字,大家可能对托盘程序的原理有些蒙,那我就简单地讲讲吧。 当调用Shell_NotifyIcon时,程序向右下角发出了一个消息,这个消息在函数中第一个参数有定义,可以是加入(NIM_ADD)等。设定的NOTIFYICONDATA结构体,指定了显示在托盘的程序图标、当鼠标事件发生时,发送的一个UM_TRAY消息、接受这个消息的窗口句柄等内容。我们可以在程序中自己添加对UM_TRAY的相应,我是这样写的: void CMyRingDlg::OnTray(WPARAM wParam,LPARAM lParam){ UINT uID;//发出该消息的图标的ID UINT uMouseMsg;//鼠标动作 POINT pt; uID = (UINT)wParam; uMouseMsg = (UINT)lParam; if(uMouseMsg == WM_LBUTTONDOWN)//如果是单击右键 {  switch(uID)  {  case IDR_MAINFRAME://如果是我们的图标   GetCursorPos(&pt);//取得鼠标位置   AfxGetApp()-> m_pMainWnd->ShowWindow(SW_SHOWNORMAL);//显示程序窗口   break;  default:   break;  } } return;} 当然,在执行Shell_NotifyIcon后还需要隐藏我们的窗口,我们用AfxGetApp( )->m_pMainWnd->ShowWindow(SW_HIDE)来实现。   这样,就实现了我们把程序隐藏到托盘的要求。 

上一篇:与老婆大战三百回合
下一篇:让编辑框自动换行

相关文章

相关评论