C#+Windows API操纵系统菜单
http://tech.ddvip.com 2006年08月02日 社区交流
本文详细介绍C#+Windows API操纵系统菜单
protected override void WndProc ( ref Message msg )
{
// 通过截取WM_SYSCOMMAND消息并进行处理
// 注意,消息WM_SYSCOMMAND被定义在WindowMessages枚举类中
// 消息的WParam参数包含点击的项的ID
// 该值与通过上面类的InsertMenu()或AppendMenu()成员函数传递的一样
if ( msg.Msg == (int)WindowMessages.wmSysCommand )
{
switch ( msg.WParam.ToInt32() )
{
case m_ResetID: // reset菜单项的ID
{
if ( MessageBox.Show(this, "\tAre you sure?","Question", MessageBoxButtons.YesNo) ==
DialogResult.Yes )
{ // 复位系统菜单
SystemMenu.ResetSystemMenu(this);
}
} break;
case m_AboutID:
{ // “关于”菜单项
MessageBox.Show(this, "作者: 朱先中 \n\n "+"e-mail: sdmyzxz@163.com", "关于");
} break;
// 这里可以针对另外的菜单项设计处理过程
}
}
// 调用基类函数
base.WndProc(ref msg);
}
七、总结
实现上述目标的另一个可能的方法是,通过创建一个事件OnSysCommand并当消息WM_SYSCOMMAND传来时激活它,然后把属性WParam传递给该事件的句柄。读者可以自行编程验证。
总之,本文通过一个简单的系统菜单修改例子,分析了用C#使用.NET平台调用机制来调用DLL中的非托管函数的基本步骤及注意事项。另,所附源程在Windows2000 Server/ VS .NET2003下调试通过。
来源:天极开发 作者:朱先忠 责编:豆豆技术应用