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类及其用法总结
随机推荐
- Microsoft.Web.RedisSessionStateProvider 运行异常问题
System.TimeoutException: Timeout performing GET MyKey, inst: 2, mgr: Inactive, queue: 6, qu: 0, qs: ...
- 防抖(Debounce)与节流( throttle)区别
http://www.cnblogs.com/ShadowLoki/p/3712048.html http://blog.csdn.net/tina_ttl/article/details/51830 ...
- Kafka - SQL 代码实现
1.概述 上次给大家分享了关于 Kafka SQL 的实现思路,这次给大家分享如何实现 Kafka SQL.要实现 Kafka SQL,在上一篇<Kafka - SQL 引擎分享>中分享了 ...
- [转]jQuery.Autocomplete实现自动完成功能(详解)
本篇文章除了介绍jquery.autocomplete基本参数外,主要说明jquery.autocomplete的数据源的格式问题. 1.jquery.autocomplete参考地址 htt ...
- 使用git提交内容到网盘
1.创建版本库(注意勾选纯版本库的选项) 2.客户端获取版本库代码 3.提交及获取 master是git默认的主要分支(主干),适合单人独自开发.多人开发时可以给每个人创建一个分支 参考资料: htt ...
- ViewHolder模式超简洁写法
ViewHolder是什么就不解释了.大家通常怎么写ViewHolder呢? ViewHolder holder = null; if (convertView == null) { convertV ...
- HTML5新特性之Web Worker
1.概述 JavaScript语言采用的是单线程模型,也就是说,所有任务排成一个队列,一次只能做一件事.随着电脑计算能力的增强,这一点带来很大的不便,无法充分发挥JavaScript的潜能.龙其考虑到 ...
- HTML5新特性之跨文档消息传输
1.同域限制 所谓“同域限制”是指,出于安全考虑,浏览器只允许脚本与同样协议.同样域名.同样端口的地址进行通信. 2.window.postMessage方法 浏览器限制不同窗口(包括iFrame窗口 ...
- [转]silverlight Datagrid 行上增加ToolTip
有两种办法: 1. 直接在后台处理在数据绑定后 ,注册LoadingRow 事件this.DataGrid.LoadingRow += new EventHandler<DataGridRowE ...
- IIS+PHP+MYSQL安装配置
首先下载php-5.2.0-win32.zip,mysql-noinstall-5.0.22-win32.zip和phpMyAdmin-2.9.1.1-all-languages.zip.这三个文件的 ...