C#+Windows API操纵系统菜单

http://tech.ddvip.com   2006年08月02日    社区交流

本文详细介绍C#+Windows API操纵系统菜单

  本文示例源代码或素材下载

  一、前言

  本文针对C#.NET中没有提供直接的类似SystemMenu的属性或类似GetSystemMenu的成员函数的情况,通过调用Windows API设计了一个C#类SystemMenu,从而实现了传统的对于系统菜单的操作。

  二、系统菜单简介

  当你单击窗口图标或右击窗口标题栏时系统菜单即弹出。它包含当前窗口的默认行为。不同窗口的系统菜单看起来有些不同,如一个正常窗口的系统菜单看起来与一个工具栏子对话框窗口的菜单就不一样。

  修改系统菜单的好处:

  ·添加应用程序自己定义的菜单项。

  ·在WW被最小化时,SS是一个很好的地方来放置动作,可以被存取,因为SS可以显示,通过在任务栏窗口图标上单击右键。

  ·使某菜单项失去能力,如从系统菜单中移去“最大化”,“最小化”“关闭”等。由于这种改动还影响到窗口右上角的三个按钮,所以这是一个使窗口右上角“X”失去能力的不错的办法。

  操纵系统菜单

  通过调用 API函数GetSystemMenu,你就检索到了系统菜单的一个拷贝。该函数的第二个参数指明是否你要复位系统菜单到它的缺省状态。再加上另外几个API菜单函数如AppendMenu, InsertMenu等,你就能实现对于系统菜单的灵活控制。

  下面我仅简单介绍如何添加菜单项以及如何实现新项与用户的交互。

  三、SystemMenu 类介绍

  SystemMenu类的实现使得整个系统菜单存取变得非常容易。你可以使用这个类来修改一个窗口的菜单。 通过调用静态成员函数FromForm你得到一个对象,该函数要求一个Form对象或一个从Form继承的类作为它的参数。然后它创建一个新的对象,当然如果GetSystemMenu API调用失败的话,将引发一个NoSystemMenuException例外。

来源:天极开发    作者:朱先忠    责编:豆豆技术应用

正在加载评论...