社区
Windows SDK/API
帖子详情
我把应用程序添加到任务条右下角的图标中。请问怎样实现右键弹出菜单阿?
bcap163
2004-11-05 11:32:10
我把应用程序添加到任务条右下角的图标中。请问怎样实现右键弹出菜单阿?
类似QQ MSN那种 点击图标弹出菜单,可以执行一些操作阿?
...全文
241
10
打赏
收藏
我把应用程序添加到任务条右下角的图标中。请问怎样实现右键弹出菜单阿?
我把应用程序添加到任务条右下角的图标中。请问怎样实现右键弹出菜单阿? 类似QQ MSN那种 点击图标弹出菜单,可以执行一些操作阿?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bcap163
2004-11-08
打赏
举报
回复
我用的api但是发现改变分辨率后发现 系统任务栏不会自动跑到最下方,要是隐藏的话我自然又看不到我的图标了!!!郁闷 ……怎么使系统任务栏始终保持在最下方阿
fenglaile
2004-11-08
打赏
举报
回复
CoolTray
好用,还算稳定
ksaiy
2004-11-05
打赏
举报
回复
那用这个:
Procedure TForm1.IconClick(var Msg:TMessage);
var
p:TPoint;
begin
if ((Msg.lParam=WM_LBUTTONDOWN) and (Status=True)) then
Form2.Show;
if (Msg.lParam=WM_RBUTTONDOWN) then
begin
GetCursorPos(P);
PopupMenu1.Popup(p.x,p.y);
end;
end;
d0347
2004-11-05
打赏
举报
回复
是用API写出来的
ksaiy
2004-11-05
打赏
举报
回复
其实用控件来的是最快的。也比较方便。
可以选的东西也比较多。
试试CoolTray
jinjazz
2004-11-05
打赏
举报
回复
上面的exit1就是个菜单了
jinjazz
2004-11-05
打赏
举报
回复
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,shellapi, Menus;
const
mousemsg = wm_user + 1; //自定义消息,用于处理用户在图标上点击鼠标的事件
iid = 100; //用户自定义数值,在TnotifyIconDataA类型全局变量ntida中使用
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
exit1: TMenuItem;
procedure exit1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
//自定义消息处理函数,处理鼠标点击图标事件
procedure mousemessage(var message: tmessage);
message mousemsg;
public
{ Public declarations }
end;
var
Form1: TForm1;
ntida: TNotifyIcondataA; //用于增加和删除系统状态图标
implementation
{$R *.dfm}
procedure TForm1.mousemessage(var message: tmessage);
var
mousept: TPoint; //鼠标点击位置
begin
inherited;
if message.LParam = wm_rbuttonup then begin //用鼠标右键点击图标
getcursorpos(mousept); //获取光标位置
popupmenu1.popup(mousept.x, mousept.y); //在光标位置弹出菜单
end;
if message.LParam = wm_lbuttonup then begin //用鼠标左键点击图标
//显示应用程序窗口
ShowWindow(Handle, SW_SHOW);
//在任务栏上显示应用程序窗口
ShowWindow(Application.handle, SW_SHOW);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
not (GetWindowLong(Application.handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW));
end;
message.Result := 0;
end ;
procedure TForm1.Exit1Click(Sender: TObject);
begin
//为ntida赋值,指定各项参数
ntida.cbSize := sizeof(tnotifyicondataa);
ntida.wnd := handle;
ntida.uID := iid;
ntida.uFlags := nif_icon + nif_tip + nif_message;
ntida.uCallbackMessage := mousemsg;
ntida.hIcon := Application.Icon.handle;
ntida.szTip := 'Icon';
shell_notifyicona(NIM_DELETE, @ntida); //删除已有的应用程序图标
Application.Terminate; //中断应用程序运行,退出应用程序
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ntida.cbSize := sizeof(tnotifyicondataa); //指定ntida的长度
ntida.Wnd := handle; //取应用程序主窗体的句柄
ntida.uID := iid; //用户自定义的一个数值,在uCallbackMessage参数指定的消息中使用
ntida.uFlags := nif_icon + nif_tip + nif_message;//指定在该结构中uCallbackMessage、hIcon、szTip参数都有效
ntida.uCallbackMessage := mousemsg;//指定的窗口消息
ntida.hIcon := Application.Icon.handle;//指定系统状态栏显示应用程序的图标句柄
ntida.szTip := 'Icon'; //当鼠标停留在系统状态栏该图标上时,出现该提示信息
shell_notifyicona(NIM_ADD, @ntida); //在系统状态栏增加一个新图标
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone; //不对窗体进行任何操作
ShowWindow(Handle, SW_HIDE); //隐藏主窗体
//隐藏应用程序窗口在任务栏上的显示
ShowWindow(Application.Handle, SW_HIDE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);
end;
end.
hangguojun
2004-11-05
打赏
举报
回复
最方便的办法是用一个控件,在控件的PopMenu中设置你要弹出的弹出式菜单,正如ksaiy说的
bcap163
2004-11-05
打赏
举报
回复
感谢各位!!!我周一结帐!!!呵呵 祝大家周末愉快!!!!
billwillman
2004-11-05
打赏
举报
回复
其实原理是:
建立托盘图标需要建立一个窗体,此窗体可以是可见的也可以是不可见的,一般都采用创建不可见的窗体
使用classes单元的Allocatehwnd函数参数的意义是此窗体的消息回调函数,返回一个窗体句柄,
使用Shell_NotifyIcon来设置托盘属性,第一个参数为你的操作参数可以为以下三值之一:
NIM_ADD 增加一个图标
NIM_DELETE 删除一个图标
NIM_MODIFY 修改一个图标
第二个为一个指针,是指向一个TNotifyIconData类型的,此记录体中:Wnd代表托盘窗体的句柄,uflag为TNotifyIconData哪些字段是有效的可以是以下的组合:NIF_ICON hicon有效,NIF_MESSAGE uCallbackMessage有效,NIF_TIP szTip有效
uCallbackMessage代表消息的代号,可在消息回凋函数参数Message中得到,
hIcon图标句柄,szTip托盘的提示信息
最后,用classes单元的DellocateHWND清除窗体参数为窗体句柄
PB最小化到托盘以及
右键
菜单
而“
右键
弹出
菜单
”则表示用户在托盘
图标
的
右键
上下文
中
可以访问一系列命令,如退出程序、打开主窗口、查看帮助文档等,这为用户提供了一种快捷的操作方式。 在
实现
这个功能时,开发者通常会用到以下几个关键知识点...
mfc 托盘
右下角
弹出
对话框演示程序
"mfc 托盘
右下角
弹出
对话框演示程序"是一个使用MFC编写的示例应用,旨在展示如何在Windows
任务
栏的
右下角
创建一个系统托盘
图标
,并在用户与该
图标
交互时
弹出
对话框。这个程序的核心功能包括托盘
图标
管理和消息处理...
控制台系统托盘 包括
右键
菜单
它位于
任务
栏的
右下角
,通常包含各种程序的
图标
,如网络连接、音量控制和时钟等。这些
图标
提供了一种简洁的方式来管理和访问后台运行的
应用程序
或服务,而不会占用桌面或
任务
栏的空间。本项目“控制台系统托盘 包括...
VC+MFC 托盘
图标
闪烁与消息提示
首先,托盘
图标
(Tray Icon)是指在系统
任务
栏
右下角
的通知区域显示的小
图标
,它可以帮助
应用程序
在后台运行时与用户进行交互。在MFC
中
,我们可以使用`CTrayIcon`类来创建和管理托盘
图标
。要
实现
托盘
图标
,首先需要...
托盘
图标
显示 VB API应用测试.rar
在Windows7的
右下角
托盘处显示程序
图标
,支持
右键
基本操作,这个托盘
图标
的特别之处是应用了API来
实现
,在系统匣设置动画
图标
,
右键
弹出
菜单
中
可选择显示与隐藏窗口,同时本例子也有助于VB初学者学习API用法,是个...
Windows SDK/API
1,183
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章