系統菜單的控制,使菜單項灰顯及恢復功能

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

Const
   MyMove = 1000; html

  //自定義消息(全局)post

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

//獲取系統菜單,M定義屬性爲HMENUhtm

DeleteMenu(M, 0, MF_BYPOSITION); blog

//刪除系統菜單中的第一菜單項事件

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

//在指定位置插入菜單項io

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

//設置菜單項圖標class

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

相關文章
相關標籤/搜索