大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> Delphi自定义消息应用一例

Delphi自定义消息应用一例

时间: 2021-07-31 作者:daque

---- 此刻很多的运用步调都有如许一种功效,当用户采用最小化窗口时,窗口不是象凡是那么最小化到工作栏上,而是“最小化”成一个工作栏图标。象foxmail 3.0 netvampire 3.0等都供给了如许的功效。实行如许的功效本质上并不搀杂,在窗口最小化时,窗口会发出wm_syscommand动静,你只有须要截取windows的wm_syscommand动静,在窗口最小化时湮没窗口并挪用windowsapi因变量shell_notifyicon将设置的图标增添到工作栏上,shell_notifyicon的因变量设置是如许的:function shell_notifyicon(dwmessage:dword; lpdata: pnotifyicondata): bool; stdcall; 个中的参数dwmessage指定shell_notifyicon因变量的操纵,不妨是nim_add nim_delete nim_modify三个值中的一个,辨别对应增添图标、简略图标、窜改图目标举措。  ---- 参数lpdata指向的pnotifyicondata构造的设置如次:   _notifyicondataw = record     cbsize: dword;     wnd: hwnd;     uid: uint;     uflags: uint;     ucallbackmessage: uint;     hicon: hicon;     sztip: array [0..63] of widechar;   end;   tnotifyicondata = _notifyicondataw; ---- 在这个构造中wnd指明分属的窗口,ucallbackmessage指明回调动静,即使指领会wnd和 ucallbackmessage,则当用户对工作栏图标有举措(如点击图标,在图标上挪动光标等)。体例城市发送ucallbackmessage动静给wnd指定的窗口。hicon是要增添的图目标句柄,sztip 是图目标提醒行(即是当挪动光标到图标上,展示的一个小黄方框内展示的笔墨)。动静。实行上头的功效,最重要的是要处置wm_syscommand动静和自设置的图标动静,那些动静在delphi中并没有相映的事变。这边就须要运用到delphi的自设置动静处置功效来截取并处置那些动静。  ---- 开始看底下的步调。在执路途序之前,开始要变换form1的icon属性,给form1装入一个图标,要不在工作栏上会展示一块空缺。  unit unit1; interface uses   windows, messages, sysutils,  classes, graphics, controls, forms,   dialogs,shellapi; const   wm_baricon=wm_user+200; type   tform1 = class(tform)   private      procedure wmsyscommand(var message: tmessage); message wm_syscommand;      procedure wmbaricon(var message:tmessage);message wm_baricon;     { private declarations }   public     { public declarations }   end; var   form1: tform1; implementation {$r *.dfm} procedure tform1.wmsyscommand (var message:tmessage); var    lpdata:pnotifyicondata; begin   if message.wparam = sc_icon then   begin      //即使用户最小化窗口则将窗口      湮没并在工作栏上增添图标      lpdata := new(pnotifyicondataa);      lpdata.cbsize := 88; //sizeof(pnotifyicondataa);      lpdata.wnd := form1.handle;      lpdata.hicon := form1.icon.handle;      lpdata.ucallbackmessage := wm_baricon;      lpdata.uid :=0;      lpdata.sztip := 'samples';      lpdata.uflags := nif_icon  or nif_message or nif_tip;      shell_notifyicon(nim_add,lpdata);      dispose(lpdata);      form1.visible := false;   end   else   begin      //即使是其它的systemcommand      动静则挪用体例缺省处置因变量处置之。      defwindowproc(form1.handle,message. msg,message.wparam,message.lparam);   end; // end; procedure tform1.wmbaricon(var message:tmessage); var    lpdata:pnotifyicondata; begin   if (message.lparam = wm_lbuttondown) then    begin      //即使用户点击工作栏图标则将图标简略并恢复窗口。      lpdata := new(pnotifyicondataa);      lpdata.cbsize := 88;//sizeof(pnotifyicondataa);      lpdata.wnd := form1.handle;      lpdata.hicon := form1.icon.handle;      lpdata.ucallbackmessage := wm_baricon;      lpdata.uid :=0;      lpdata.sztip := 'samples';      lpdata.uflags := nif_icon or nif_message or nif_tip;      shell_notifyicon(nim_delete,lpdata);      dispose(lpdata);      form1.visible := true;    end; end; end. ---- 运转上头的步调,点击步调窗口题目栏上的最小化按钮,你就不妨看到窗口被“最小化”成了一个工作栏图标,点击图标,窗口又会回复从来的状况。  ---- 从上头的步调不妨看到,delphi的自设置动静处置功效的实行也是格外大略的,开始在form类的private设置中介入自设置动静处置因变量的设置,设置的刻画如次:  procedure userpro(var message: tmessage):message windowsmessage 个中userpro是用户自设置动静处置因变量的称呼, windowsmessage是windows动静恒量或自设置动静恒量。 ---- 而后在步调中介入动静处置因变量,因变量的普遍方法如次:      procedure userclass.userpro(var message:tmessage);     var //介入设置     begin //介入步调语句     end;     个中userclass是封装自设置动静处置因变量的类的称呼。 ---- 结果,delphi的自设置动静处置因变量要波及到windows的动静的构造,在这边我就不多说了,大师不妨参考windows api扶助和delphi的关系扶助消息。断定大师即使控制了delphi的自设置动静处置因变量,确定不妨编写出象vb一律简略,象c++一律功效宏大的步调来的。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.