SystemMenu类的用法
先声明对象以及相应常数:
//SystemMenu对象 private SystemMenu m_systemMenu = null; // ID 常数定义 (可变,只要不与系统冲突即可) private const int m_AboutID = 0x100; private const int m_ResetID = 0x101;
然后在Form或Control继承类的初始化事件中添加相应代码,如在窗体的Load事件中:
private void Form1_Load(object sender, EventArgs e) { try { m_systemMenu = SystemMenu.FromForm(this); // 添加一个separator ... m_systemMenu.AppendSeparator(); //m_systemMenu.RemoveMenuItem(0);//移除"还原"菜单项 //m_systemMenu.RemoveMenuItem(3);//移除"关闭"菜单项 //m_systemMenu.RemoveMenuItem(m_systemMenu.GetMenuItemCount(this) - 2);//移除"关闭"菜单项 //本文地址:http://www.cnblogs.com/Interkey/p/SystemMenuClass.html //禁用"关闭"菜单项以及按钮 m_systemMenu.DisableClose(this); // 添加"关于" 菜单项 m_systemMenu.AppendMenu(m_AboutID, "关于"); // 在菜单顶部加上"复位"菜单项 m_systemMenu.InsertSeparator(0); m_systemMenu.InsertMenu(0, m_ResetID, "复位系统菜单"); } catch (NoSystemMenuException err) { MessageBox.Show(err.Message); } }
本文地址:http://www.cnblogs.com/Interkey/p/SystemMenuClass.html
最后处理自定义菜单项的事件,必须重载从Form或Control继承类的WndProc函数:
首先截获WM_SYSCOMMAND消息。当用户点击系统菜单的某一项或者选择“最大化”按钮,“最小化”按钮或者“关闭”按钮时,我们要检索该消息。特别注意,消息对象的WParam参数正好包含了被点击菜单项的ID。于是可以实现如下重载:
protected override void WndProc(ref Message m) { // 通过截取WM_SYSCOMMAND消息并进行处理 // 注意,消息WM_SYSCOMMAND被定义在WindowMessages枚举类中 // 消息的WParam参数包含点击的项的ID // 该值与通过上面类的InsertMenu()或AppendMenu()成员函数传递的一样 if (m.Msg == (int)WindowMessages.wmSysCommand) { switch (m.WParam.ToInt32()) { case m_ResetID: // reset菜单项的ID { if (MessageBox.Show(this, "\tAre you sure to reset the system menu?", "Question", MessageBoxButtons.YesNo) == DialogResult.Yes) { // 复位系统菜单 SystemMenu.ResetSystemMenu(this); } } break; case m_AboutID: // “关于”菜单项 { MessageBox.Show(this, "作者: Interkey \n\n " + "2013-12-08 15:51:56", "关于"); } break; // 这里可以针对另外的菜单项设计处理过程 } } base.WndProc(ref m); }
至此就可以了~
本文仅为记录,为以后使用方便,无别意~
本文参考了以下文章:
            
            作者:Cosmic_Spy
            
            出处:http://www.cnblogs.com/Interkey/
            
            有兴趣可以加群【.NET破解|反编译】请注明:博客园,谢谢~
            
            本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则肯定是你抄我的。
        
posted on 2013-12-08 17:00 Cosmic_Spy 阅读(1081) 评论(0) 收藏 举报
 
                
            
         
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号