Further file organization
Further file organization
This commit is contained in:
202
nwn/nwnprc/trunk/tools/HakInstaller/SystemMenu.cs
Normal file
202
nwn/nwnprc/trunk/tools/HakInstaller/SystemMenu.cs
Normal file
@@ -0,0 +1,202 @@
|
||||
//
|
||||
// This code was pulled from www.developerfusion.com
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows;
|
||||
using System.Collections;
|
||||
|
||||
namespace System
|
||||
{
|
||||
public class SystemMenu : ArrayList
|
||||
{
|
||||
|
||||
public const int BYPOSITION = 0x400;
|
||||
public const int REMOVE = 0x1000;
|
||||
public const int CHECKED = 0x8;
|
||||
public const int APPEND = 0x100;
|
||||
public const int SEPERATOR = 0x800;
|
||||
public const int GRAYED = 0x1;
|
||||
public const int DISABLED = 0x2;
|
||||
public const int BITMAP = 0x4;
|
||||
public const int RADIOCHECK = 0x200;
|
||||
public const int BREAK = 0x40;
|
||||
public const int BARBREAK = 0x20;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int GetSystemMenu(int HWND);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int AppendMenu(int MenuHandle, int Props, int FlagsW, string text);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int RemoveMenu(int MenuHandle, int pos, int Flags);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int GetMenuItemID(int Menuhandle, int pos);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int ModifyMenu(int MHandle, int pos,int flags,int newPos,string text);
|
||||
|
||||
private Form form;
|
||||
private int SystemMenuHandle;
|
||||
|
||||
public int Handle
|
||||
{
|
||||
get { return SystemMenuHandle; }
|
||||
}
|
||||
|
||||
public SystemMenu(Form f) : base(0)
|
||||
{
|
||||
form = f;
|
||||
SystemMenuHandle = GetSystemMenu(form.Handle.ToInt32());
|
||||
}
|
||||
|
||||
public void Add(SystemMenuItem MI)
|
||||
{
|
||||
base.Add(MI);
|
||||
if(MI.Text == "-")
|
||||
{
|
||||
AppendMenu(SystemMenuHandle,SystemMenu.SEPERATOR,MI.MenuID,null);
|
||||
}
|
||||
else
|
||||
{
|
||||
AppendMenu(SystemMenuHandle,MI.Flags,MI.MenuID,MI.Text);
|
||||
}
|
||||
}
|
||||
|
||||
public void Remove(SystemMenuItem MI)
|
||||
{
|
||||
base.Remove(MI);
|
||||
RemoveMenu(SystemMenuHandle, MI.MenuID, 0);
|
||||
}
|
||||
|
||||
public void ModifyMenuPosition(int pos, int flags, string text)
|
||||
{
|
||||
ModifyMenu(this.Handle, pos, flags|SystemMenu.BYPOSITION, pos, text);
|
||||
}
|
||||
|
||||
public new SystemMenuItem this[int index]
|
||||
{
|
||||
get { return (SystemMenuItem)base[index]; }
|
||||
set
|
||||
{
|
||||
if(value!=null)
|
||||
{
|
||||
SystemMenuItem MI = (SystemMenuItem)value;
|
||||
ModifyMenu(this.Handle, this[index].MenuID, MI.Flags, MI.MenuID, MI.Text); }
|
||||
base[index] = (object)value;
|
||||
}
|
||||
}
|
||||
|
||||
}// end of class SystemMenu
|
||||
|
||||
public class SystemMenuItem : MenuItem
|
||||
{
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int GetSystemMenu(int HWND);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int AppendMenu(int MenuHandle, int Props, int FlagsW, string text);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int RemoveMenu(int MenuHandle, int pos, int Flags);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int GetMenuItemID(int Menuhandle, int pos);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int ModifyMenu(int MHandle, int pos,int flags,int newPos,string text);
|
||||
[DllImport("user32.dll")]
|
||||
private static extern int CheckMenuItem(int HMenu, int pos, int flags);
|
||||
|
||||
private int flags = 0;
|
||||
public int Flags
|
||||
{
|
||||
get { return flags; }
|
||||
}
|
||||
|
||||
private SystemMenu menu;
|
||||
public SystemMenuItem(string text, SystemMenu SM)
|
||||
{
|
||||
base.Text = text;
|
||||
menu = SM;
|
||||
if(text == "-")
|
||||
this.flags = SystemMenu.SEPERATOR;
|
||||
}
|
||||
|
||||
public new int MenuID
|
||||
{
|
||||
get { return base.MenuID; }
|
||||
}
|
||||
|
||||
public SystemMenuItem CloneMenu(int should_be_null)
|
||||
{
|
||||
should_be_null = 0;
|
||||
return new SystemMenuItem(this.Text, menu);
|
||||
}
|
||||
|
||||
public new bool Checked
|
||||
{
|
||||
get { return base.Checked; }
|
||||
set
|
||||
{
|
||||
base.Checked = value;
|
||||
if(base.Checked)
|
||||
{
|
||||
flags = (flags|SystemMenu.CHECKED);
|
||||
CheckMenuItem(menu.Handle, this.MenuID, flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = (flags&(~SystemMenu.CHECKED));
|
||||
CheckMenuItem(menu.Handle, this.MenuID, flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public new string Text
|
||||
{
|
||||
get { return base.Text; }
|
||||
set
|
||||
{
|
||||
base.Text = value;
|
||||
ModifyMenu(menu.Handle, this.MenuID, this.flags, this.MenuID, base.Text);
|
||||
}
|
||||
}
|
||||
|
||||
public new bool Break
|
||||
{
|
||||
get { return base.Break; }
|
||||
set
|
||||
{
|
||||
base.Break = value;
|
||||
if(base.Break)
|
||||
{
|
||||
flags = flags|SystemMenu.BREAK;
|
||||
ModifyMenu(menu.Handle, this.MenuID, this.flags, this.MenuID, base.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = flags&(~SystemMenu.BREAK);
|
||||
ModifyMenu(menu.Handle, this.MenuID, this.flags, this.MenuID, base.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public new bool BarBreak
|
||||
{
|
||||
get { return base.BarBreak; }
|
||||
set
|
||||
{
|
||||
base.BarBreak = value;
|
||||
if(base.BarBreak)
|
||||
{
|
||||
flags = flags|SystemMenu.BARBREAK;
|
||||
ModifyMenu(menu.Handle, this.MenuID, this.flags, this.MenuID, base.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = flags&(~SystemMenu.BARBREAK);
|
||||
ModifyMenu(menu.Handle, this.MenuID, this.flags, this.MenuID, base.Text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}//end of class SystemMenuItem
|
||||
}
|
Reference in New Issue
Block a user