Delphi在系统菜单中添加菜单项
unit dy219; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs; type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure sysmenu(var msg: twmmenuselect);message wm_syscommand;
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
i := getsystemmenu(handle,false);
appendmenu(i,mf_separator,0,nil);
appendmenu(i,mf_string,100,'我的菜单(&E)');
end; procedure TForm1.sysmenu(var msg: twmmenuselect);
begin
if msg.IDItem = 100 then
showmessage('您选择了自己添加的菜单!')
else
inherited;
end; end.
API函数
function GetSystemMenu(hWnd:HWND;bRevert:BOOL):HMENU;stdcall;
参数说明:
hWnd: 所要取得系统菜单句柄的目标窗口句柄。
bRevert:是否修改原始菜单。
返回一个HMENU型的菜单句柄。
通过GetSystemMenu得到句柄后可以使用AppendMenu函数为系统菜单增加一个菜单项,该函数原型为:
function AppendMenu(hMenu:HMENU;uFlags,uIDNewItem:UNIT;lpNewItem:Pchar):BOOL;stdcall;
参数说明:
hMenu: 用GetSystemMenu函数得到的菜单句柄。
uFlag,uIDNewItem:菜单唯一标志,弹出菜单唯一标志。
lpNewItem:菜单的类型。
容易出现问题:
缺少代码 message wm_syscommand;这句代码的主要作用是:A window receives this message when the user chooses a commond from the window menu.而如果注释了inherited ,则所有系统菜单都不能用。
http://blog.csdn.net/zang141588761/article/details/51992368
Delphi在系统菜单中添加菜单项的更多相关文章
- mfc 小程序---在系统菜单中添加菜单项
1建立一个对话框工程:在dlg类里定义一个菜单指针m_pMenu,在对话框OnInitDialog函数里添加代码: m_pMenu=GetSystemMenu(FALSE);//获取系统菜单的指针 m ...
- CentOS7 系统菜单中添加快捷方式
一,在桌面新建一个文件 文件名随意,但必须带有.desktop的后缀名, 以Eclipse为例 vi /usr/share/applications/eclipse.desktop 二,在文件中写入如 ...
- 为Windows资源管理器右键菜单添加菜单项
为Windows资源管理器右键菜单添加菜单项 在Windows下命令行用的比较多,经常在资源管理器里翻到某个目录,若想要在此目录下跑命令,只能是打开cmd.exe,然后一路cd才能到达此目录. 每次都 ...
- ecshop后台添加菜单项,权限问题
ecshop后台自定义菜单涉及到几个重要的权限控制的文件,先做如下总结: 后台添加菜单项,并设置权限的步骤.:(以在系统模块添加申请友链菜单为例)commn.php : \language ...
- iOS:菜单控制器和菜单项:UIMenuController和UIMenuItem
菜单控制器和菜单项:弹出自定义的菜单栏窗口 提示: 1. Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES2. Menu所处的View必须 ...
- cocos2dx中的菜单项CCMenuItem及其五个子类的使用
/*CCMenuItem是一个虚基类,因此必须实现它的五个子类之一,再把子类对象赋给父类指针,相当于多态*/ CCMenuItem *fontItem = CCMenuItemFont::create ...
- [Firefox附加组件]0002.添加菜单项
Add-onSDK 还不能为火狐浏览器提供一个API添加新的菜单项.但它是可扩展的设计,所以任何人都可以建立和发布模块,使用插件开发者.大牛埃里克沃尔德写的MenuItems模块,能够使我们很方便的添 ...
- 在右键菜单中添加用Jupyter Notebook打开
在右键菜单中添加用Jupyter Notebook打开 为了把 Jupyter 的工作目录指定到某一个文件夹下,每次都要启动 CMD 终端, 然后激活 Anaconda 环境,再启动 Jupyter ...
- Android 向系统日历中添加事件
查了一天半,总算有点大概了.以下是自己的理解,有错误的地方望指正. android系统有日历功能,应用程序可以根据一些接口开发自己的功能,即使是日历app也是根据这些接口开发的,所以我们可以利用程序向 ...
随机推荐
- 谷歌 AI 中国中心成立,人工智能势不可挡?
昨日,谷歌在上海举办了一年一度的Google中国开发者大会.在本届大会上,谷歌云首席科学家李飞飞宣布了一个重磅消息,即在北京将成立谷歌AI中国中心.对于这个即将成立的AI中心谷歌寄予厚望,希望与中国本 ...
- hbase 2.0.2 put和delete的一些坑
测试的inbox表为多版本表,封装的scanTable已设置查询全部版本,以下的测试基于hbase2.0.2 一.put(针对相同的rowkey) 测试1.使用方法链的形式对同一个put添加数据到不同 ...
- iOS BCD编码
inline static NSData* encodeBCD(NSString *value){ //NSString *value = @"123456"; NSMutable ...
- css+html+js实现多级下拉和弹出菜单
本文将使用css+html+js实现横向菜单.具有多级弹出菜单下拉. 首先我们来看看效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvajkwMzgy ...
- react中对象扩展运算符使用问题
看别人代码看到 render() { return <Modal {...this.props}> {this.props.children} </Modal> } 对其中的{ ...
- matlab 高级函数 —— circshift、squeeze
circshift:顾名思义,循环移动,循环的意义在于,移出的数据不丢失,而是来到队列的首部位置,也即其实是将原始序列视为一种圆环. 1. 基本用法 默认为右移. Y = circshift(A,K) ...
- JVM参数调优:Eclipse启动实践
本文主要参考自<深入理解 Java 虚拟机>.这本书是国人写的难得的不是照搬代码注释的且不是废话连篇的技术书,内容涵盖了 Java 从源码到字节码到执行的整个过程,包括了 JVM(Java ...
- C++重载加号运算符实现两个结构体的相加
#include<iostream> #include<string> using namespace std; struct S { int a, b; string str ...
- 将git文件挂到cdn上
网址:http://raw.githack.com/
- android module 模块共用远程包
在项目有多模块,需要使用到同一个第三方包时,引入报错,个人解决方法如下 1. 在模块build.gradle 文件中配置maven远程地址 可从app下的build.gradle文件里复制 allpr ...