通行证: 用户 密码
http://www.pconline.cn/
汽车网 | 游戏网 | 时尚女性
分站:北京 上海 广州 深圳 香港
广西 重庆 山东 江苏 辽宁 福建
首 页 | 今日报价 | 产业资讯 | 数码世界 | 硬件资讯 | 软件资讯 | 下 载 | 游 戏 |
论 坛 | 产 品 库 | 渠道商情 | 招聘培训 | 二    手 | 评 测 室 | 导 购 | 社 区 |
摄影
部落
手 机
数码相机
随身听
 DIY配件
笔记本
 台式机
摄像机
精品廊
-
您现在的位置: 软件资讯 > 开发特区 > .net技术 > C# 免费新闻代码RSS新闻聚合
  用C#实现office2003风格的菜单组件 出处:CP
[ 2005-08-24 09:49:07 ] 作者:cp(阿才翻译) 责任编辑:moningfeng

  类MainMenuItemDrawing主要负责主菜单的一级子菜单(如常见的文件菜单)的绘制。
  实现如下:

public class MainMenuItemDrawing
{
//静态方法,实现菜单项的绘制
public static void DrawMenuItem(System.Windows.Forms.DrawItemEventArgs e, MenuItem mi)
{
首先检查menuItem的状态,如为鼠标悬浮在其上的状态,则调用DrawHoverRect绘制并填充悬浮矩形;
如为选定态,则调用DrawSelectionRect绘制并填充相应的选定态时的矩形;
如两者都不是,则用控件的填充色绘制并填充矩形。
最后利用e.Graphics.DrawString方法绘制菜单文字。
}
……
}


  类MenuItemDrawing负责主菜单的子菜单和上下文菜单的绘制。

public class MenuItemDrawing
{
//静态方法,实现菜单项的绘制
public static void DrawMenuItem(System.Windows.Forms.DrawItemEventArgs e, MenuItem mi)
{
检查菜单顶是否被选中,如被选中,则调用DrawSelectionRect绘制并填充选中后的矩形,
否则只用背景色绘制空白区域并调用DrawPictureArea绘制图片区域。
调用DrawCheckBox绘制复合框如果该菜单项被选中。
调用DrawMenuText绘制菜单项文字。最后调用DrawItemPicture绘制图标。
}
……
}


  你对源码有兴趣。可以下载本文提供的源代码也可以从http://www.codeproject.com/cs/menu/MhOffice2003Menus.asp下载。

  由于绘制的代码比较长,不宜在文中全部给出,所以具体的绘制代码将省去。文中只是给出了实现该组件的思路。

  结束语:由于.net中使用了GDI+,所以组件的绘制工作比以前在MFC或者Win32API模式下绘制要容易地多。组件的开发最重要的一点就是当菜单项被置为自绘方式后,用户需要激活两个事件来定制菜单的显示。第一个事件对应Win32的WM_MEASUREITEM消息。窗口收到这个消息时,它就会触发一个 MeasureItem 事件给所有的自绘 MenuItem 对象。这个事件代理(Delegate)是一个名为MeasureItemEventHandler的类,与此事件相关的信息都被存储在一个MeasureItemEventArgs 对象中并被传递到事件处理函数(文中为mainMenuItem_MeasureItem或者menuItem_MeasureItem)。第二个事件与 Win32 的WM_DRAWITEM消息对应,并给每个注册了的事件处理函数传递一个 DrawItemEventArgs 对象。这个事件代理是一个名为DrawItemEventHandler的类。个人认为组件实现的难点和重点就是在两事件处理函数中根据菜单的不同状态所要进行的不同绘制工作。
Flash剧场全新改版,精品Flash让你看够玩够!


[上一页] [1] [2] [3] [4]

更多相关搜索: C#.. office2003..
正在加载评论,请稍候…

发给好友 我要报错 投稿给我们 加入收藏 返回顶部

本栏今日更新
相关文章
·Google的新IM工具即将要面世?
·侧边栏的威力:Google桌面搜索2.0发布
·Flash杀手!微软Sparkle即将露面
·微软杀毒OneCare Beta1多图欣赏
·上兵伐谋:探讨Windows神奇的组策略
·用过没?Win2003系统25招加速大法
·XP时代从硬盘启动到DOS的方法
·Flash 8 新特性之线条属性的改变
·用Asp.net制作顶部导航控件
·C#的office操作[word&Excel]
·C#+Oracle开发中执行存储过程问题
·c#多线程教学(5):Case 学习多线程
·c#多线程教学(4):线程池和异步编程
·c#.net多线程编程教学(3):线程同步
·C# 最强大的功能--泛型简介
·用C#屏敝3721网络实名

完美时尚娱乐:2004年腾讯QQ评测大观
精彩无限:MSN Shell4使用指南
亲手制作鲜花情人贺卡送给她
挑战伏明霞?企鹅跳水游戏,看你能得多少分?

新闻搜索
高级搜索
-
热点专题
·挑战十大Flash智益游戏
·QQ辅助软件使用指南
·向"流氓软件"大声说不!
·惜别!毕业十大必唱歌曲
·常用软件的另类用法集
·搜索技巧:网罗天下的乐趣
·电脑艺术设计大师之路连载
·老歌歪唱Flash MV爆笑欣赏
更多...
Flash排行榜
·头文字D插曲-一路向北
·暴笑恶搞MV-《从良》
·笑谈广东话-叽叽噶噶
·恶搞!PP鸡打劫记之一
·下辈子如果我还记得你
·疯狂射击游戏-火凤凰号
·悲怆!披着羊皮的狼
·搞笑MV-亲爱的对不起
更多...
IT培训热门文章
· 月薪5万,微软最新面试题
· 微软召开黑客大会(图)
· 美军超级黑客特种部队揭密
· Linux下软件安装详解(图)
· 软考模拟软件(网络工程师)
· 2005年软件水平考试资料
· 世界编程大赛第1名写的程序
· 某变态公司的面试IQ题
更多...
PConline频道精选