Win10通知图标(Notification Icon)的BalloonTipText最大长度是多少
Win10 通知框(BalloonTip)长度限制及扩展方案
1. BalloonTip 文本最大长度
根据Win32 API中NOTIFYICONDATA结构体的定义,Win10下的气球通知有固定的长度上限:
- 通知标题(对应
szInfoTitle字段):最大长度为63个字符,超出部分会被系统自动截断 - 通知正文(对应
szInfo字段):最大长度为255个字符,超出部分同样会被系统截断
你提供的代码里已经通过strPLCopy做了截断处理,逻辑符合系统字段长度要求。
2. 点击通知展示更长文本的实现方案
可以实现,通用实现逻辑如下:
- 调用
Shell_NotifyIcon时给NOTIFYICONDATA结构体的uFlags新增NIF_MESSAGE标识,同时给uCallbackMessage字段绑定自定义消息 - 用户点击通知时,系统会发送你绑定的自定义消息到程序窗口过程,在消息响应逻辑里弹出自定义窗口(比如模态对话框、展开面板)即可展示任意长度的完整文本
你提供的基础实现代码可以按如下逻辑补充点击事件支持:
// 提前自定义通知点击消息常量 const WM_BALLOON_CLICK = WM_USER + 1001; procedure ShowBalloonTips(info: string; title: string; timeout : integer = 3000); var TipInfo, TipTitle: string; begin IconData.cbSize := SizeOf(IconData); // 新增消息回调标识 IconData.uFlags := NIF_INFO or NIF_MESSAGE; IconData.uCallbackMessage := WM_BALLOON_CLICK; TipInfo := info; strPLCopy(IconData.szInfo, TipInfo, SizeOf(IconData.szInfo) - 1); IconData.DUMMYUNIONNAME.uTimeout := timeout; TipTitle := title; strPLCopy(IconData.szInfoTitle, TipTitle, SizeOf(IconData.szInfoTitle) - 1); IconData.dwInfoFlags := NIIF_INFO; //NIIF_ERROR; //NIIF_WARNING; Shell_NotifyIcon(NIM_MODIFY, @IconData); IconData.DUMMYUNIONNAME.uVersion := NOTIFYICON_VERSION; Shell_NotifyIcon(NIM_SETVERSION, @IconData) ; end; // 主窗口中新增自定义消息响应逻辑 procedure WMBalloonClick(var Msg: TMessage); message WM_BALLOON_CLICK; procedure TMainForm.WMBalloonClick(var Msg: TMessage); begin // 点击通知时触发,此处可弹出自定义窗口展示完整长文本 ShowMessage('这里可以放任意长度的完整文本内容'); end;
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

