DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hellozy3
今日帖子: 12
在线用户: 11
导航: 论坛 -> 发布控件 斑竹:liumazi,ruralboy  
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/6/21 14:20:34
标题:
TIconTray 控件V1.05 浏览:5279
加入我的收藏
楼主: 下载地址: http://www.eFile.com.cn/eFile/zizii/TIconTray1.5.zip
大小: 37k 控件代码。

基本功能:
    往系统通知区加图标,并可显示,隐藏,修改这个图标,并响应鼠标事件。

相关说明:
    在Windows系统中存在这样一个基本的数据结构: TNotifyIconData,它是一个用来设置窗口句柄的数据结构,是一个记录类型的参数,其具体结构如下:

Type
  TNotifyIconData = record
    cbSize: DWORD;
    hWnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array [0..63] of AnsiChar;
end;

上述数据结构中的各个成员:
·cbSize是该结构的大小(由系统用来确定版本);
·hWnd是一个窗口句柄,用来指示Icon向该窗口发送消息,即将Icon与该窗口关联了起来;
·uID是图标标识符,仅当程序有多个图标时才有用, 它是用于区分各个图标的;
·uFlags有三个可能的标志: nif_Message、nif_Icon及nif_Tip.它是用来说明该结构的hIcon、uCallbackMessage和szTip这三个成员中哪一个或哪几个的设置值有效;
·uCallbackMessage是应用程序定义的一个消息标识符(通常是使用系统消息作为回调消息,因此一般用系统消息标识符即可),系统通过该消息标识符来将用户对指示图标的操作消息发送到由hWnd定义的窗口,通过该标识符的LPARAM参数可判断是何种操作从而进行相应处理;
·hIcon是要在指示区内新增、删除或修改的Icon图标的句柄;
·szTip是当用户将鼠标移到任务栏中的指示图标上时,所显示出的提示文本.

    指示图标的注册是通过调用Shell_NotifyIcon这个API函数来实现的,该API函数的语法声明如下:
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
  DWORD dwMessage,      // message identifier
  PNOTIFYICONDATA pnid  // pointer to structure
);

    该函数的功能就是向系统发送一条消息用以在任务栏指示区新增、修改或删除一个图标.其中的参数dwMessage是一个消息标识符,用来标识向系统发送的消息类型,这个参数有三种取值:NIM_ADD、NIM_DELETE和NIM_MODIFY,它们分别表示向指示区新增、删除、修改一个图标.参数pnid是一个指向TNotifyIconData结构的指针,通过该参数使所发送的消息与一个具体的应用程序指示图标关联起来,实现对该图标的新增、修改、删除.这样就可以在应用程序启动时进行新增指示图标的操作,在退出应用程序时删除指示区的相应指示图标.

如果使用控件,下面的操作就不用了:
    为了使应用程序能够对用户在指示图标上的操作有所响应,需要在应用程序窗体中建立一个消息处理函数IconTray.首先是向窗体类的元素中添加一个该过程声明:

public
  { Public declarations }
  procedure IconTray(var Msg:TMessage);message wm_rbuttondown;

其次就需要在该窗体的implementation部分定义该消息处理函数的具体实现过程:
procedure TForm1.IconTray(var Msg: TMessage);
var
  Pt: TPoint;
  I : Byte;
begin
  case Msg.LParam of  //根据Lparam分量的值确定消息种类
  wm_rbuttondown:  //若用户用鼠标右击指示图标,则弹出一个快捷菜单
  begin
    GetCursorPos(Pt);  //获取光标位置
    SetForegroundWindow(Handle);  //将窗口放至顶层
    PopupMenu1.Popup(Pt.x,Pt.y);  //弹出快捷菜单
  end;
  wm_lbuttondblclk:  //若用户用鼠标左键双击指示图标,则弹出应用程序窗口
  begin
    ShowWindow(Handle,SW_Restore);  //显示应用程序主窗口
    SetForegroundWindow(Handle);   //显示主窗口上所有控件
    For I :=0 to componentcount-1 do
      if Components[I] is TWinControl then
        ShowWindow(TWinControl(Components[I]).Handle,SW_Normal);
  end;
end;


----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 yeewa (中国龙) ★☆☆☆☆ -
普通会员
2003/7/2 15:47:53
1楼: 楼主,这个不好用,在D6下用不了
我用另外一个叫cooltray,给你这个功能强,能发布吗?
我还有另外好多好控件
前提是我用的是D6,当然D6下是可用的
别的就不保证喽
----------------------------------------------
-
作者:
男 wolfish (wolfish) ★☆☆☆☆ -
普通会员
2003/8/4 9:15:16
2楼: 请问 yeewa  大哥 有没有 查询结果直接倒出到excel中的控件呀,有的话,告诉小弟,急用,在这里先谢了
email:zhyw627@163.com
----------------------------------------------
-
作者:
男 chateau (大脸猫) ★☆☆☆☆ -
普通会员
2003/8/4 13:23:33
3楼: 我有这个控件,你要吗?cyjzj@21cn.com
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS