Members

Technology Zones

IBM Learning Center

Articles

Hosted By

MaximumASP

Info

Rated
Read 15,827 times

Related Categories

System Menu Items

Michael H

The following code adds a menu to the form's system menu. It responds to click events by intercepting the WM_SYSCOMMAND message.

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
using System.ComponentModel;
using System.Reflection;

class test : Form {

[DllImport("user32.dll")]
private static extern int GetSystemMenu(int hwnd, int bRevert);
[DllImport("user32.dll")]
private static extern int AppendMenu(int hMenu,int Flagsw,int IDNewItem,string lpNewItem);

public static void Main() {
   Application.Run(new test());
}

public test() {
   this.Text = "Hello";
   this.Show();
   int Menu1 = GetSystemMenu(this.Handle.ToInt32(), 0);  // get handle to system menu
   AppendMenu(Menu1,0xA00,0,null);   // makes a separator
   AppendMenu(Menu1,0,666,"C# Rules!");
}

protected override void WndProc(ref Message m) {
   base.WndProc(ref m);
   if(m.Msg==0x112) {    // WM_SYSCOMMAND is 0x112
   if(m.WParam.ToInt32()==666) {   // the Menu's ID is 666
       //everything in here will run when menu is clicked
       MessageBox.Show("Yo!");
   }
   }    
}

}

Comments

  • re

    Posted by samithaslk on 29 Jul 2004

    :p
    nices stuff...excellent tip