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


    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 移动

  • 相关阅读:
    初学移动专题
    IE下a标签跳转失败
    c++中一个多态的实例
    字符串中是否有相同的字符
    求乘积最大的连续子序列
    跳跃游戏
    求一个非负整数的平方根 二分法
    罗马数 与 整数 相互转换
    二进制相加
    链表分割
  • 原文地址:https://www.cnblogs.com/gaodu2003/p/1498004.html
Copyright © 2020-2023  润新知