转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
组件制作之五(托盘组件)         ★★★★

组件制作之五(托盘组件)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3612 更新时间:2009/4/23 18:34:08
//应用程序的消息钩子,获得主窗口的最小化消息

    function AppMsgHook(var Msg:TMessage):Boolean;

    procedure WndProc(var Msg: TMessage);//不可视窗口的窗口过程

    //以下为事件的调度函数

    procedure DblClick; dynamic;

    procedure Click; dynamic;

    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic;

    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic;

    procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;

  public

     constructor Create(AOwner:TComponent);override;

     destructor  Destroy;override;

  published

     property Active:Boolean read FActive write SetActive default False;

     property Icon:TIcon read FIcon write SetICon;

     property SetDfIconed: boolean read FSetDfIcon write SetDfIcon default true;

     property Hint:String read FHint write SetHint;

     property RMode:TRmode read FRmode write SetRMode default LDbClick;

  //事件的方法指针

     property OnIconClick: TNotifyEvent read FOnIconClick write FOnIconClick;

     property OnIconDblClick: TNotifyEvent read FOnIconDblClick write FOnIconDblClick;

     property OnIconMouseMove: TMouseMoveEvent read FOnIconMouseMove write FOnIconMouseMove;

     property OnIconMouseDown: TMouseEvent read FOnIconMouseDown write FOnIconMouseDown;

     property OnIconMouseUp: TMouseEvent read FOnIconMouseUp write FOnIconMouseUp;

  end;

 

procedure Register;

 

implementation

 

procedure Register;

begin

  RegisterComponents(''''Wind'''', [TMyTray]);

end;

 

///////////TmyTray////////////////////////////

constructor TMyTray.Create(AOwner:TComponent);

begin

  inherited Create(AOwner);

  //设置程序钩子,指定AppMsgHook为处理函数,

  //则,应用程序的任何消息都将经过这个函数

   Application.HookMainWindow(AppMsgHook);

   FICon:=TICon.Create;

   //得到默认图标的句柄,图标为应用程序的图标

   FDfIcon:=Application.Icon.Handle;

   FSetDfIcon:=True;

   FActive:=False;

   FRMode:=LDbClick;

   isMin:=False;

  //创建一个不可视窗口,并指定窗口过程,以处理托盘事件

    FHandle := AllocateHWnd(WndProc);

  //保存窗体的老的风格,在恢复窗口的同时也恢复原来的窗口风格

    OldStyleEX:=GetWindowLong(Application.Handle,GWL_EXSTYLE);

end;

 

destructor TMyTray.Destroy;

begin

  Application.UnhookMainWindow(AppMsgHook);

  //对象释放之前先消除托盘

    SetTray(NIM_DELETE);

  //释放不可能窗口的句柄

  DeallocateHWnd(FHandle);

  FICon.Free;

  inherited Destroy;

end;

//应用程序钩子,可以截获应用程序的所有消息

function TMyTray.AppMsgHook(var Msg:TMessage):Boolean;

var placement:WINDOWPLACEMENT;

begin

 Result:=False;

 //保证程序不会在设计时处理最小化消息

 if not (csDesigning in ComponentState) then

 if (Msg.Msg=WM_SYSCOMMAND) and(FActive) then

 begin

   if msg.WParam=SC_MINIMIZE Then

    begin

    //设置了这个属性后,窗口最小化就不会停在任务栏了,而

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


没有相关教程
教程录入: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……
    咸宁网络警察报警平台