| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- using System;
- using System.Drawing;
- using System.Windows.Forms;
- using System.Collections;
- using System.Runtime.InteropServices;
- class MyMenuItem : MenuItem
- {
- public MyMenuItem( string s) : base(s)
- {
- }
-
- public int GetID()
- {
- return MenuID;
- }
-
- public new IntPtr Handle
- {
- get
- {
- return IntPtr.Zero;
- }
- }
-
- }
- // Test basic functionality of the Application and Form class
- class MenuTest : Form
- {
- Button button;
- MainMenu testMenu_ = null;
- public MenuTest () : base ()
- {
- ClientSize = new Size(300, 250);
- CreateMyMainMenu();
- button = new Button ();
- button.Top = 20;
- button.Left = 20;
- button.Width = 50;
- button.Height = 50;
- //button.Parent = this;
- button.Text = "Click Me!";
- button.Click += new EventHandler(OnMenuButtonClick);
- this.Controls.AddRange(new System.Windows.Forms.Control[] {button});
- }
-
- MenuItem[] RecentFilesMenu()
- {
- MenuItem menuItem1 = new MenuItem("MenuTest.cs");
- MenuItem menuItem2 = new MenuItem("/etc/passwd");
- MenuItem menuItem3 = new MenuItem("~/.wine/config");
- return new MenuItem[3] {menuItem1, menuItem2, menuItem3};
- }
- // Doesn't gets called, waiting for Button implementation
- void OnMenuButtonClick( object c, EventArgs e)
- {
- if( Menu != null)
- {
- Menu = null;
- }
- else
- {
- Menu = testMenu_;
- }
- }
-
- MenuItem menuItem4 = null;
- public void CreateMyMainMenu()
- {
- testMenu_ = new MainMenu();
- MyMenuItem myMI = new MyMenuItem("2");
- MenuItem refMi = myMI;
- IntPtr ip = refMi.Handle;
- ip = myMI.Handle;
- System.Console.WriteLine("My menu ID {0}", myMI.GetID());
-
- MenuItem menuItem1 = new MenuItem("&New", new System.EventHandler(this.OnFileNew));
- MenuItem menuItem2 = new MenuItem("&Open...", new System.EventHandler(this.OnFileOpen));
- MenuItem menuItem3 = new MenuItem("&Quit", new System.EventHandler(this.OnFileQuit));
- MenuItem menuItem4 = new MenuItem("Test &Controls", new System.EventHandler(this.OnTestControlMethods));
- MenuItem recentFiles = new MenuItem("Recent files", RecentFilesMenu());
- MenuItem FileMenu = new MenuItem("File", new MenuItem[]{menuItem1, menuItem2,recentFiles, menuItem3, menuItem4});
- myMI = new MyMenuItem("2");
- System.Console.WriteLine("My menu ID {0}", myMI.GetID());
-
- menuItem1.Text = "&File";
- menuItem2.Text = "&Edit";
- menuItem3.Text = "E&xit";
- MenuItem mi10 = new MenuItem("Dos");
- MenuItem mi11 = new MenuItem("Unix");
- menuItem4 = new MenuItem("&Save As...", new MenuItem[]{mi10, mi11});
- FileMenu.MenuItems.Add(2, menuItem4);
- int pos = testMenu_.MenuItems.Add(FileMenu);
- System.Console.WriteLine("Menu File added at position {0}", pos);
- MenuItem menuTest1 = new MenuItem("&Test properties", new System.EventHandler(this.OnTestProperties));
- MenuItem TestMenu = new MenuItem("Test", new MenuItem[]{menuTest1});
- testMenu_.MenuItems.Add(TestMenu);
- Menu = testMenu_;
-
- myMI = new MyMenuItem("2");
- System.Console.WriteLine("My menu ID {0}", myMI.GetID());
- }
-
- protected void OnFileNew( object sender, System.EventArgs e)
- {
- MessageBox.Show(this, "The File->New command selected", "MenuTest");
- menuItem4.Click += new System.EventHandler( this.OnFileSaveAs);
- menuItem4.MenuItems.Clear();
- }
- protected void OnFileOpen( object sender, System.EventArgs e)
- {
- MessageBox.Show(this, "A file-open dialog will appear soon", "MenuTest");
- }
- protected void OnFileQuit( object sender, System.EventArgs e)
- {
- System.Console.WriteLine("The Exit command selected");
- Application.Exit();
- }
- protected void OnFileSaveAs( object sender, System.EventArgs e)
- {
- MessageBox.Show("OnFileSaveAs");
- menuItem4.Index = 0;
- }
- protected void OnTestProperties( object sender, System.EventArgs e)
- {
- MenuItem send = sender as MenuItem;
- if( send != null)
- {
- Menu parent = send.Parent;
- if( parent != null){
- MenuItem mi1 = new MenuItem("BarBreak");
- mi1.BarBreak = true;
- MenuItem mi2 = new MenuItem("Break");
- mi2.Break = true;
- MenuItem mi3 = new MenuItem("Checked");
- mi3.Checked = true;
- MenuItem mi4 = new MenuItem("Disabled");
- mi4.Enabled = false;
- MenuItem mi5 = new MenuItem("DefaultItem");
- mi5.DefaultItem = true;
- MenuItem mi6 = new MenuItem("RadioCheck");
- mi6.RadioCheck = true;
- mi6.Checked = true;
- MenuItem mi7 = new MenuItem("-");
- mi7.RadioCheck = true;
- MenuItem SubMenu = new MenuItem("SubMenu", new MenuItem[]{mi1, mi2, mi3, mi4, mi5, mi6, mi7});
- parent.MenuItems.Add(SubMenu);
- }
- }
- }
- [DllImport ("user32.dll",
- CallingConvention = CallingConvention.StdCall,
- CharSet = CharSet.Ansi, EntryPoint = "CreateWindowExA")]
- internal static extern IntPtr CreateWindowExEx (
- uint dwExStyle, string lpClassName,
- string lpWindowName, uint dwStyle,
- int x, int y, int nWidth, int nHeight,
- IntPtr hWndParent, IntPtr hMenu, IntPtr hInstance,
- ref object lpParam);
- protected void OnTestControlMethods( object sender, System.EventArgs e)
- {
- int WS_CHILD = 0x40000000;
- int WS_VISIBLE = 0x10000000;
- object abc = null;
- IntPtr hwnd = CreateWindowExEx(0, "BUTTON", "WindowName",
- (uint)( WS_CHILD | WS_VISIBLE), 10, 10,
- 100, 50, Handle, (IntPtr)100, (IntPtr)0, ref abc);
-
- Control cc = Control.FromChildHandle(hwnd);
- if( cc == this) {
- Console.WriteLine("FromChildHandle: The frame was found by BUTTON");
- }
- else if( cc == null) {
- Console.WriteLine("FromChildHandle: Nothing was found by BUTTON");
- }
- else {
- Console.WriteLine("FromChildHandle: Some control was found by BUTTON");
- }
-
- Control c1 = Control.FromHandle(hwnd);
- if( c1 == this) {
- Console.WriteLine("FromHandle: The frame was found by BUTTON");
- }
- else if( c1 == null) {
- Console.WriteLine("FromHandle: Nothing was found by BUTTON");
- }
- else {
- Console.WriteLine("FromHandle: Some control was found by BUTTON");
- }
-
- Control cntr = Control.FromChildHandle(button.Handle);
- if( cntr == button) {
- Console.WriteLine("FromChildHandle are the same");
- }
- else {
- Console.WriteLine("FromChildHandle are NOT the same");
- }
- cntr = Control.FromHandle(button.Handle);
- if( cntr == button) {
- Console.WriteLine("FromHandle are the same");
- }
- else {
- Console.WriteLine("FromHandle are NOT the same");
- }
- }
-
- // - verifies the WndProc can be overridden propery
- // - verifies the Application.MessageLoop is working properly
- protected override void WndProc (ref Message m)
- {
- base.WndProc (ref m);
- // should be true after the Run command is reached
- //Console.WriteLine ("Application.MessageLoop: " +
- //Application.MessageLoop);
- }
- static public void Test1 ()
- {
- MenuTest form = new MenuTest ();
- //should be false
- Console.WriteLine ("Application.MessageLoop: " +
- Application.MessageLoop);
- Application.Run (form);
- }
- static public void Test2()
- {
- MenuItem mi = new MyMenuItem("123");
- MenuItem mp = new MenuItem("PPP", new MenuItem[] { mi });
- MenuItem mc = mi.CloneMenu();
-
- System.Console.WriteLine("Clone equals to original {0}", mc.Equals(mi));
- System.Console.WriteLine("Original Parent {0}", mi.Parent.ToString());
- System.Console.WriteLine("Clone Parent {0}", mc.Parent != null ? mc.Parent.ToString() : "<null>");
- System.Console.WriteLine("Clone Parent is the same {0}", mc.Parent == mi.Parent);
- }
- static public void Test3()
- {
- MenuItem mi1 = new MenuItem("123");
- MenuItem mi2 = new MenuItem("234");
- MenuItem parent = new MenuItem( "parent", new MenuItem[] { mi1, mi2});
- IList il = (IList)parent.MenuItems;
- System.Console.WriteLine("List of menu items IsReadOnly {0}, IsFixedSize {1}", il.IsReadOnly, il.IsFixedSize);
- il.Add(new MenuItem("This must be inside"));
- //il.Add( new ArrayList());
- //il[1] = new MenuItem("345");
- //parent.MenuItems[1] = new MenuItem("asd");
- }
- static public int Main (String[] args)
- {
- Test3();
- Test2();
- Test1();
- return 0;
- }
- }
|