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