首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在TaskBar上将应用程序显示为单个图标(VC++/MFC)

在TaskBar上将应用程序显示为单个图标是指在Windows操作系统的任务栏上,将应用程序的窗口合并为一个单独的图标,以节省任务栏空间并提高用户界面的整洁度。

这个功能可以通过使用VC++/MFC编程来实现。下面是实现该功能的步骤:

  1. 创建一个MFC应用程序项目。
  2. 在主窗口类的头文件中添加以下代码,以启用TaskBar图标功能:
代码语言:txt
复制
class CMyApp : public CWinApp
{
public:
    CMyApp();
    virtual BOOL InitInstance();
    DECLARE_MESSAGE_MAP()
};

class CMainFrame : public CFrameWnd
{
public:
    CMainFrame();
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    afx_msg void OnClose();
    afx_msg void OnShowTaskBarIcon(WPARAM wParam, LPARAM lParam);
    DECLARE_MESSAGE_MAP()

private:
    NOTIFYICONDATA m_nid;
};
  1. 在主窗口类的源文件中添加以下代码,以实现TaskBar图标的相关功能:
代码语言:txt
复制
CMyApp::CMyApp()
{
}

BOOL CMyApp::InitInstance()
{
    // ...

    // 注册消息
    RegisterWindowMessage(L"ShowTaskBarIcon");

    // ...

    return TRUE;
}

CMainFrame::CMainFrame()
{
    // 初始化NOTIFYICONDATA结构体
    memset(&m_nid, 0, sizeof(m_nid));
    m_nid.cbSize = sizeof(m_nid);
    m_nid.hWnd = m_hWnd;
    m_nid.uID = IDR_MAINFRAME;
    m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
    m_nid.uCallbackMessage = RegisterWindowMessage(L"ShowTaskBarIcon");
    m_nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    wcscpy_s(m_nid.szTip, L"应用程序名称");
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    // ...

    // 设置窗口样式为弹出式窗口
    cs.dwExStyle |= WS_EX_TOOLWINDOW;

    // ...

    return CFrameWnd::PreCreateWindow(cs);
}

void CMainFrame::OnClose()
{
    // ...

    // 隐藏TaskBar图标
    Shell_NotifyIcon(NIM_DELETE, &m_nid);

    // ...

    CFrameWnd::OnClose();
}

void CMainFrame::OnShowTaskBarIcon(WPARAM wParam, LPARAM lParam)
{
    // 根据消息参数显示或隐藏TaskBar图标
    if (wParam)
    {
        Shell_NotifyIcon(NIM_ADD, &m_nid);
    }
    else
    {
        Shell_NotifyIcon(NIM_DELETE, &m_nid);
    }
}

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    // ...

    ON_MESSAGE(RegisterWindowMessage(L"ShowTaskBarIcon"), OnShowTaskBarIcon)
END_MESSAGE_MAP()
  1. 在主窗口类的资源文件中,添加一个ID为IDR_MAINFRAME的图标资源。
  2. 在主窗口类的消息映射中,添加以下代码,以处理显示或隐藏TaskBar图标的消息:
代码语言:txt
复制
ON_COMMAND(ID_SHOW_TASKBAR_ICON, OnShowTaskBarIcon)
  1. 在应用程序的菜单资源中,添加一个ID为ID_SHOW_TASKBAR_ICON的菜单项,用于触发显示或隐藏TaskBar图标的功能。

至此,通过以上步骤,就可以在TaskBar上将应用程序显示为单个图标了。用户可以通过点击图标来显示或隐藏应用程序的窗口。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云容器服务(TKE)。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求快速创建、部署和扩展云服务器实例。了解更多信息,请访问腾讯云云服务器
  • 腾讯云容器服务(TKE):提供高度可扩展的容器化应用管理平台,支持快速部署、管理和扩展容器化应用。了解更多信息,请访问腾讯云容器服务

请注意,以上答案仅供参考,具体实现方式可能因应用程序的需求和环境而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WINDOWS核心编程--Windows程序内部运行机制

WinMain 函数,记事本程序在得到这个文件的全路径名后,就在窗口中显示该文件的内容。...要在 VC++ 开发环境中向应用程序传递参数,可以单击菜单 【 Project 】→【 Settings 】,选择“ Debug ” 选项卡,在“ Program arguments ”编辑框中输入你想传递给应用程序的参数...VC++开发中,自定义菜单图标被命名为.rc----------资源脚本 VC++中,资源是通过标识符ID来识别的 ID是在resource.h的宏 他的lpIconname是一个指针,指向资源 第七个...Instead, use code like this: 在 hWnd 是无效参数的情况下返回值为 -1的可能性(例如引用已经被销毁的窗口)意味着这样的代码可能导致致命的应用程序错误。...此参数可取下列值之一: windows应用程序的消息处理机制 windows消息机制详解 编写窗口过程函数 匈牙利命名法 举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为

1.5K50

什么是QT?「建议收藏」

为学习QT首先必须搞明白的一个问题是,什么是QT,查找资料,对于QT有如下的认识: 1....Qt是一种以c++为基础的开发语言,可以认为是C++的升级版 4. Qt是C++部件工具箱。...mfc是什么   1、mfc是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数,并且包含一个应用程序框架,以减少应用程序开发人员工作量。   ...2、vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它你可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。   3、vc++其中一个编译器内核就是gcc。...MFC除了是一个类库以外,还是一个框架,你应该试过,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。

1.2K30
  • WPF 托盘显示 NotifyIcon WPF

    因为托盘是程序的托盘,不是窗口的,所以推荐代码是写在 App.xaml.cs 里面 先创建一个托盘的界面,界面在 App.xaml 创建 托盘是需要图标的,可以从 Iconfont-阿里巴巴矢量图标库...> 上面代码需要替换 Class="HouneaLeabeltezairKayballjachall.App" 为自己的项目 打开 App.xaml.cs 获取资源,资源只有在获取的时候才会创建...TaskbarIcon _taskbar; 运行代码可以看到图片显示图标,下面的图片是我的图标 ?...鼠标移动在托盘上面显示文字,可以在 TaskbarIcon 添加代码 Taskbar" ToolTipText...在 App.xaml 去掉默认打开 MainWindow 需要找到下面的代码 StartupUri="MainWindow.xaml" 现在尝试不让默认打开 MainWindow 运行软件,可以看到托盘显示图标

    7.3K31

    visual C++ 项目和解决方案的区别

    项目文件夹中的Readme.txt文件包含已经为该项目创建的所有文件的内容摘要。....sln文件和.suo文件为MFC自动生成的解决方案文件,它包含当前解决方案中的工程信息,存储解决方案的设置。...4.资源文件 一般我们使用MFC生成窗口程序都会有对话框、图标、菜单等资源,应用程序向导会生成资源相关文件:res目录、HelloWorld.rc文件和Resource.h文件。...res目录:工程文件夹下的res目录中含有应用程序默认图标、工具栏使用图标等图标文件。...HelloWorld.rc:包含默认菜单定义、字符串表和加速键表,指定了默认的About对话框和应用程序默认图标文件等。 Resource.h:含有各种资源的ID定义。

    1.5K30

    MFCC++学习系列之简单记录8——消息映射

    菜单编程文章链接:https://cloud.tencent.com/developer/article/2467679文章简介:本文详细介绍了VC++6.0入门——第六讲 菜单编程,对于我这种刚接触VC...前言每天学习一点MFC的小知识!消息映射机制说起来很高大上,其实就是前端界面控件和后台代码命名的绑定。当前端控件执行某些操作时,需要把这个事件或消息映射到MFC的成员类上。...ON_WM_QUERYDRAGICON() 映射查询拖动图标的消息到 OnQueryDragIcon 函数。ON_BN_CLICKED与ON_NOTIFY就是我们自己定义的事件处理程序的映射。...与WPF对比在WPF中,.xaml文件中定义控件名称,并在后面直接可以添加事件或双击控件添加。这时,界面前端的代码中会具体显示事件函数名称,而后端会主动生成对应的函数。...总结本文介绍了MFC的消息映射,并举例说明,同时也与WPF进行了对比。

    14800

    客户端程序开发漫谈

    本文梳理一下客户端常见技术方案,为以后客户端开发选型提供技术储备。 1) MFC方案。    ...MFC做客户端是一个很古老的技术,那是上个世纪流行的技术,记得大学老师教学用的VC6.0(VC98)开发计算器的案例还记忆犹新。但由于历史和易用性原因,MFC产品还是在存在。...为案例,以至于写测试程序和测试工具都是MFC去快速成型(给自己用,有个UI就够了,虽然界面很丑)。...一方面开发效率低,另一方面界面风格太素,在正式的商业软件很少会用MFC了。          ...MFC方案效果 2)VC++方案      很多软件考虑界面不太复杂且对性能有追求,采用VC++开发,早期很多软件开发为了灵活,自定义界面风格,都采用该方案,至今很多大厂很多应用还是如此,但如果界面复杂

    1.6K20

    锁定屏幕相关知识「建议收藏」

    当 Taskbar 需要重画某个按钮; 3. 当系统需要显示关于 Taskbar 的一个程序的最小化形式; 4. 当目前的键盘布局状态改变; 5....因此,在 Win32 环境下要想在多个进程中共享数据,就必须进行必要的设置。亦即把这些需要共享的数据分离出来,放置在一个独立的数据段里,并把该段的属性设置为共享。...在 VC6 中有三种形式的 MFC DLL (在该 DLL 中可以使用和继承已有的 MFC 类 ) 可供选择,即 Regular statically linked to MFC DLL (标准静态链接...下面说说在 VC6 中全局共享数据的实现   在主文件中,用 #pragma data_seg 建立一个新的数据段并定义共享数据,其具体格式为: #pragma data_seg.../mouse/debug 目录中; (10) 先运行几个可执行程序,然后运行 Mouse.exe 程序,把鼠标在不同窗口中移动,在 Mouse.exe 程序窗口中的编辑框内将显示出鼠标所在的应用程序主窗口的标题

    1.2K11

    VC++编写ActiveX控件

    以前做电子产品只是为了实现功能,现在发现这远远不够,按照目前的时代潮流,一个系统除了要功能完备化,还要信息化 ,信息化就涉及到数据采集、存储、分析和显示。...2.自VC++生成的模板基础上自定义功能      所有的自定义功能基本上都来自于“MFC ClassWizard”类向导对话框。    ...(“快捷键Ctrl+W”或者“查看”->“建立类向导…”)      在“Automation”选项卡中为控件添加方法和属性。      在“ActiveX Events”选项卡中为控件添加事件。...总述:通过“类向导”工具,为控件添加属性、方法和事件后,VC++会自动在相应的文件里面生成代码,比如内部方法属性和外部方法属性之间的映射,消息的建立,消息的声明,等等。...3.2.1 通过VC++调用      利用VC6.0建立一个MFC的基本对话框应用程序      在完成程序向导后。执行下面的步骤: 1.

    3.5K30

    VS2015中用C++创建MFC DLL动态库「建议收藏」

    1 打开VS2015,新建MFC dll动态库,如下图所示: 2 点击下一步,在应用程序设置里选择带静态链接的MFC规则,这个主要为了以静态库的形式生成MFC dll,便于动态库可以移植到其它编程语言或者其它计算机系统里调用...8 在MFC_dll.def 中定义函数的显示导出: 代码如下: add_func @1 9 然后编译工程,即可成功生成mfc dll的动态库 10 生成了动态库,那么如何把这个动态库提供给别人用...在工程的源程序所在目录文件夹中找到我们在程序中新建的头文件mfcAPI.h,复制出来 在Release目录下找到生成的动态库文件MFC_dll.dll文件和MFC_dll.lib文件,复制出来...我就以在C++的控制台去调用这个动态库。因为我们的mfc dll动态库是在Release模式下生成的,因此控制台也必须为Release模式。 12 接下里配置mfc dll这个库的导入。...导入一个C++动态库相信大家都清楚了吧,就跟C++导入任何一个动态库的方法一样,在VC++目录配置包含目录以及库目录,在链接器输入里配置动态库里的MFC_dll.lib文件。

    1.9K10

    VC++6.0单文件版及安装版,希望能帮助到需要的童鞋!

    嗯大部分都是学生,号主我也是从学生时代过来的,在大学期间相信大家都有学习一门叫做C语言的课程,而这门课程的考核就需要用到的vc++6.0,同样的,国家计算机二级考试也需要用到这个。...MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。...MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间...因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。【搜狗百科】 ?...注意事项: windows7/vista下面的兼容问题: 如果运行的时候有兼容问题的提示,选中左下角的“不再显示此消息”,然后点“运行程序”按钮 对于单文件版的话,大家浏览器搜索下载的一般都是,比如搜狗浏览器

    1K40

    dotnet 麒麟 Kylin 的 X11 应用开发记录

    本文记录我在麒麟 Kylin 的 X11 应用开发过程的经验 系统版本信息 本文面向的麒麟系统版本信息如下: $ cat /etc/os-release NAME="Kylin" VERSION="银河麒麟桌面操作系统...VERSION_CODENAME=kylin UBUNTU_CODENAME=kylin PROJECT_CODENAME=V10SP1-General-Edu KYLIN_RELEASE_ID="2403" 系统为从麒麟拿到的系统...如无特殊说明,本文均采用此系统版本 读取麒麟系统的各项版本信息 读取麒麟系统的各项版本信息 图标在任务栏上 不能在 MapWindow 之后,通过发送 ClientMessage 消息的方式,通过 _...NET_WM_STATE_SKIP_TASKBAR 设置应用不在任务栏显示图标 必须要在 MapWindow 之前完成 _NET_WM_STATE_SKIP_TASKBAR 的设置。...由于在窗口 Map 之前调用,不能利用桌面管理器辅助设置,需要通过 XChangeProperty 进行设置 在麒麟系统让图标不在任务栏上显示的方法如下 var _NET_WM_STATE_SKIP_TASKBAR

    12310

    游戏编程之二 windows编程基础

    控制图标 控制图标是每个窗口左上方的小图片,每个应用程序都使用它。在控制图标上单击鼠标键会使Windows显示系统菜单。 系统菜单 当用鼠标单击控制图标时就打开了控制菜单。...在用C语言开发撕于的基于传统的函数调用方式的应用程序中,一些窗口为在Windows应用程序初始化的进修注册。你的应用程序可以注册属于自己的窗口类。...Microsoft认为这一点是MFC区别于其它类库的一个特征。 MFC小组还把基础类库设计为是允许以混合方式编程的。这就是说,在同一个源文件里,既可以使用类也可以使用传统的函数调用。...按Microsoft的说法,这些笨重的类企图生成又大又慢的应用程序。MFC库提供了合理的抽象,保证代码很小。 开发小组将原始的MFC库设计为动态的而不是静态的。...控制图标 控制图标是每个窗口左上方的小图片,每个应用程序都使用它。在控制图标上单击鼠标键会使Windows显示系统菜单。 系统菜单 当用鼠标单击控制图标时就打开了控制菜单。

    7110

    将 WPF 窗口嵌入到 MFC 窗口中

    MFC中调用WPF教程_system::windows::interop;-CSDN博客 MFC中调用WPF教程 | Microsoft Learn Step1 当前 MFC 项目修改 为当前 MFC...(显示到屏幕外,避免在屏幕中间闪现一下) // 才能拿到有效的窗口句柄 wpfWindow->Top = -100000; wpfWindow->Show(); WindowInteropHelper...MFC 代码中调用 先获取 MFC 窗口的句柄,然后调用 ShowWPFWindow 方法,显示独立的 WPF 弹窗 #include "CHostWPFWnd.h"#include <Windows.h...中添加对中间层 C++/CLI 的引用 与 《C++ 调用 C# - C++/CLI 方案》 中提到的一样,需要如下步骤: 项目->属性->配置属性->VC++ 目录-> 在 “包含目录” 里添加头文件...HostWPFNative.h 所在的目录 项目->属性->配置属性->VC++ 目录-> 在 “库目录” 里添加 ViewBridge.lib 所在的目录 项目->属性->配置属性->链接器

    15010

    HyperDock for Mac(优化工具)

    而且Dock优化软件还有一个特色便是对Dock的强大管理哪里能力,只要将光标移动到Dock上的图标停留一会,如果该应用有在某个桌面有已经打开的窗口便会显示出来。...窗口预览功能: HyperDock 窗口预览功能更进一步的将Taskbar功能优化。HyperDock 窗口预览功能可以一次性显示相同应用程序所打开的窗口。...同时,在鼠标滑到预览窗口时,当前应用窗口会自动前置。这个和Windows 7 的Taskbar 功能保持一致。你还可以在窗口预览中直接关闭应用程序窗口。...HyperDock 窗口自动排列功能可以在 Mac OS X 下实现将当前窗口边缘最大化功能。...如果用户启用 Space 模式,只需把鼠标移到 Dock 正在运行的程序上,即可显示该应用程序属于第几个 Space。

    84030

    c++DLL编程详解

    非MFC动态库:不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用; MFC规则DLL :包含一个继承自CWinApp的类,但其无消息循环 MFC扩展DLL:采用MFC...的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。...在VC++中新建一个Win32 Dynamic-Link Library工程dllTest。注意不要选择MFC AppWizard(dll)。...程序员在建立一个DLL文件时,连接器会自动为其生成一个对应的.lib文件,该文件包含了DLL 导出函数的符号名及序号(并不含有实际的代码)。在应用程序里,.lib文件将作为DLL的替代文件参与编译。...若要导出某全局变量,我们需要在.def文件的EXPORTS后添加: 变量名 CONSTANT   //过时的方法 变量名 DATA        //VC++提示的新方法 在主函数中引用DLL中定义的全局变量

    2.3K60

    VC++6.0入门——第六讲 菜单编程

    大多数 Windows应用程序都提供了菜单,作为用户与应用程序之间交互的一种途径。本章主要讲解与菜单相关的编程知识。...在VC++集成开发环境中,单击左边窗格中的Resource View选项卡,可以看到Menu项下有一个名为IDR_MAINFRAME的菜单资源,它就是刚才我们在Menu应用程序界面中所看到的菜单。...这是MFC AppWizard为Menu这个单文档程序自动创建的一个主菜单。双击这个菜单资源名称,即可在VC++开发界面的右边窗格中打开菜单编辑器。如图所示。...在MFC中,通过菜单项的标识(D)来区分不同的命令消息:在SDK中,通过消息的 wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息。...然后在【显示】菜单项上用单击鼠标右键,从出现的快捷菜单中选择【Class Wizard..】命令,这时会出现如图所示的对话框。该对话框询问是否为DR_MENU1这个资源创建一个新类或者选择一个已有类。

    10630

    游戏编程之三 DirectX SDK简介

    Microsoft认为这一点是MFC区别于其它类库的一个特征。 MFC小组还把基础类库设计为是允许以混合方式编程的。这就是说,在同一个源文件里,既可以使用类也可以使用传统的函数调用。...按Microsoft的说法,这些笨重的类企图生成又大又慢的应用程序。MFC库提供了合理的抽象,保证代码很小。 开发小组将原始的MFC库设计为动态的而不是静态的。...CObject是在开发Windows应用程序时大量使用的一个基类。在MFC/INCLUDE子目录下提供的MFC库头文件包括了许多类定义信息。...控制图标 控制图标是每个窗口左上方的小图片,每个应用程序都使用它。在控制图标上单击鼠标键会使Windows显示系统菜单。 系统菜单 当用鼠标单击控制图标时就打开了控制菜单。...最小化图标 每个Windows 95或Windows NT应用程序都在窗口的右上角显示三个图标。最左边的图标是一段短下划线,这就是最小化图标。它可以使用程序被最小化。

    16100

    Git Bash Here和RStudio软件的问题解决

    就出现了上述问题,如下图所示: 解决方法 win+R键弹出运行窗口,输入以下命令: %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar...在弹出的TaskBar文件夹中,找到图标显示异常的快捷方式,右键找到其文件位置的主程序图标,并将该程序的快捷方式复制到TaskBar文件夹 重新运行该程序,若未恢复图标,在任务栏上右键点击【固定到任务栏...】再取消固定,可以发现图标显示正常 Note:按照以上步骤完成之后,将Git Bash从任务栏取消固定,再重新打开就不会出现图标为白的情况了,但是如果没有将Git Bash从任务栏取消固定,该方法还是没有生效的...重启之后,将Git Bash固定到任务栏再打开就正常了 2、RStudio软件 Note:因为随机森林的包randomForest在R-3.6.2版本是没有的,需要在4.0以上的版本才有这个package...3、总结 rm -rf 命令在敲下Enter键之前确认一下命令是否正确,真的是一敲回到解放前 对于适合数据分析类的编程语言或者需要依赖到这些环境的服务/软件亦或者是使用的框架是使用这些语言编写的,尽量安装较新的对应的环境

    1.1K30
    领券