
1、在程序代码中,要使用新代码创建一个托盘图标对象。
2、把设置托盘图标的菜单改为空菜单,即不显示菜单项。
3、定义通知的标题和内容,并使用这个新代码显示通知。
Linix如何实现程序托盘
修改程序命令,在程序命令前面加上”/usr/bin/alltray”
然后在程序后面加上命令:
-s 在首次启动时不隐藏主窗口
-i 使用一个 PNG 文件做为托盘区图标,后接 PNG 文件路径。
-l 使用较大图标,当图标尺寸大于 2424 时使用。
-st 允许在所有可见工作区显示。
-t 当窗口标题变化时显示提示,后接提示显示时间,单位秒。
参考:“/usr/bin/alltray” “prism” -override “/home/red/webapps/webqq@prismapp/overrideini” -webapp webqq@prismapp -t 5 -s -st
打开程序后不马上托盘+每次信息提示5秒+允许在所有可见工作区显示
我的笔记如下帮你解决:
基于对话框的托盘程序实现
NOTIFYICONDATA结构体传递托盘消息,是windows底层API中定义的一个结构体;圆形如下:
typedef struct _NOTIFYICONDATA{
DWORD cbSize; //结构体的大小,以字节为单位
HWND hWnd; //窗口的句柄
UINT uID; //应用程序定义的任务栏图标的标识符
UINT uFlag; //此成员表明具体哪些其他成员为合法数据
UINT uCallbackMessage //应用程序定义的消息标识符
HICON hIcon //增加、修改或删除的图标的句柄
TCHAR szTip[64] //指向一个以\0结束的字符串的指针
DWORD dwState; //Version 50,图标的状态
DWORD dwStateMask; //指明dwState成员的哪些位可以被设置或访问
TCHAR szInfo[256]; //指向一个以\0结束的字符串的指针
union {
UINT uTimeout;
UINT uVersion'
};
TCHAR szInfoTitle[64];
DWORD dwInfoFlags;
GUID guidItem;
}NOTIFYICONDATA,PNOTIFYICONDATA;
1、创建一个MFC对话框程序,名为TrayDialog,为CTrayDialogDlg类添加自定义消息WM_TRAY_NOTIFYICONDATA
2、关联消息映射,消息处理函数如下:
LONG CTrayDialog::OnTrayNotifyicondata(WPARAM wparam,LPARAM lparam)
{
switch (lParam)
{
case WM_RBUTTONUP://在托盘上右键d起时相应处理消息
case WM_LBUTTONDBLCLK://双击托盘的相应消息
ShowWindow(SW_SHOW);
TrayMessage(m_hWnd,NIM_DELETE,NULL,L"");
default:
;
}
return 0;
}
3、添加全局函数TrayMessage(),该函数用来实现托盘信息发送,从而使托盘化,代码如下
BOOL TrayMessage(HWND hWnd,DWORD dwMessage,HICON hIcon,wchar_t pszTip)
{
BOOL bReturn;
NOTIFYICONDATA Notifydata;
NotifydatacbSize = sizeof(NOTIFYICONDATA);
NotifydatahWnd=hWnd;
NotifydatauID=IDR_MAINFRAME;
NotifydatauFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
NotifydatauCallbackMessage=WM_TRAY_NOTIFYICONDATA;
NotifydatahIcon=hIcon;
lstrcpynW(NotifydataszTip,pszTip,sizeof(NotifydataszTip));
bReturn=Shell_NotifyIcon(dwMessage,&Notifydata);
if (hIcon)
{
DestroyIcon(hIcon);
return bReturn;
}
}
4、为类CTrayDialog的OnSysCommand()加入最小化处理事件,加入如下代码:
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAboutDoModal();
} //=============================
else if (nID==SC_MINIMIZE)
{
TrayMessage(m_hWnd,NIM_ADD,NULL,L"托盘实例");
TrayMessage(m_hWnd,NIM_MODIFY,m_hIcon,L"托盘实例");
ShowWindow(SW_HIDE);
}
在对话框上添加一个按钮,名字为最小化为托盘,为该按钮单击事件添加如下代码:
TrayMessage(m_hWnd,NIM_ADD,NULL,L"托盘实例");
TrayMessage(m_hWnd,NIM_MODIFY,m_hIcon,L"托盘实例");
ShowWindow(SW_HIDE);
以上就是关于程序控制托盘图标行为仅显示通知全部的内容,包括:程序控制托盘图标行为仅显示通知、如何在Linux下面编程实现程序的托盘、请问如何让我的程序托盘化在任务栏里面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)