普通的应用程序启动后都会在任务栏上显示一个长方形的窗体,如果在该窗体上点击右键即可看到
“还原、移动、大小、最小化、最大化、关闭”菜单,如果想把该菜单改为自己定义的菜单得怎么
实现呢?{
我用TMsg.message可以截获鼠标右键点击任务栏上的窗体的事件,但就是无法分辨出鼠标所点击的
窗体的句柄[用WindowFromPoint()得不到其句柄],如以没能够实现。
}望请得到您的指教,万分感激不尽!!
“还原、移动、大小、最小化、最大化、关闭”菜单,如果想把该菜单改为自己定义的菜单得怎么
实现呢?{
我用TMsg.message可以截获鼠标右键点击任务栏上的窗体的事件,但就是无法分辨出鼠标所点击的
窗体的句柄[用WindowFromPoint()得不到其句柄],如以没能够实现。
}望请得到您的指教,万分感激不尽!!
解决方案 »
- delphi中byte()的用法
- dbgrideh列筛选
- Delphi2005连接数据库出错。急!
- (请问在表里添加数据时如果有的话就不加跳过去应怎么办好点)在线等待解决马上结帖
- 谁会制做组合控件用生成新控件的方法.
- 很菜的问题,做登录界面
- 用install shield做安装盘,其自己带的只有ODBC3.51 我需要ODBC4.0组件,哪有下?
- 请大家进来讨论一下DM(Data Module)......
- 两个问题:table怎么传递数据;dbgrid显示的栏的标题怎么分两层
- 请教高手,控件问题,我写了控件,动态创建多个之后,消息会相互干扰,这是为啥原因
- 寻求较优统计算法
- 如何写多线程的中间层??
“还原、移动、大小、最小化、最大化、关闭”这些你可以自己做一个菜单模拟
procedure Tfunc.AppendToSystemMenu(Form:TForm;Item:string;ItemID:word);
var NormalSysMenu,MinimizedMenu:HMenu;
AItem:Array[0..255] of Char;
PItem:PChar;
begin
NormalSysMenu:=GetSystemMenu(Form.Handle,False);
MinimizedMenu:=GetSystemMenu(Application.Handle,False);
if Item='-' then
begin
AppendMenu(NormalSysMenu,MF_SEPARATOR,0,nil);
AppendMenu(MinimizedMenu,MF_SEPARATOR,0,nil);
end
else
begin
PItem:=StrPCopy(@AItem,Item);
AppendMenu(NormalSysMenu,MF_STRING,ItemID,PItem);
AppendMenu(MinimizedMenu,MF_STRING,ItemID,PItem);
end;
end;
*************************
在主窗体中
//系统菜单的消息响应,一般加在要使用的窗体里面
procedure Tfunc.RegisterMsg(var Msg:TMsg;var Handled:Boolean);
begin
if Msg.message=WM_SYSCOMMAND then
if Msg.wParam=99 then
ShellExecute(Handle,'open',PChar('http://boyzxd.myrice.com'),nil,nil,SW_SHOW);
end;
在form.onshow里
//添加系统菜单
func.AppendToSystemMenu(main,'-',98);
func.AppendToSystemMenu(main,'查看注册码(&R)',99);
func.AppendToSystemMenu(main,'关于(&A)',100);
Application.OnMessage:=RegisterMsg;有问题请留短消息^_^