C++Builder定制系统菜单

通常在应用程序的主窗体中,利用鼠标左键点击左上角的图标,会弹出一个菜单,称之为“系统菜单”。

在窗体中并没有系统菜单对应的组件,所以有时我们需要定制系统菜单时就比较麻烦。具体可以能过下面的步骤实现:

.在系统菜单上添加所需的菜单项。

.为新添加的菜单项定义OnClick事件的处理过程。

下面的例程中,在系统菜单中添加了一个“前端显示(A)”菜单项,通过该菜单项,可以使窗体始终显示在最前端或为普通窗体模式。具体实现过程如下:

1)通过菜单File|New Application创建一个新的工程。

2)添加窗体Form1的OnClick事件的处理过程如下:

void _fastcall TForm1::FormCreate(Tobject *Sender)
{
  //设置系统菜单
  AppendMenu(GetSystemMenu(Handle,false),MF_SEPARATOR,0,"");
  AppendMenu(GetSystemMenu(Handle,false),MF_STRING,200,"前端显示(&A)");
}

3)在文件Unit1.h头文件中增加如下语句:

...
#include<Menus.hpp>
...

4)在TForm1的类型定义中,添加系统菜单中新建菜单项的OnClick事件的处理过程的声明:

...
public:    //User declarations
   __fastcall TForm1(TComponent *Owner);
   MESSAGE void __fastcall SystemMenuCommand(TWMMenuSelect &Msg);
BEGIN_MESSAGE_MAP
   MESSAGE_HANDLER(WM_SYSCOMMAND,TWMMenuSelect,SysteMenuCommand);
END_MESSAGE_MAP(TForm);
};

5)手工添加系统菜单中新建菜单项的OnClick事件的处理过程如下:

void __fastcall TForm1::SystemMenuCommand(TWMMenuSelect &Msg)
{
  TForm::Dispatch(&Msg);
  if(Msg.IDItem==200)
  {
   if(Form1->FormStyle==fsNormal)
   {
    //将窗体设置为总在前端显示
    Form1->FormStyle=fsStayOnTop;
    //重新设置系统菜单
    AppendMenu(GetSystemMenu(Handle,false),MF_SEPARATOR,0,"");
    AppendMenu(GetSystemMenu(Handle,false),MF_STRING,200,"前端显示(&A)");
    //在新添加的菜单项前增加一个选中标志
    ModifyMenu(GetSystemMenu(Handle,false),200,MF_CHECKED,200,"前端显示(&A)");
   }
  }
  else
  {
   //将窗体设置为普通模式
   Form1->FormStyle=fsNormal;
   重新设置系统菜单
   AppendMenu(GetSystemMenu(Handle,false),MF_SEPARATOR,0,"");
   AppendMenu(GetSystemMenu(Handle,false),MF_STRING,200,"前端显示(&A)");
  {
}

时间: 2024-09-09 15:14:36

C++Builder定制系统菜单的相关文章

如何定制对话框系统菜单

背景 系统菜单是每个 Windows 程序的标准特性.通常系统菜单由 Windows 系统来管理,所以我们平时编成时很少去碰它.但是,有的时候,我们确实想定制自己的系统菜单项.这样就涉及到定制菜单的处理问题,因为 Windows 无法自动处理我们定制的系统菜单.而且,系统菜单的处理方式与常规的菜单处理是不同的.那么我们如何实现定制的系统菜单呢?相信看完本文的介绍,你会得到满意的答案. 本文例子是一个典型的C++/MFC对话框程序,设置了 EX_WM_TOOLWINDOW 扩展式样,因此在标题栏左

Android系统的定制---定制系统开机动画

4.3定制Android平台系统 通常产品厂商在拿到Android源码后会在Android源码基础上进行定制修改,以匹配适应自己的产品,从本节开始,我们从最原始的Android源码系统里一步一步定制出自己的Android系统.本节主要内容包含:根据Android源码,添加新产品编译项,定制系统启动界面和文字,定制系统启动动画和声音,定制系统桌面. 4.3.1 添加新产品编译项 Android系统的源代码是一个逻辑结构非常独立工程,在一套Android源码中可以编译出多个产品映像,在需要编译某一个

Windows 2008系统菜单的简单设置方法

相信许多人在与Windows Server 2008系统进行过一次"零距离"接触之后,都会对它的许多功能心动不已.这 不,在普通操作系统下看似十分平常的系统菜单或右键菜单,在Windows Server 2008系统环境下却能演绎出别样 的精彩.现在,本文就为各位朋友贡献几则Windows Server 2008系统环境下调教菜单的技巧,希望这些内容能对 大家有用! 挖掘右键菜单中的隐藏功能 在Windows Server 2008系统中,当我们用鼠标任意选中某一个文件夹,之后按下键盘

在系统菜单里添加菜单项和相应事件

有时候我们经常在程序中实现菜单项的重画,已有好多文章已经加以介绍,在此不再赘述.但是有时我们需要加新菜单项到系统菜单中,并希望给其增加相应的事件.笔者通过运用WindowAPI的AppendMenu函数和C++BUIDER的相关方法.属性,实现了往系统菜单中增加菜单项和事件. 下面介绍具体的实现方法,读者按照以下步骤操作,就可以实现在系统菜单中增加菜单项和事件: 1 首先创建一个新的空工程文件,存盘为project1.cpp和unit1.cpp. 2 使用菜单Tools中的Image Edito

Delphi为窗体的系统菜单中添加选项

通常在应用程序中,如果单击标题栏的左侧图标,就会弹出一个窗体的系统菜单,在其中可以完成最小化.最大化和关闭等操作.本实例将演示如何在窗体的系统菜单中添加自己的选项. 在窗体中添加一个TMainMenu组件,其中TMainMenu组件中的选项将要被添加到窗体的系统菜单中.添加组件后的窗体如图1所示. 图1 添加组件后的窗体 在TMainMenu组件生成的菜单中添加一个File菜单,在这个菜单下面添加一个Exit选项. 在本程序开始运行时就会把TMainMenu组件生成的菜单添加到窗体的系统菜单中,

[WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu)

点击窗口左上角图标时弹出来的菜单也就是这里所说的系统菜单(SystemMenu),有时需要禁用(移除)其中的某些或全部菜单项.刚才也有网友问到了这一点,OK,贴代码: 要全部禁用(移除)菜单项请调用SystemMenuManager.RemoveWindowSystemMenu(Window window)方法,想部分禁用(移除)菜单项则调用SystemMenuManager.RemoveWindowSystemMenuItem(Window window, int itemIndex)方法.

使用RadControls的RadMenu控件开发系统菜单

关于菜单这个话题我想应该是不讲则懂,所以本文不会多讲这些概念,则重关注RadControls控件中的RadMenu控件的使用,结合数据库来开 发一个系统菜单. 一.数据库设计 这里我就使用Access作为示例数据库,详细见下图: 开发系统菜单-radcontrols"> 表字段依次为:自动编号.菜单编码.菜单名称.请求地址.菜单上显示的图片地址.快捷键(RadMenu控件支持).菜单顺序.菜单级限. 是否为末级和父菜单编码. 整个设计中主要以菜单编码作为关联依据. 二.注册控件及使用控件皮

对窗口的系统菜单(SystemMenu)的一些操作

有时候想禁用/移除/添加一些系统菜单项目,那么你可能会用到下面的API,以C#平台调用为例: [DllImport("User32.dll")] internal static extern IntPtr GetSystemMenu(IntPtr hWnd, Int32 bRevert); 该函数用于获取系统菜单句柄.hwnd参数是窗口句柄,表明你想要获取哪个窗口的系统菜单:bRevert ,bool值,如果为假,那么整个函数将返回原窗口的系统菜单的句柄拷贝:如果为真,则原窗口的系统菜

android 静默安装-android 定制系统下的静默安装

问题描述 android 定制系统下的静默安装 目前的要求是在ACER-Z120手机上(该手机应该是基于android 4.1.1的定制系统)实现软件的静默安装.就是我要写一个控制软件来下载被控制软件,下载完了静默安装被控制软件.我的控制软件要执行 pm install 命令是不是要先得到该操作系统的platform..pk8 platform.x509.pem signapk.jar三个文件,用命令来对我的控制软件进行签名,在安装进入该手机?整个过程这样对吗? 解决方案 放在/system/a