WEB开发网
开发学院软件开发VC .NET中的自绘机制 阅读

.NET中的自绘机制

 2006-07-18 11:26:21 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 每次 Microsoft 推出象 Office 或者 Visual Studio 这样拳头产品的新版本时,都会推出一些新的特性,.NET中的自绘机制,其中包括了新的菜单样式(Menu Style),当新的菜单样式以各自的方式集成到成品中后,MenuItem对象则对应在MainMenu

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

每次 Microsoft 推出象 Office 或者 Visual Studio 这样拳头产品的新版本时,都会推出一些新的特性,其中包括了新的菜单样式(Menu Style)。当新的菜单样式以各自的方式集成到成品中后,第三方的开发商便会掀起一阵模仿浪潮,利用一些定制控件和组件来仿效它。如果你正在使用这些产品,那么你惟有升级到新版本才能享受提供的新的特性。否则,你的应用程序将继续使用大约十年前随 Windows 95 上市时的那种 Windows 经典菜单用户界面。

虽然 Microsoft 在其主要产品中定期更新菜单样式,但其可用来定制应用程序的菜单 API 却自 Windows 3.x 和 文件管理器以来一直没有发生太大的变化。从 Win16 平台开始,应用程序就已经可以有权自已绘制一个个的菜单项来实现自定义菜单。这种技术今天称作自绘(Owner-drawing),并已大量用于其它一些系统组件与控件上,包括列表框、按钮和组合框。

Figure 1 自绘控件

自定义控件的绘图在 Win16 和 Win32 平台下是很无聊的事情。从功能上讲并不是特别复杂,但是代码的编写和维护着实令人讨厌。在本期栏目中,我将深入研究 .NET框架为窗口菜单提供的自绘机制。最终目的是创建一个自定义的组件——只要你将它拖放到某个 Windows 窗体的组件托盘(Component Tray)上,它就允许你按照给定的主题定制菜单的外观。作为例子,我将混合使用 Visual Studio.NET 和 Office 2003 的菜单样式。如 Figure 1 所示,一旦你理解了 .NET 中的自绘控件,那么你也能完成这个示例。 

自定义菜单的显示

在.NET框架中,与窗口菜单相关的类包括 MainMenu、ContextMenu 和 MenuItem,这些类都是从公共类——Menu 类派生而来 的。某个窗体的最顶层菜单总是一个 MainMenu 类实例。应用程序的菜单包括了一个弹出式菜单的列表,每个弹出式菜单又由若干个菜单项和子菜单组成。ContextMenu 类对应动态上下文菜单,应用程序中所有活动可见的对象都可以显示这样的一个菜单。 上下文菜单是一个独立的子菜单,并且没有办法与顶层菜单显示的其它子菜单区分开来。最后,MenuItem对象则对应在MainMenu 或者 ContextMenu 对象 内显示的某个独立的菜单项。总之,任何.NET框架下的菜单都是一个 MenuItem 对象集合——无论它在哪里、以及如何被显示。

1 2 3 4 5 6  下一页

Tags:NET 机制

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接