转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Windows通知栏图标高级编程概述         ★★★★

Windows通知栏图标高级编程概述

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3304 更新时间:2009/4/23 18:34:16
sp;  StrPCopy(szInfoTitle, Title);

      dwInfoFlags := aBalloonIconTypes[IconType];

    end {with};

    Result := Shell_NotifyIcon(NIM_MODIFY, @FIconData)

  end

  else

    result := True;

end; //end of procedure Balloon

//---------------------------------------------------}

 

1.2 气泡提示的事件通知

由于新风格提示的引入,通知栏图标的消息通知也相应增加,如果通知栏图标实现了气泡提示,那么当用户将鼠标指针移动到通知栏图标上时,Windows外壳会向通知栏应用程序送出如下四个消息中的一个或多个。

 

NIN_BALLOONSHOW

当气泡提示显示后外壳发送此消息

NIN_BALLOONTIMEOUT

当气泡提示由于超时而消失时外壳发送此消息

NIN_BALLOONHIDE

当气泡提示消失时(比如通知栏图标被删除)外壳发送此消息,但气泡提示由于超时而消失不会产生此消息

NIN_BALLOONUSERCLICK

当用户点击鼠标时(点击气泡提示和通知栏图标均可)外壳发送此消息

 

Delphi强大的消息封装机制支持下,可以方便地将上述四个消息封装为四个事件供开发人员使用。简单来说就是在控件中一个隐藏窗口(创建隐藏窗口的方法可查阅相关文章,此处略过)的窗口消息处理过程中接收这四个消息并分别映射到四个事件,示范代码如下:

 

procedure TEoCSysTray.WndProc(var Msg: TMessage);

begin

……

  case Msg.LParam of

    WM_LBUTTONDOWN:

……

    WM_RBUTTONDBLCLk:

……

  else if Msg.lParam = NIN_BALLOONSHOW then   //气泡提示显示后

  begin

    if Assigned(FOnBalloonShow) then

      FOnBalloonShow(Self)

  end

  else if Msg.lParam = NIN_BALLOONHIDE then   //气泡提示由于超时而消失

  begin

    if Assigned(FOnBalloonHide) then

      FOnBalloonHide(Self)

  end

  else if Msg.lParam = NIN_BALLOONTIMEOUT then    //气泡提示消失

  begin

    if Assigned(FOnBalloonTimeOut) then

      FOnBalloonTimeOut(Self)

  end

  else if Msg.lParam = NIN_BALLOONUSERCLICK then  //用户点击鼠标

  begin

    if Assigned(FOnBalloonClick) then

      FOnBalloonClick(Self)

  end

  else

    Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam, Msg.lParam);

  end;

end; //end of procedure WndProc

 

 

2 Windows发生错误导致外壳Explorer重启时图标的重建

相信很多Windows用户都碰到过这种情况:运行某个程序时出现意外错误,导致外壳程序Explorer.exe崩溃而发生重启(即Explorer.exe被关闭后重新运行),任务栏也在消失后重新生成,但应用程序在通知栏添加的图标消失了,虽然这些程序仍在运行,但再也无法通过通知栏图标与用户交互。为避免这种情况出现,Windows提供了相应的机制。

在安装了Internet Explorer 4.0及以上版本的Windows操作系统中,当任务栏建立后,外壳会向所有顶层的应用程序发出通知消息,该消息是外壳以字符串“TaskbarCreated”为参数向系统注册获得的,应用程序窗口接收到该消息后就应该重新添加的通知栏图标。

Delphi中实现过程如下:

 

initialization

  MsgTaskbarRestart := RegisterWindowMessage(‘TaskbarCreated’);

 

上一页  [1] [2] [3] [4] [5]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台