快来吧,100分等你拿!(100分)

  • 主题发起人 主题发起人 jianhuach
  • 开始时间 开始时间
J

jianhuach

Unregistered / Unconfirmed
GUEST, unregistred user!
请教在win2000环境在托盘区创建鼠标右键菜单
 
建立一个工程,添加一个弹出菜单,与窗体连接起来。
然后自定义一条消息
const WM_MYMESSAGE=WM_USER+100;
实现原理是利用tnotifyicondata类型,它需要引用ShellAPI于uses中。
procedure InstallIcon(mes , flage:uint);
var st:tnotifyicondata;
begin
st.cbSize :=sizeof(st);
st.Wnd :=form1.Handle ;
st.uID :=1;
st.uFlags :=flage;
if mes=NIM_ADD then
begin
st.uFlags :=NIF_MESSAGE OR NIF_TIP OR NIF_ICON;
st.szTip :='this is a sample';
st.uCallbackMessage :=WM_MYMESSAGE;
st.hIcon :=form1.Icon.Handle ;
end;
shell_notifyicon(mes,@st);
end;
该过程初始化TnotifyIconData对象,将自定义消息WM_MYMESSAGE与之相连。
当你关闭该窗体时就会产生事件
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=canone;
form1.Hide ;
installIcon(NIM_ADD,0);
end;
在托盘区就会出现相应的图标,当然这也需要你在TForm中制定。
当右键点击该图标时,将触发消息处理函数(这也是自定义的与WM_MYMESSAGE呼应)
procedure tform1.MYCLICK(var message:tmessage);
var pst:tpoint;
begin
if (message.Lparam=WM_RBUTTONDOWN)then
begin
getcursorpos(pst);
form1.PopupMenu1.Popup(pst.X,pst.Y);
end;
end;
它的定义是 procedure MYCLICK(var message:Tmessage);message WM_MYMESSAGE;
这样右键菜单就会谈出来了。
 
有关此类的问题在网上稍微查找一下就能找到!!
 
有这种组件,很容易用的!
 
请问哪里有这个组件? 我的email zcgjerry@163.com谢谢!
 
CoolTrayIcon v3.1.1 FWS 619K 2001-8-13
作者: Troels Jakobsen. CoolTrayIcon的最新版本

完整功能. 源代码: 有
适用于 CB3 CB4 CB5 D2 D3 D4 D5 D6
已下载2004次

http://www.delphibyte.com/download/softdown.php?softid=454&url=http://www.torry.net/vcl/system/trayicons/trayicon.zip
 
Rxlib里中有个TTrayIcon控件可以满足你的要求!Rxlib控件组网上到处都是...搜索一下吧
 

Similar threads

S
回复
0
查看
816
SUNSTONE的Delphi笔记
S
S
回复
0
查看
737
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部