【问题标题】:Delphi: how to show trayicon balloon without showing taskbar when set to autohideDelphi:设置为自动隐藏时如何显示托盘图标气球而不显示任务栏
【发布时间】:2012-04-21 08:15:09
【问题描述】:

使用 ShowBalloonHint 时如何避免任务栏在设置为自动隐藏时弹出?

【问题讨论】:

  • 问题和标题足够简单,可以理解问题。将任务栏设置为自动隐藏,然后在程序中使用 TrayIcon 并调用 ShowBaloonHint,任务栏将自动隐藏。
  • 所以您希望气球通知的行为不像标准的 Windows 气球通知?然后不要使用标准的 Windows 气球通知,而是创建自己的。如果工作量太大,请接受某些行为是不可调整的。
  • "那么这个网站的存在意义何在?"它旨在补充网络搜索而不是取代它

标签: delphi taskbar trayicon


【解决方案1】:

Windows 中的通知区域具有已定义的行为。您可以希望它的行为有所不同,但这并不能改变您想做的事情无法完成的事实。

很抱歉给您带来不便。


一个接近的解决方法是自己创建一个TOOLTIP 窗口,并将其放置在屏幕上您认为可能是用户通知区域的位置附近:

  • 右下
  • 右上角
  • 左下角
  • 主监视器
  • 辅助监视器

这将涉及使用

  • GetSystemMetrics(SM_CXFULLSCREEN)
  • GetSystemMetrics(SM_CYFULLSCREEN)
  • SystemParametersInfo(SPI_GETWORKAREA)

然后你创建一个TOOLTIPS_CLASS 窗口:

    FHandle := CreateWindow(TOOLTIPS_CLASS, PChar(''),
            WS_POPUP or TTS_BALLOON,
            Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),
            Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),
            0, 0, HInstance,
            nil);

然后您将向其发送TTM_SETTITLETTM_UPDATETIPTEXTTTM_TRACKPOSITION 消息,最后是重要时刻:TTM_TRACKACTIVATE

然后在稍后的某个时间,您通过再次调用 TTM_TRACKACTIVATE 来隐藏工具提示。


您可以随意follow Windows user experience guidelines,或者您可以自己滚动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多