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();
m_systemMenu.InsertMenu(, 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);
}
至此就可以了~
本文仅为记录,为以后使用方便,无别意~
本文参考了以下文章:
SystemMenu类的用法的更多相关文章
- C#中timer类的用法
		C#中timer类的用法 关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类 ... 
- C#正则表达式Regex类的用法
		C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ... 
- 标准C++中的string类的用法总结
		标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ... 
- android中Handle类的用法
		android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ... 
- Handle类的用法
		android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ... 
- android application类的用法
		android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ... 
- php class类的用法详细总结
		以下是对php中class类的用法进行了详细的总结介绍,需要的朋友可以过来参考下 一:结构和调用(实例化): class className{} ,调用:$obj = new className(); ... 
- day319               1、正则表达式的定义及使用 2、Date类的用法 3、Calendar类的用法
		1.正则表达式的定义及使用2.Date类的用法3.Calendar类的用法 一.正则表达式 ###01正则表达式的概念和作用* A: 正则表达式的概念和作用* a: 正则表达式的概述* 正则表达式也是 ... 
- [转]QDir类及其用法总结
		直接给出原文链接:QDir类及其用法总结 
随机推荐
- ECshop设置301最快捷最简单的方法
			ECshop设置301最快捷最简单的方法 在 init.php中加入以下代码 if (strtolower($_SERVER['SERVER_NAME'])!='www.fz1688.com') { ... 
- Java WebService 简单实例[转]
			http://www.cnblogs.com/yisheng163/p/4524808.html?utm_source=tuicool 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必 ... 
- 【openwrt】再设置
			https://wiki.openwrt.org/zh-cn/doc/uci/network https://wiki.openwrt.org/zh-cn/doc/uci/wireless https ... 
- Spring源码追踪3——AOP机制
			研究代码: spring配置文件 <cache:annotation-driven /> Java代码 @Cacheable(value = "test", key = ... 
- 解决tomcat启动Socket监听端口死循环被hold问题
			原文链接:http://blog.csdn.net/dead_cicle/article/details/7073433 1.SOCKET监听置于servlet的init方法中,在web.xml里加入 ... 
- python Flask :TypeError: 'dict' object is not callable
			flask 基于Werkzeug .. @moudule.route('/upload', methods=['GET', 'POST']) def upload_file(): global _fl ... 
- Python--Cmd窗口运行Python时提示Fatal Python error: Py_Initialize: can't initialize sys standard streams LookupError: unknown encoding: cp65001
			源地址连接: http://www.tuicool.com/articles/ryuaUze 最近,我在把一个 Python 2 的视频下载工具 youku-lixian 改写成 Python 3,并 ... 
- EPLAN P8导线颜色的设置
			P8里的导线应称为"连接",连接的颜色代表了其电位的传递路径,如可以给三相电源设置成黑色,PE设为绿色,N设为蓝色等等. P8中电位在连接和元器件中传递的方法是由元器件的连接点属 ... 
- POJ 1330 Nearest Common Ancestors
			Nearest Common Ancestors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14698 Accept ... 
- BATCH(BAT批处理命令语法)
			bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件[@more@] bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的 ... 
