怎样在右键单击Form标题栏时显示自定义的菜单项? 右键单击窗体的标题栏时,一般会出现“移动”、“最小化”、“关闭”等几个系统菜单项。现在我想在其中加一个“关于”项,单击“关于”项时显示程序信息。 在VC6.0下使用MFC写对话框时会自动有这个功能,而在VStudio2005 C#下没有,不知道怎么实现,请高手指点,最好给出大体的代码,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢Richet512,我当然知道应该那样做,只是不知道具体如何实现。刚才在网上查了查,知道了,代码如下:using System.Runtime.InteropServices; ......[DllImport( "user32.dll ")] public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport( "user32.dll ")] public static extern bool InsertMenu(IntPtr hMenu, uint uPosition, uint uFlags, uint uIDNewItem, string lpNewItem); public const int MF_BYCOMMAND = 0; public const int MF_STRING = 0; public const int MF_BYPOSITION = 0x400; public const int MF_SEPARATOR = 0x800; private const uint SC_ABOUT = 0x0001; public const int WM_SYSCOMMAND = 0x0112; ......private void Form1_Load(object sender, EventArgs e) { IntPtr vMenuHandle = GetSystemMenu(Handle, false); InsertMenu(vMenuHandle, 255, MF_STRING, SC_ABOUT, "About... "); } ......protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_SYSCOMMAND: if ((uint)m.WParam == SC_ABOUT) { MessageBox.Show( "Zswang 路过! "); } break; } base.WndProc(ref m); } Zswang确实路过不少地方呀:)高手,乐于助人的高手~~ C#中timer的使用? winform程序,在WIN XP下编写,要在WIN2003 X64平台上运行,如何设置配置管理器? 有谁知道.data用什么软件可以打开? C#深入内存 winForm中,flash控件设置WMode = "Transparent"没效果 有关XML 与DataSet 求助 关于winForm程序的结束问题 C# 分布式开发 高分请教高手,如何把一个treeview的结构保存到XML文件中,又如何从这个XML文件生成treeview? 关于数据库运行速度的小问题--急 人都跑哪里去了? 请问如何让我的程序等待5秒再执行下一步(急!)
......
[DllImport( "user32.dll ")]
public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport( "user32.dll ")]
public static extern bool InsertMenu(IntPtr hMenu, uint uPosition, uint uFlags, uint uIDNewItem, string lpNewItem); public const int MF_BYCOMMAND = 0;
public const int MF_STRING = 0;
public const int MF_BYPOSITION = 0x400;
public const int MF_SEPARATOR = 0x800; private const uint SC_ABOUT = 0x0001;
public const int WM_SYSCOMMAND = 0x0112;
......
private void Form1_Load(object sender, EventArgs e)
{
IntPtr vMenuHandle = GetSystemMenu(Handle, false);
InsertMenu(vMenuHandle, 255, MF_STRING, SC_ABOUT, "About... ");
}
......
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_SYSCOMMAND:
if ((uint)m.WParam == SC_ABOUT)
{
MessageBox.Show( "Zswang 路过! ");
}
break;
}
base.WndProc(ref m);
}
高手,乐于助人的高手~~