将程序缩到“托盘”后,为什么死活就是弹不出菜单呢???
而且我做了消息处理程序,不过好像这段代码是孤立的
就这么一个过程,应该跟那里关联一下啊
而且我做了消息处理程序,不过好像这段代码是孤立的
就这么一个过程,应该跟那里关联一下啊
解决方案 »
- 如何获取DBGRID选中单元格的坐标
- 一个很奇怪的问题panel的onclick事件失灵?
- 这个Filter如何写在线等,谢谢!
- 如何让TStringGrid里的数据默认上下左右都居中 !~~ 在线等
- 如何计算仓租问题????
- 象电子贺卡那样动态的生成EXE文件,并且可以将图片放入文件中,脱离路径访问独立运行?
- 一个小问题!!但是着急哦!
- 有没有办法实现在程序里给sql server的数据库添加用户,密码?
- 数据库问题,请对BDE和*.dbf文件有研究的高手帮个忙,一解决就给分,分不够再加。,一见兔子就撒鹰。
- 如何能按照SQL语句的条件来获取需要的ParamByName 参数
- stack overflow
- 如何适应不同的分辨率(1280或1440)?
const ID_MAIN = 100;wm_traynotify=wm_user+1000;//这是消息代码把
//添加托盘
function TThreadSortForm.AddIcon(h_hwnd: HWND): Boolean;
begin
nid.cbSize := sizeof(NOTIFYICONDATA);
nid.Wnd:= h_hwnd;
nid.uID := ID_MAIN;
nid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
nid.uCallbackMessage := WM_Notify;
nid.hIcon := LoadIcon(hInstance, 'MAINICON');
strCopy(nid.szTip, '1111');
AddIcon := Shell_NotifyIcon(NIM_ADD, @nid);
end;//接受消息方式一procedure TThreadSortForm.OnNotify(var Msg: TMessage);
var
Pt: TPoint;
begin
case msg.LParam of
WM_RBUTTONDOWN:
begin
SetForeGroundWindow(nid.wnd);
GetCursorPos(Pt);
//Popupmenu.Popup(pt.x, pt.y);
popupmenu1.Popup(pt.X,pt.Y);
end; WM_LBUTTONDBLCLK:
begin
Action1Execute(self)
end ;
//end;
end;
//接受消息方式二procedure TThreadSortForm.OnNotify(var Msg: TMessage);
var
Pt: TPoint;
begin
case msg.LParam of
WM_RBUTTONDOWN:
begin
SetForeGroundWindow(nid.wnd);
GetCursorPos(Pt);
//Popupmenu.Popup(pt.x, pt.y);
popupmenu1.Popup(pt.X,pt.Y);
end; WM_LBUTTONDBLCLK:
begin
Action1Execute(self)
end ;
//end;
end;
//这些代码是我在网上找的,原来的程序是可以的,但是跑我这里就不行了
55555555555555
郁闷ing!!!!
const
MYMESSAGE=WM_USER+100;{自定义消息,当小图标捕捉到鼠标事件时Windows向回调函数发送此消息}private
MyTrayIcon:TNotifyIconData;//定义托盘图标结构
procedure MyTrayMessage(var msg:TMessage); message MYMESSAGE;//托盘消息处理事件
procedure Tledform.FormCreate(Sender:TObject);
begin
{---------------------------}
MyTrayIcon.cbSize:=sizeof(MyTrayIcon);
MyTrayIcon.Wnd:=Handle;
MyTrayIcon.uID:=100;//内部标识,可设为任意数
MyTrayIcon.hIcon:=application.Icon.Handle;
MyTrayIcon.uCallbackMessage:=MYMESSAGE;//回调函数消息
MyTrayIcon.szTip:='监控系统';
MyTrayIcon.uFlags:=NIF_ICON or NIF_TIP or NIF_MESSAGE;//指明哪些字段有效
//将程序的窗口样式设为TOOL窗口,可避免在任务条上出现}
//SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
//向托盘中添加图标
Shell_NotifyIcon(NIM_ADD,@MyTrayIcon);
{---------------------------}procedure Tledform.MyTrayMessage(var msg:TMessage);
var
CursorPos:tpoint;
begin
case msg.lParam of
WM_LBUTTONDOWN:
begin
ShowHidePro;
end;
WM_RBUTTONDOWN:
begin
GetCursorPos(CursorPos);//取得光标当前位置
SetForegroundWindow(Handle);//此句作用是当程序失去焦点时,弹出菜单也随之消失。
application.ProcessMessages;
PopupMenuLED.Popup(CursorPos.X,CursorPos.Y);
PostMessage(application.MainForm.Handle,WM_NULL,0,0);
end;
end;
end;Shell_NotifyIcon(NIM_DELETE,@MyTrayIcon);//系统退出时删除托盘图标