系统菜单的控制,使菜单项灰显及恢复功能

https://www.cnblogs.com/gaodu2003/archive/2009/06/07/1498004.html

Const
   MyMove = 1000; 

  //自定义消息(全局)

M := GetSystemMenu(Application.Handle, false); 

//获取系统菜单,M定义属性为HMENU

DeleteMenu(M, 0, MF_BYPOSITION); 

//删除系统菜单中的第一菜单项

InsertMenu(M, 0, MF_ByPosition+MF_String, 1000, '还原(&R)' ); 

//在指定位置插入菜单项

SetMenuItemBitmaps(M, 0, MF_BYPOSITION, BMP1.Handle, BMP1.Handle); 

//设置菜单项图标

EnableMenuItem(M, MyMove, MF_BYCOMMAND+MF_DISABLED+MF_GRAYED); 

//使菜单项失效并灰显

EnableMenuItem(M, MyMove, MF_BYCOMMAND+MF_ENABLED); 

//使菜单项恢复功能,MyMove处可以是自定义消息,也可以是系统消息,如对关闭功能的操作,可设置消息为SC_CLOSE

对系统菜单项的功能实现,可以在OnCreate事件中加入

Application.OnMessage := wmHMessages;

 过程实现

Procedure Tform1.wmHMessages(var Msg : TMsg; var Handled : Boolean);
begin
  if Msg.message = WM_SYSCOMMAND then
    begin
    if Msg.wParam = MyMove then
      begin
      SendMessage(Form1.Handle, WM_SYSCOMMAND, SC_MOVE, 0);
      end;
    end;

end;

//  SC_MINIMIZE 最小化
//  SC_MAXIMIZE 最大化
//  SC_CLOSE  关闭
//  SC_RESTORE  还原
//  SC_SIZE 大小
//  SC_MOVE 移动

转载于:https://www.cnblogs.com/gaodu2019/p/10935837.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值