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

.NET中的自绘机制

 2006-07-18 11:26:21 来源:WEB开发网   
核心提示: 为了避免编写一个新的可视化设计器并充分利用自动生成的 Visual Studio .NET 代码,我决定另辟蹊径,.NET中的自绘机制(4),图标与菜单项之间的联系将被存储在 GraphicMenu 类内部的一个 Hash 表中,用 AddIcon 方法来向 Hash 表添加元素,这个事件

为了避免编写一个新的可视化设计器并充分利用自动生成的 Visual Studio .NET 代码,我决定另辟蹊径。图标与菜单项之间的联系将被存储在 GraphicMenu 类内部的一个 Hash 表中。用 AddIcon 方法来向 Hash 表添加元素。 extendedMenu.AddIcon(FilePrint, "..\images\print.bmp")
extendedMenu.AddIcon(FileNew, "..\images\new.bmp")
extendedMenu.AddIcon(FileOpen, "..\images\open.bmp")
extendedMenu.AddIcon(FileSave, "..\images\save.bmp")   
  AddIcon方法有两个参数——菜单项对象及欲显示的小位图文件的(或者任何System.Drawing.Image 类支持的其它图像文件格式)路径。在此 Hash 表中,菜单项对象是表的主键,而图标文件名是元素的值。虽然这种解决方案从理论上 讲并不优秀,但却可以让你以传统方式来使用惯用的工具(Visual Studio .NET)。你只需要调用额外的方法、运行一些重新配置菜单的后台代码。

前示代码假设菜单位图存放于外部文件——有点类似一个Web应用程序。如果你打算使用内嵌在应用程序集中的图像,你可以重载 AddIcon 方法,并使之能接受代替文件路径的一个Image对象作为传入参数: Sub AddIcon(ByVal item As MenuItem, ByVal icon As Image)    这个应用程序将首先从程序集(assembly)中提取图像,然后将其添加到Hash表。 

MeasureItem 事件

当菜单项被置为自绘方式后,用户需要激活两个事件来定制菜单的显示。第一个事件对应Win32的WM_MEASUREITEM消息。窗口收到这个消息时,它就会触发一个 MeasureItem 事件给所有的自绘 MenuItem 对象。这个事件代理(Delegate)是一个名为MeasureItemEventHandler 的类, 其原型如下: Sub StdMeasureItem(ByVal sender As Object, ByVal e As MeasureItemEventArgs)  与此事件相关的信息都被存储在一个MeasureItemEventArgs 对象中并被传递到事件处理函数。Figure 5 列出并描述了这个类的所有属性。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:NET 机制

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