mfc添加系统菜单

在OnInitDialog()函数里,mfc对系统菜单进行了处理,要想对你的程序增加属于你自己的系统菜单,可在其基础上进行修改,最后在进行响应.

具体步骤如下:

(1)定义属于自己的系统菜单ID,此ID必须<0xF000,这样才不会跟系统使用的ID产生冲突。

#define IDM_SYS_SELF 1

(2)在OnInitDialog里面增加如下红色内容:

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

ASSERT(IDM_SYS_SELF < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE); //取系统菜单

if (pSysMenu != NULL)

{

BOOL bNameValid;

CString strAboutMenu;

bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if (!strAboutMenu.IsEmpty()) //About不为空

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

pSysMenu->AppendMenu(MF_SEPARATOR); //加一个分割线

pSysMenu->AppendMenu(MF_STRING, IDM_SYS_SELF, L" By Yourself");

}

(3)最后对自定义的菜单进行响应,可以PreTranslateMessage()中进行:

BOOL CPopupMenuPosDemoDlg::PreTranslateMessage(MSG* pMsg)

{

// TODO: Add your specialized code here and/or call the base class

if (pMsg->message == WM_SYSCOMMAND)

{

switch (LOWORD(pMsg->wParam))//菜单ID

{

case IDM_SYS_SELF:

MessageBox(L"MY SYSTEM ID");

break;

}

}

return CDialogEx::PreTranslateMessage(pMsg);

}

时间: 2024-10-13 01:35:42

mfc添加系统菜单的相关文章

mfc 小程序---在系统菜单中添加菜单项

1建立一个对话框工程:在dlg类里定义一个菜单指针m_pMenu,在对话框OnInitDialog函数里添加代码: m_pMenu=GetSystemMenu(FALSE);//获取系统菜单的指针 m_pMenu->AppendMenu(MF_SEPARATOR);//添加分割线 m_pMenu->AppendMenu(MF_STRING,IDI_PECULIARMENU,"系统菜单"); 补充:IDI_PECULIARMENU 为一个常数,需要在Resourece.h中宏

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;

为系统菜单添加图标--------暴力反射

1 import java.lang.reflect.Method; 2 3 import android.os.Bundle; 4 import android.provider.Settings; 5 import android.app.Activity; 6 import android.content.Intent; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.widget.T

Delphi 在系统菜单中添加菜单项

1 unit Unit001; 2 3 interface 4 5 uses 6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs; 8 9 type 10 TForm1 = class(TForm) 11 procedure FormCreate(Sender:TObject

添加系统右键菜单项 管理员取得所有权(W)(带盾牌)

@color 0A @title 添加系统右键菜单项 管理员取得所有权(^&W)(带盾牌) by wjshan0808 @echo off echo * >nul reg add HKCR\*\shell\runas /ve /d "管理员取得所有权(&W)" /f reg add HKCR\*\shell\runas /v Icon /t reg_expand_sz /d "%SystemRoot%\system32\user32.dll,6"

001在系统菜单中添加菜单项

技术要点: 为了操作系统菜单,先要获取系统菜单指针,可以通过GetSystemMenu函数实现,然后利用菜单指针添加一个菜单项,最后在对话框OnSysCommand方法中处理菜单项的命令. GetSystemMenu方法用于获取一个系统菜单的指针,语法如下: CMenu* GetSystemMenu(BOOL bRect); bRect:FALSE时,该方法返回当前正在使用的系统菜单:TRUE时,该方法将重新设置系统菜单到默认状态,并且方法返回值不可用. 实现过程: (1)新建一个基于对话框的应

Delphi通过AppendMenu和DeleteMenu在系统菜单中添加删除菜单项

Delphi在系统菜单中添加删除系统菜单项 Delphi在系统菜单中添加删除系统菜单项,利用Windows提供的API函数GetSystemMenu可以得到窗口的系统菜单句柄,再通过AppendMenu和DeleteMenu就可以添加和删除菜单了. 工具/原料 Delphi7 Windows电脑 方法/步骤 打开Delphi7,创建新的工程,默认新窗体的Name属性为Form1   在Form1的Object Inspector中Events里双击OnCreate为Form1创建OnCreate

图文详解MFC程序设置菜单快捷键

原来觉得添加个快捷键就只要几分钟,上网搜索文章都写得很模糊, 只有这边文章不错. http://www.cplusplus.me/1263.html http://blog.sina.com.cn/s/blog_4a632b4d0101m9li.html MFC菜单添加快捷键 对于我这种编程大菜来讲,不写得极度明白加上图解的话,始终是难以理解并且会马上就忘的 . 文章来源:百度空间.伊瑞玛的缺陷 ①.资源视图点右键->添加资源->Accelerator MFC菜单添加快捷键1 ②.Accele

abp添加动态菜单

abp中MenuDefinition封装了导航栏上的主菜单的属性,MenuItemDefinition则封装了子菜单的属性,子菜单可以引用其他子菜单构成一个菜单树. MenuDefinitio成员如下: public object CustomData { get; set; }//自定义数据 public ILocalizableString DisplayName { get; set; }//表示本地化字符串 public IList<MenuItemDefinition> Items