100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)

windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)

时间:2022-10-22 12:06:35

相关推荐

windows程序托盘图标以及消息提示--基本知识(Shell_NotifyIcon)

之前说了NOTIFYICONDATA结构体的一些内容,下面继续。

Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息。

原型如下:

BOOL Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA lpdata)

参数简要说明:

dwMessage为输入参数,传递发送的消息,表明要执行的操作。

可选的值如下:

NIM_ADD

向托盘区域添加一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示这个图标,以便以后再次使用Shell_NotifyIcon对此图标操作。

NIM_DELETE

删除托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被删除的这个图标。

NIM_MODIFY

修改托盘区域的一个图标。此时第二个参数lpdata指向的NOTIFYICONDATA结构体中的hWnd和uID成员用来标示需要被修改的这个图标。

NIM_SETFOCUS

Version 5.0. 设置焦点。比如当用户操作托盘图标弹出菜单,而有按下ESC键将菜单消除后,程序应该使用此消息来将焦点设置到托盘图标上。

NIM_SETVERSION

Version 5.0. 设置任务栏按照第二个参数lpdata指向的NOTIFYICONDATA结构体中的uVersion成员指定的版本号来工作。此消息可以允许用户设置是否使用基于Windows2000的version 5.0的风格。uVersion的缺省值为0,默认指明了使用原始Windows 95图标消息风格。具体这两者的区别请参考msdn中的Shell_NotifyIcon函数说明的Remarks。

lpdata为输入参数,是指向NOTIFYICONDATA结构体的指针,结构体内容用来配合第一个参数wMessage进行图标操作。

如果图标操作成功返回TRUE,否则返回FALSE。

如果dwMessage参数设为NIM_SETVERSION,则如果版本设置成功返回TRUE,如果设置的版本不支持返回FALSE。

该函数主要用于任务栏右侧的托盘图标的操作。

下面简单的几行代码详细说明:

实现最小化到托盘的具体操作如下,基于mfc dialog吧:

1.在Resource里新建一个图标 Icon 。

2.在窗体类里添加 NOTIFYICONDATA 结构体对象 m_nfData,可以在OnInitDialog()方法里对结构体进行初始化。

3.重写OnSize(UINT,int,int)函数,自行处理SIZE_MINIMIZED 消息,即点击最小化后的处理。例如:

void CYourProjectDlg::OnSize(UINT nType, int cx, int cy){if( nType == SIZE_MINIMIZED ) //截获消息{Shell_NotifyIcon(NIM_ADD,&m_nfData);ShowWindow(SW_HIDE);}else //其他消息按默认处理方式处理CDialog::OnSize(nType, cx, cy);}

4.添加消息映射,处理WM_TRAYICON消息,即点击托盘图标后的处理

ON_MESSAGE(WM_TRAYICON,&CYourProjectDlg::OnTrayIcon)

5.实现消息映射函数,添加具体操作,例如:

LRESULT CLogCleanToolDlg::OnTrayIcon(WPARAM wParam, LPARAM lParam){if(lParam == WM_LBUTTONDBLCLK) //双击托盘图标{Shell_NotifyIcon(NIM_DELETE,&m_nfData);ShowWindow(SW_SHOWNORMAL);SetForegroundWindow();}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。