程序运行时事件响应 ( 积分: 50 )

  • 主题发起人 主题发起人 wonianima
  • 开始时间 开始时间
W

wonianima

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序在后台运行,运行时只能在任务栏上看到图标,我对这个图标的鼠标右健事件进行了处理,当点右健的时候,弹出对话框。可程序运行的时候根本就不响应这个事件,我要怎么做啊?
 
我的程序在后台运行,运行时只能在任务栏上看到图标,我对这个图标的鼠标右健事件进行了处理,当点右健的时候,弹出对话框。可程序运行的时候根本就不响应这个事件,我要怎么做啊?
 
说得再详细一点儿嘛,这怎么解决啊
 
程序是单线程还是多线程
如何做的响应
 
就是说在图标上点右键的时候根本弹不出对话框啊,此时程序正在运行,我的程序是单线程的。是不是要把这个时间单独放到一线程中处理啊
 
问了几天没人回答啊,我自己把他解决了,自己给自己散分吧。
 
如果使用的是线程技术就需要做个线程内消息处理,然后再消息处理函数内弹出菜单,如果不是的话就很简单了,有很多弹出菜单的demo,你可以自己查一下
比如
procedure IconOnClick(var message:TMessage);
message WM_USER;
然后调用
procedure TForm1.IconOnClick( var message: Tmessage);
var p : TPoint;
begin
if (message.lParam = WM_LBUTTONDOWN) then
begin
ShowWindow(Handle, SW_SHOW );
end;

if (message.lParam = WM_RBUTTONDOWN) then
begin
GetCursorPos(p);
popupmenu1.Popup( p.x ,p.y );
end;
end;
 
如果你的后台任务是一个很多次数的循环
可以在执行循环过程中加一句
Application.ProcessMessage
就基本解决了
注意不要让它卡太久,所以如果是执行了一些无法参与过程又耗时很长的系统函数
就只好用多线程了
 
后退
顶部