定制任务栏上的系统菜单
日期:2007年6月7日 作者: 查看:[大字体 中字体 小字体]-
通常,当我们在特定的场合或是在多应用的环境运行自己或其他的应用程序时, 会在多窗口之间进行频繁的切换,以实施实时的交互得到所期望的结果,对于这样的“笨”办法,我们会不厌其烦地进行好多次,甚至是无数次。
好在Win 9x 在任务栏上显示了我们所运行或期望的程序,并配备了相应的右键系统弹出菜单,使我们在使用时方便多了。问题是那些都是缺省的系统菜单(命令),对于我们来说没太大的帮助,下面我所介绍的就是利用Win9x 为我们设定的任务栏系统菜单来达到快速、简捷的获取信息(执行命令)的目的。提到系统菜单,就让我们联想到底层的 WIN32系统调用:AppendMenu、Inert- Menu、ModifyMenu。仅此三个函数,就足可以让我们对缺省的系统菜单进行定制,应用自如了。为简单起见,本文就 AppendMenu 进行一些介绍,其余的请朋友们参WIN32API 帮助文件。以下是: AppendMenu 函数原型:
BOOL AppendMenu(
HMENU hMenu, // 要定制的菜单句柄
UINT uFlags, // 怎样定制菜单项
UINT uIDNewItem, // 要定制的菜单项标识或子菜单句柄
LPCTSTR lpNewItem // 要定制的菜单项(字串)
);
在 AppendMenu 函数里,lpNewItem 和 uIDNewItem 参数依赖 uFlags 的不同
标志而有所变化,让我们来看一看 uFlags 到底有那一些定义值:
MF_BITMAP 指明该菜单项是一位图,在 lpNewItem 参数代表位图句柄
MF_CHECKED 在菜单项的前面放上一个“选中”标记
MF_DISABLED 屏蔽该菜单项,但不象平常那样变成灰色
MF_ENABLED 与 MF_DISABLED 相反
MF_GRAYED 除了有 MF_DISABLED 的作用以外,还把该菜单项变灰
MF_MENUBREAK 把该菜单与现有菜单并排放在一起
MF_MENUBARBREAK 与 MF_MENUBREAK 相同,除了在中间放一条竖线外
MF_OWNERDRAW 表明该菜单项为自绘菜单项,还必须处理一切的显示、更新问题
MF_POPUP 该菜单项为一子菜单,uIDNewItem 参数代表其句柄
MF_SEPARATOR 与上一菜单项画上一分割线,系统将忽略 lpNewItem 和
uIDNewItem 参数
MF_STRING 该菜单项是一文本字串,lpNewItem 是其内容
MF_UNCHECKED 取消该菜单项前面的“选中”标记我们看到,除了MF_POPUP,MF_BITMAP,MF_OWNERDRAW以外,MF_STRING是最常用的菜单? 义方法,uIDNewItem在这里是命令消息的wParam参数。朋友们还记得获取普通菜单的句柄用GetMenu,那么获取系统菜单的句柄就应该用GetSyst-emMenu。这时有一个问题:程序怎么知道该获取的系统菜单是窗口上的系统菜单,还是任务栏上的系统菜单呢?这就依靠传递给GetSystemMenu的是哪一个参数。因为我们当前考虑的是任栏,因此这个参数就必须是Application.Handle。如果这时候就着手编制一个Project检验一下,朋友们就会发现...“我”定义的菜单怎么没有反应!原来该菜单项根本没有在Application里处理过。显然,我们还得过滤一下传到Application的WM_SYSCOMMAND消息。为了加深了解,我们首先追加一个简单的任务栏系统菜单:
- [1] [2] [3] [4] 下一页
-
- 定制任务栏上的系统菜单 相关文章:
- ·定制任务栏上的系统菜单
- 定制任务栏上的系统菜单 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·C语言教程第六章:指针
- ·C/C++笔试、面试题目大汇总
- ·MSComm控件使用详解
- ·学生成绩管理系统实习
- ·飞机订票系统设计
- ·Windows下C语言网络编程快速入门
- ·c#.net连接access操作类
- ·进程调度模拟程序
- ·打字游戏
- ·C#基础概念二十五问
- ·makefile规则
- ·C语言的常用库函数使用方法分析及用途
- ·Windows编程基础 - 概述
- ·c语言中的结构(struct)和联合(union)简介
- ·C语言教程第五章:函数
- ·一个简单的链表程序
- ·GDB 的文档
- ·socket编程原理
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·漫谈C++ Builder多线程编程技术
特别推荐
- ·C#基础概念二十五问
- ·利用C#远程存取Access数据库
- ·入门教程:实例详解C++友元
- ·C语言基础教程(三)输入输出函数及控制流程语句
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·如何在C/C++中调用Java
- ·设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!
- ·gSOAP中内存的使用
- ·Windows下C语言网络编程快速入门
- ·C语言教程第六章:指针
- ·漫谈C++ Builder多线程编程技术
- ·学生成绩管理系统实习
- ·用C#实现pdf文件的完整性验证
- ·将程序从托管扩展 C++ 迁移到 C++/CLI(1)
- ·链表的c语言实现(六)
- ·C语言库函数 (D类字母)
- ·用AVIFile函数制做AVI文件基本步骤
- ·利用C++实现的贪吃蛇游戏
- ·Windows API-GDI入门基础知识详解(3)
- ·C语言库函数 (C类字母)
