首页
学习
活动
专区
工具
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
  • visual C++ 项目和解决方案的区别

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

    1.4K30

    WPF 托盘显示 NotifyIcon WPF

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

    7.1K31

    客户端程序开发漫谈

    本文梳理一下客户端常见技术方案,以后客户端开发选型提供技术储备。 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

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

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

    1K40

    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.8K10

    HyperDock for Mac(优化工具)

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

    82630

    c++DLL编程详解

    MFC动态库:不采用MFC类库结构,其导出函数标准的C接口,能被非MFCMFC编写的应用程序所调用; 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

    MFC入门教程(深入浅出MFC)

    CAboutDlg是应用程序的“关于”对话框类,CAdditionApp是由CWinApp派生的类,CAdditionDlg是主对话框类,主对话框也就是此应用程序运行后显示的主要界面。...Resource View视图中可以看到工程Addition的资源树,展开Addition.rc,下面有四个子项:Dialog(对话框)、Icon(图标)、String Table(字符串表)和Version...大家打开Addition.cpp文件,可以看到CAdditionApp类有个InitInstance()函数,MFC应用程序框架分析中提到过此函数,不过那是单文档应用程序App类中的,函数体不太相同,...3.将上一讲中添加的模态对话框显示代码注释或删除掉,添加非模态对话框的创建和显示代码。VC++中注释单行代码使用“//”,注释多行代码可以需注释的代码开始处添加“/*”,结束处添加“*/”。...另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将《VC++/MFC编程入门》改为《VS2010/MFC编程入门》。

    4.3K30

    MFC中句柄、指针、ID之间的关联

    MFC中句柄、指针、ID之间的关联 win32直接操作的是句柄HANDLE。...lpWindowName) 3.HWND WindowFromPoint(POINT& Point)//获得当前鼠标光标位置的窗体HWND FindWindow和FindWindowEx 具体见此处 VC...m_hObject (2)CGdiObject::GetSafeHandle (3)能够使用FromHandle函数来通过句柄得到其想要的指针 4.窗体、控件的指针和句柄的相互转化 (1)指针转化为句柄 MFC...应用程序中首先要获得窗体的指针,然后将其转化为句柄 CWnd* pWnd; HANDLE hWnd = pWnd->GetSafeHwnd(); (2)句柄转化为指针 MFC应用程序中首先获得对话框控件的句柄...FromHandle(hWnd); 获取主窗体句柄: CWnd *wnd = AfxGetMainWnd(); HWND hwnd = wnd->GetSafeHwnd(); 设置控件窗体焦点

    1.7K40

    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:因为随机森林的包randomForestR-3.6.2版本是没有的,需要在4.0以上的版本才有这个package...3、总结 rm -rf 命令敲下Enter键之前确认一下命令是否正确,真的是一敲回到解放前 对于适合数据分析类的编程语言或者需要依赖到这些环境的服务/软件亦或者是使用的框架是使用这些语言编写的,尽量安装较新的对应的环境

    1.1K30

    WPF 程序添加 Windows 跳转列表的支持

    当时应用程序要想用上这样的功能需要调用 shell 提供的一些 API。 然而在 WPF 程序中使用 Windows 跳转列表功能非常简单, XAML 里面就能完成。...,这样不至于显示一个默认的应用图标。...在这段程序中,我们添加了两个“任务”,跳转列表中有一个“任务”分类。因为我的系统是英文,所以显示的是“Task”。...第一个任务只设了标题和鼠标移上去的提示信息,于是显示图标就是应用本身的图标,点击之后也是启动任务自己。...这两种不同的列表项对应的类型分别是: JumpTask JumpPath JumpTask 可以理解这就是一个应用程序的快捷方式,可以指定应用程序的路径(ApplicationPath)、工作目录(WorkingDirectory

    1.2K20

    mfc控件工具栏怎么打开_Qt界面库

    亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v33.0正式发布!...BCGPDockingControlBar:改进的停靠面板图标支持,您可以CMainFrame 类构造函数中指定一个图标列表(调用新方法 SetDockingBarsIconList),并在新方法 CBCGPDockingControlBar...替代使用SetIcon 方法将图标分配给面板。当您移动窗格以使用不同的DPI显示时,图标将自动重新缩放。 2....如果此成员 TRUE,则 m_sizeTotal、m_nPadding 和 m_nCentralGroupOffset 将自动缩放。 仪表盘控件 1....当主应用程序窗口移动到以其他比例 (DPI) 显示时,框架会调用此方法。 3. 信息框:改进了一些视觉主题中的默认颜色(见截图)。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    1.2K40

    【愚公系列】2021年12月 Python教学课程 29-MVC设计模式

    文章目录 一、MVC设计模式 二、MTV 设计模式: ---- 一、MVC设计模式 最早由 Trygve Teenskaug 1978 年提出,上世纪 80 年代是程序语言 Smalltalk 的一种内部架构...MVC 把 Web 框架分为 3 个基础部分: 模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是用于处理应用程序的数据逻辑的部分,Model 只提供功能性的接口,通过这些接口可以获取...视图(View):负责数据的显示和呈现,是对用户的直接输出。 控制器(Controller):负责从用户端收集用户的输入,可以看成提供 View 的反向功能。...这三个部分互相独立,但又相互联系,使得改进和升级界面及用户交互流程, Web开发过程任务分配时,不需要重写业务逻辑及数据访问代码。...MVC Python 之外的语言中也有广泛应用,例如 VC++MFC,Java 的 Structs 及C#的.NET 开发框架,都非常有名。

    26910

    CC++程序员 面试经历总结

    4、MFC中CSocket类能不能用在多个线程中,请说明原因。 5、IOCP服务器中的应用,其特点和优势是什么,主要解决了什么问题。 6、存储过程是什么?ADO和ODBC中存储过程如何使用?...四、VC++程序员面试  图像处理 1、QT和C++什么关系,你认为QT和MFC相比有什么异同点,各自的优势什么? 2、谈谈VC++中ADO连接数据库的几种方式? 3、QT采用的编译器是什么?...五、一家建筑/工程/结构类的设计公司,应聘职位MFC软件开发,笔试题为C++。 1、说明typedef int (*pFun)(int,int *)中pFun的含义,这种类型的用途主要是什么?...pFun被定义一个指向参数列表in,int*,返回值int的函数指针,这种类型即函数指针可以用于定义一种指针类型,指向某种系列类型的函数,通常用于回调函数。 2、以下C++代码段会输出什么?...尤其为了应聘VC++工程师职位,必须好好看看如下这几本书: 1、《MFC Windows应用程序设计》(第2版) 2、《VC++深入详解》孙鑫编著 3、《深入浅出MFC》第二版 侯杰著 4、《网络编程实用教程

    2.3K31
    领券