MFC 基于对话框的程序添加菜单&托盘图标显示

mfc实现托盘图标 1,首先我们用AppWizard创建一个基于对话框的应用程序CUserDlg。m_nid为类成员变量NOTIFYICONDATA m_nid; 2,ToTray(){ m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); m_nid.hWnd = this->m_hWnd; m_nid.uID = IDR_MAINFRAME; m_nid.uFlags = N 阅读详情

基于对话框的应用程序默认是没有菜单的,如果我们想为它添加菜单,可按以下方法来做:

1.在资源视图中制作菜单对象,并将ID设为IDR_MENU

具体方法是资源视图中右击-->Insert-->Insert Resources-->MENU,这样就可以创建菜单,然后就可以在新生成的这个菜单栏中,添加很多菜单项了,比如【打开文件】的菜单,ID设为IDM_OPENFILE

2.在对话框类的头文件里新增一个CMenu类的成员变量 m_Menu;

3.在对话框类的OnInitialDlg函数中,为Cmenu对象加载菜单资源,代码如下:

// 加载菜单资源
m_Menu.LoadMenu(IDR_MENU);
// 为对话框设置菜单
this->SetMenu(&m_Menu);

4.为我们的菜单中某一项添加菜单响应函数(OnCommand类型消息)

如果是点击某个菜单按钮,弹出一个对话框,那我们先要为该对话框创建一个类,并且创建一个菜单

===================================20180308 add

5、利用向导生成菜单消息响应函数 在VS2010下

选择项目下的类向导,选择类名为”***Dlg.cpp”,在“命令”选项卡下的“对象ID(B)”中,选择各子菜单项的对应的ID,然后在“消息(S)”中双击COMMAND消息。


转载自:https://www.cnblogs.com/zerotoinfinity/p/6382356.html

//-==================20180308add

MFC对话框最小化到托盘


1、在资源中的Icon中导入一个自己喜欢的图标,ID命名为IDR_MAINFRAME,将先前的IDR_MAINFRAME的图标删除掉;

2、在自己的Dialog头文件中定义一个变量  NOTIFYICONDATA m_nid,关于该结构体的具体信息可以查阅MSDN;

3、添加消息响应函数OnInitDialog(),并在该函数中添加以下代码,这样程序一启动,就在托盘中显示出了自己应用程序的图标。

    //---------------------------托盘显示---------------------------------//

    m_nid.cbSize  = (DWORD)sizeof(NOTIFYICONDATA);

    m_nid.hWnd    = this->m_hWnd;

    m_nid.uID     = IDR_MAINFRAME;

    m_nid.uFlags  = NIF_ICON | NIF_MESSAGE | NIF_TIP ;

    m_nid.uCallbackMessage = WM_SHOWTASK;             // 自定义的消息名称

    m_nid.hIcon   = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));

    strcpy(m_nid.szTip, "服务器程序");                // 信息提示条为"服务器程序",VS2008 UNICODE编码用wcscpy_s()函数

    Shell_NotifyIcon(NIM_ADD, &m_nid);                // 在托盘区添加图标

    这时候编译,会报WM_SHOWTASK的错,因为该消息要自己定义。

4、在Dialog头文件中声明消息函数原型                                         

    LRESULT OnShowTask(WPARAM wParam, LPARAM lParam);

5、在Dialog源文件中进行消息映射

    ON_MESSAGE(WM_SHOWTASK,OnShowTask)

6、在Dialog源文件中添加自定义的消息响应代码,左键双击弹出应用程序主窗口,右键单击弹出菜单。

    LRESULT CServerDlg::OnShowTask(WPARAM wParam, LPARAM lParam)

    {

           if(wParam != IDR_MAINFRAME)

                  return 1;

           switch(lParam)

           {

           case WM_RBUTTONUP:                                        // 右键起来时弹出菜单

                  {

                    

                         LPPOINT lpoint = new tagPOINT;

                         ::GetCursorPos(lpoint);                    // 得到鼠标位置

                         CMenu menu;

                         menu.CreatePopupMenu();                    // 声明一个弹出式菜单

                         menu.AppendMenu(MF_STRING, WM_DESTROY, "关闭");

                         menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x ,lpoint->y, this);

                         HMENU hmenu = menu.Detach();

                         menu.DestroyMenu();

                         delete lpoint;

                  }

                  break;

           case WM_LBUTTONDBLCLK:                                 // 双击左键的处理

                  {

                         this->ShowWindow(SW_SHOWNORMAL);         // 显示主窗口

                  }

                  break;

           }

           return 0;

    }

7、添加OnSize消息响应函数,处理最小化时的操作。

    void CServerDlg::OnSize(UINT nType, int cx, int cy)

    {

           CDialog::OnSize(nType, cx, cy);

           // TODO: Add your message handler code here

           if(nType == SIZE_MINIMIZED)  

           {  

                  ShowWindow(SW_HIDE); // 当最小化市,隐藏主窗口              

           }  

    }

8、添加关闭窗口时的消息响应函数,将托盘中的应用程序图标删除

    BOOL CServerDlg::DestroyWindow()

    {

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

           // 在托盘区删除图标

           Shell_NotifyIcon(NIM_DELETE, &m_nid);             

           return CDialog::DestroyWindow();

    }

    经过以上的步骤,就编写出了一个简单的可以最小化到托盘的程序。该程序在一启动时,在托盘创立应用程序的图标,最小化程序时隐藏主窗口,双击托盘区的图标时,显示主窗口,右键点击托盘区窗口时,弹出菜单进行相应的操作。


后续持续更新:

MFC对话框最小化到托盘编程实现步骤 以工程为例说明过程:此程序编程环境是VS2008,在调试过程中,将字符集修改为“使用多字节字符集”(项目->属性->配置属性->字符集)。 例如新建一个MFC对话框工程Dialogtest,程序实现的功能是,修改对话框标题栏上默认的图标,在程序中改为添加的资源Icon IDI_ICON1,最小化对话框到托盘。 首先,在对话框资源属性页,选择Minimize Box为TRUE。这样可以实现对话 阅读详情

相关推荐

VC++任务栏托盘图标及右键菜单实现

Windows 95以及后来的Windows版本允许你将程序图标放入系统托盘。所谓系统托盘,通常指的是屏幕右下方显示时间,音量等图标的那个区域。托盘图标通常可以执行一些快捷操作,如窗口隐藏时通常最小化到托盘区域,用户可以单击鼠标左键显示程序窗口界面,右键单击托盘图标通常会弹出快捷菜单进行一些快捷操作。       在MFC中访问托盘图标是通过Shell_NotifyIcon函数和NOTIFY

u010561359的专栏 5762

MFC添加系统托盘图标

先在dlg.cpp中定义两个宏 #include #define WM_SYSTEMTRAY WM_USER + 1 // 托盘图标消息绑定 #define MY_BACKGROUNDER_DLG WM_USER + 2 // 后台运行按键消息 在dlg.h中添加变量 NOTIFYICONDATA m_nid; NOTIFYICONDATA结构定义:(具体解释可自行

1456

MFC程序任务栏托盘图标的实现

1.首先自定义函数 //添加任务栏托盘图标,Tray托盘 BOOL CChatRoomDlg::TrayMyIcon(BOOL bAdd)//bAdd为TRUE就添加,bAdd为FALSE就不添加。 {     BOOL bRet = FALSE;     NOTIFYICONDATA tnd;     tnd.cbSize = sizeof(NOTIFYICONDATA);

庄生晓梦迷蝴蝶 2064

用VC设计托盘图标程序

  Windows95/98/NT/2000中,任务栏的右边(托盘)常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到拥有托盘图标的软件,如金山词霸、有实时监测功能的杀毒软件等。这些软件在后台运行,通常不占用太多的屏幕资源,只在通知栏上放一个小小的标志。必要时我们可以通过用鼠标点击图标对其进行菜单操作或激活其主窗口。有时我们自己编写的程序也希望有类似的

seven407的专栏 1068

MFC 程序添加任务栏托盘

添加资源Menu,如 IDR_MENU1; 头文件添加 #define WM_TRAY_MSG WM_USER+1000 ​ CMenu m_trayPopupMenu;//菜单 afx_msg void OnShowMenu();//显示主程序 afx_msg void OnExitMenu();//退出 BOOL m_bTray; //托盘标记;初始元为FALSE BOOL SetTray(BOOL bTray); //设置托盘效果 afx_msg LRESULT ..

我的 博客 757

MFC添加托盘图标,实现点击显示/隐藏窗口,添加托盘右键菜单

如果

m0_60352504的博客 987

MFC 实现托盘图标菜单图标功能

本文深入解析MFC托盘图标右键菜单图标实现方法,详解MF_OWNERDRAW与MF_STRING的区别,并提供完整源码。

Darker的博客 1465

MFC/VC++中的程序托盘实现指南

本文还有配套的精品资源,点击获取 简介:在Windows系统中,程序托盘是一个位于任务栏右下角的区域,它显示应用程序图标并提供快捷操作。MFC是微软的C++类库,用于简化Windows应用开发,包括对托盘图标的支持。本文详细介绍了如何使用MFC/VC++在Windows应用程序中实现程序托盘,涵盖创建图标、添加到托盘、处理用户交互事件以及为图标添加右键菜单的完整步骤。通过这...

weixin_29859471的博客 1469

MFC为应用程序添加托盘(右键托盘,弹出菜单)

源代码:http://download.youkuaiyun.com/detail/nuptboyzhb/4137784 1.       导入一个托盘图标的资源(.ico)格式;资源ID为IDI_ICON1 2.       在框架程序的初始化函数中,初始化一个托盘图标的一个结构体 NOTIFYICONDATA notifyicondata;//NOTIFYICONDATA结构      n

郑海波(莫川)的优快云博客 7768

为MFC对话框添加Menu菜单

为MFC对话框增加menu菜单,源代码,

TMC5160电机驱动芯片实战:从模式选择到参数配置全解析

本文深入解析TMC5160电机驱动芯片的实战应用,涵盖三种核心工作模式的选择策略与参数配置。详细介绍了全功能运动控制、外部脉冲驱动及独立驱动模式的应用场景与配置要点,并提供了电流控制、静音优化、SPI通信及高级功能(如StallGuard2)的调优指南,帮助开发者充分发挥其高精度、低噪音性能。

weixin_29179311的博客 323

C++对话框系统托盘实现

背景需求: 1、MFC对话框最小化时,只显示系统右下角托盘图标。 2、双击托盘,对话框还原。 3、右键点击托盘,弹出“关闭”菜单,可关闭对话框。 参考:http://baike.baidu.com/view/1773959.htm。 实现步骤: 1、创建MFC对话框程序(本例程序名为TaskbarIcon),属性中设置“MinimizeBox”为true。 2

Segen_Jaa的专栏 2654

无需上下文,MCP新机制让大模型主动“提需”:节约 98% token 开销,并保持准确率基本不变!

值得注意的是,MCP 协议定义的服务器描述通常较为简洁。为了提升匹配效果,我们引入 Qwen2.5-72b-Instruct 模型,对所有服务器的原始资料(通常为 ReadMe 文档)进行总结提炼,参考其 capabilities、features、usage patterns 等要素,生成服务器的 summary 信息,作为相对详尽的描述文本用于匹配。然而,现有的 MCP 调用机制下,所有工具的描述信息都被注入大模型的系统提示词,导致了非常长的上下文开销,也为大模型的表现带来了影响,降低了模型的性能。

我爱计算机视觉 1174

MFC如何定制对话框系统菜单

背景 系统菜单是每个 Windows 程序的标准特性。通常系统菜单由 Windows 系统来管理,所以我们平时编成时很少去碰它。但是,有的时候,我们确实想定制自己的系统菜单项。这样就涉及到定制菜单的处理问题,因为 Windows 无法自动处理我们定制的系统菜单。而且,系统菜单的处理方式与常规的菜单处理是不同的。那么我们如何实现定制的系统菜单呢?相信看完本文的介绍,你会得到满意的答案。

小龙王2010 2344

告别抓包失败!保姆级配置:让Burp+Proxifier稳定抓取任意微信小程序

本文提供了一套完整的Burp+Proxifier配置方案,确保稳定抓取微信小程序数据。从环境准备、工具选型到Burp Suite深度配置和Proxifier精准设置,详细解决了证书安装、进程捕获和乱码解析等核心问题,帮助开发者告别抓包失败,提升调试效率。

weixin_28738165的博客 455

Power BI Report Server自定义登录实战:从AD切换到Form的完整流程(附GitHub源码)

本文详细介绍了如何将Power BI Report Server的登录认证从Active Directory切换到自定义Form认证的完整流程。通过环境准备、认证模块编译、配置脚本修改等步骤,帮助用户实现品牌统一的登录界面和简化外部用户访问。附有GitHub源码,适用于需要个性化登录解决方案的企业。

pz890123456的博客 209

MFC-一个很简单的程序最小化到托盘,带右键菜单带图标

MFC-一个很简单的程序最小化到托盘,带右键菜单带图标 </h1> <div class="clear"></div> <div class="postBody"> <div id="cnblogs_post_body" class="blogpost-body blogpost-body-htm...

我不是码农的博客~~~ 1243

VCL for PHP,Konopka Signature VCL Controls (Raize Components 6.2.3) for Delphi 10.4

The Raize Components suite includes a variety of interface design tools for Delphi programming language and C ++ Builder, which includes over 125 VCL controls and over 100 different tools for creating...

weixin_42137539的博客 853

MFC隐藏任务栏图标并显示到托盘

MFC隐藏任务栏图标并显示到托盘 参考链接:https://www.cnblogs.com/haoyuanyuan/archive/2013/01/25/2877138.html 在对话框头文件中定义消息ID (用于处理点击托盘图标) : #define WM_SHOWTASK WM_USER+666 对话框头文件添加成员声明: protected: //start----------------------图标显示至托盘-------------------------------- NOTIFYIC

qq_38416262的博客 1226

Leads、SDR、MQL、SQL、L2C术语概念,线索创建与清洗、线索分级模型、线索流转策略、线索的统计与分析

CRM中的“Leads”是什么?笔者在文中不仅较为全面地介绍了相关术语概念,还分析了线索的创建与清洗、线索的分级模型、线索流转策略以及线索的统计与分析。

盼盼学士 5960

从0到1打造一台机器人走起来

1)本体机械结构设计,依据人体生物学和生物力学知识,结合机器人运动时各关节扭矩需求,进行合理选用电机,比如胯部需要大扭矩,腿部惯量小等2)硬件拓扑上,分层架构的信号层和功率协同工作,高带宽,低延时,硬实时3)步态规划设计与验证环节实机回溯和部署过程:Real2Sim,Sim2Sim,Sim2Real。

weixin_43163941的博客 244

MFC下托盘图标的实现和托盘菜单

转载自:http://blog.youkuaiyun.com/longsir2008/article/details/6304130 对话框头文件XXXDlg.h: 1.添加成员变量NOTIFYICONDATA m_nid; 2.添加tray消息响应函数的声明 afx_msg LRESULT OnTrayNotify(WPARAM wParam, LPARAM lParam

收集学习过程中对自己有帮助的牛人文章 987

【服务器电源架构与关键技术发展趋势】深度解析架构、方案、玩家与未来趋势

技术维度:台达 / 光宝在高功率密度(97%+ 效率)和垂直整合上领先,大陆厂商(麦格米特 / 欧陆通)在成本控制和快速响应上更优,国际厂商(英飞凌)聚焦核心器件突破。 客户维度:台达绑定英伟达核心供应链,麦格米特 / 欧陆通兼顾国内外客户,光宝 / 中恒电气侧重云端与互联网厂商。 趋势适配:所有厂商均加速布局 800V 高压架构、液冷技术和高功率 Power Shelf,以应对 AI 服务器单柜功率从 10kW→200kW 的升级需求。

昔时扬尘处 724

windows下生成托盘图标及添加菜单

1、生成托盘图标 void AddTrayIcon() { NOTIFYICONDATA trayIcon; memset(&m_trayIcon, 0, sizeof(NOTIFYICONDATA)); trayIcon.cbSize = sizeof(NOTIFYICONDATA); trayIcon.hIcon = ::LoadIcon(GetModuleHandle(NUL...

gongxie0235的博客 1256

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mfc添加托盘图标

创建图标 //在OnInitDialog方法中调用 NOTIFYICONDATA data; data.cbSize = sizeof(NOTIFYICONDATA);//结构体的大小 data.hWnd = this->m_hWnd;//接收托盘消息的窗口句柄 this是当前dialog data.uID = IDR_MAINFRAME;//定义的托盘图标ID data.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;//设置属性,下面的三个属性是否.

lwy572039941的博客 669

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: MFC 16 进制HEX显示控件
下一篇: 流程图&头脑风暴类软件
obins_Iee
博客等级 码龄15年 217粉丝 91原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值