程序控制托盘图标行为仅显示通知

程序控制托盘图标行为仅显示通知,第1张

序控制托盘图标行为,仅显示通知,可以通过以下步骤实现:

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下面编程实现程序的托盘、请问如何让我的程序托盘化在任务栏里面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9780670.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存