`

使用VC++6.0隐藏任务栏

阅读更多

使用VC++6.0隐藏任务栏

[摘要]:
隐藏任务栏本没有什么难的,获取任务栏的窗口句柄,然后设置它隐藏。但是隐藏之后,任务栏阴魂不散,死活也不肯腾出所空间。还好,最后找到了解决办法。

[正文]:
需求是:彻底隐藏任务栏,让任务栏腾出空间给窗口。

隐藏Windows任务栏,代码如下:

HWND hWnd;
hWnd = FindWindow("Shell_TrayWnd",NULL);
ShowWindow(hWnd,SW_HIDE);


运行之后任务栏如愿隐藏,但是任务栏所占据的区域空了出来,如果能让窗口把这个空出的区域占满那就更好了。我们发现任务栏的属性中有一个选项“自动隐藏任务栏",勾选之后,任务栏不仅会自动隐藏(在鼠标接近桌面最下边的时候,任务栏又会自动恢复),而且还让窗口自动扩展而占满了任务原先所在区域。自动隐藏任务栏的代码如下:

#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000a
#endif

APPBARDATA apBar;
memset(&apBar, 0, sizeof(apBar));
apBar.cbSize = sizeof(apBar);
apBar.hWnd = hWnd;
if(apBar.hWnd != NULL)
{
apBar.lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏
}


设置任务栏自动隐藏也不能完全满足我的要求,因为在鼠标接近桌面最下边的时候,任务栏又会自动恢复。这不是我想要的效果。此时,注意到如果把"设置任务栏自动隐藏"和"隐藏任务栏"优点结合起来,正好是我们想要的。代码如下:


void HideTaskBar(BOOL bHide)
{
int nCmdShow;
HWND hWnd;
LPARAM lParam;

hWnd = FindWindow("Shell_TrayWnd",NULL);
if(bHide == TRUE)
{
nCmdShow = SW_HIDE;
lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
}
else
{
nCmdShow = SW_SHOW;
lParam = ABS_ALWAYSONTOP;
}

ShowWindow(hWnd,nCmdShow);//隐藏任务栏


#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000a
#endif

APPBARDATA apBar;
memset(&apBar, 0, sizeof(apBar));
apBar.cbSize = sizeof(apBar);
apBar.hWnd = hWnd;
if(apBar.hWnd != NULL)
{
apBar.lParam = lParam;
SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏
}
}


结合之后,既让任务栏隐藏了,又可以让窗口自动扩展到全屏。

补充:
如果不加:

#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000a
#endif

直接使用ABM_SETSTATE,会出现以下错误:
error C2065: 'ABM_SETSTATE' : undeclared identifier

虽然MSDN(2001)说定义在shellapi.h中,在shellapi.h中也找不到。
在最新的MSDN中,可以找到:
ABM_SETSTATE : 0x0000000A.
Windows XP and later: Sets the state of the appbar's autohide and always-on-top attributes.

分享到:
评论

相关推荐

    VC++6.0实效编程百例

    44·屏蔽系统热键和隐藏任务拦 45·动态调整屏幕分辨率 46·获取系统硬件信息 47·编辑注册表信息 48·重启动和关闭计算机 49·获取windows版本号和运行模式 50·枚举可用字体 第六章 51·向导程序 52·系统托盘程序...

    显示或隐藏桌面窗口(VC++6.0源代码).rar

    在Windows操作系统中,桌面窗口是用户与系统交互的基础界面,包含任务栏、桌面图标以及其他正在运行的应用程序窗口。有时候,由于工作或者调试程序的需要,我们可能需要显示或隐藏桌面窗口。这个“显示或隐藏桌面...

    VC++隐藏任务栏程序

    本教程将详细介绍如何使用VC++和C++编程语言在VC6.0环境下实现隐藏任务栏的功能。 首先,我们需要了解Windows API(应用程序接口),这是Windows操作系统为开发者提供的函数库,包含了各种系统级的操作函数。在隐藏...

    VC++6.0编写的系统托盘程序

    系统托盘程序是一种在Windows操作系统任务栏右下角通知区域显示图标的应用程序。在本文中,我们将深入探讨如何使用Visual C++ 6.0来创建这样的程序,特别关注`Shell_NotifyIcon()`函数的封装以及相关库的使用。 ...

    VC++6.0 MFC教程.pdf

    ### VC++6.0 MFC教程知识点概览 #### 一、MFC概述 MFC (Microsoft Foundation Class Library) 是一套由微软提供的 C++ 类库,用于简化 Windows 应用程序的开发。它通过封装底层的 Win32 API,使得开发者能够更加...

    Visual C++6.0编译系统部分功能介绍 (2).docx

    工具栏则包含常用操作的快捷按钮,便于快速执行任务。 工作区窗口用于管理项目文件,而源代码编辑窗口是编写和修改C++代码的地方。输出窗口在编译或构建项目时显示错误信息,状态栏则提供实时操作提示。通过工具栏...

    VC让对话框程序不在任务栏中显示

    摘要:VC/C++源码,系统相关,任务栏,对话框 本例子将向大家介绍如何使基于VC++的对话框程序不在任务栏中显示,大家都知道,一般程序窗口打开的时候,在Windows的任务栏中会有显示,以方便大家的控件,不过也有时候,...

    VC++托盘小程序,把程序放在托盘处

    在Windows操作系统中,"托盘小程序"通常指的是那些在任务栏通知区域(也称为系统托盘)运行的应用程序。这些程序通常以图标的形式存在,占用空间小,方便用户快速访问或进行后台操作。本项目是使用VC++ 6.0开发的一...

    人机界面设计(托盘,皮肤,帮助)

    首先,系统托盘是Windows操作系统中一个非常实用的设计,它允许应用程序在主窗口最小化后依然保持活动状态,图标隐藏在任务栏的右下角。在VC++ 6.0中实现系统托盘功能,通常需要使用NOTIFYICONDATA结构体和Shell_...

    托盘库(VC++)trayicon。

    "trayicon"是这个领域的一个关键术语,它特指的是那些在任务栏右下角系统托盘区域显示的小图标。在给定的资源中,我们有一个名为"trayicon"的库,它被设计用于VC++6.0环境下,帮助开发者更容易地实现这类功能。 ...

    VC++实现托盘弹出消息窗口

    本示例关注的是如何使用VC++6.0来实现一个特定的功能:当程序运行在系统托盘区时,能够通过点击图标弹出消息窗口。这个功能常见于很多后台运行的软件,如即时通讯工具、音乐播放器等,它们通常会在任务栏右下角的...

    VCC++6.0开发的托盘例子

    托盘图标是Windows操作系统中一个非常实用的功能,它允许应用程序在任务栏通知区域显示一个图标,即使窗口被最小化或隐藏,用户仍然可以通过点击托盘图标与应用进行交互。这种设计模式在很多后台运行、需要常驻内存...

    桌面时钟源代码

    5. **全屏模式**:实现全屏显示可能需要改变窗口的属性,如设置窗口样式、调整大小、隐藏任务栏等。 6. **编译与调试**:在VC++6.0环境中,开发者会使用IDE进行编译、链接和调试,理解编译选项和调试技巧至关重要。...

    Virtools_SDK

    对于使用VC++6.0的开发者来说,建议安装DirectX 9.0C SDK,因为它提供了最新的功能和优化。 ### 2. 准备开发环境 - 创建一个新的文件夹,将Virtools安装目录下的`Sdk`文件夹中的`Samples.dsw`和`StandalonePlayer`...

    自动删除文件

    标签“最小化到托盘”意味着这个程序设计有将窗口最小化到任务栏通知区域(通常称为“系统托盘”)的能力。这是为了方便用户在不使用程序时将其隐藏,同时又能在需要时快速访问。当程序最小化到托盘后,它仍然在后台...

    U盘神偷注册版

    2. **隐藏运行**:为了不被用户察觉,软件可能有隐藏运行模式,避免在任务栏或系统托盘中显示图标,增加了其隐蔽性。 3. **设置规则**:用户可能可以设置复制规则,例如只复制特定类型的文件,或者在特定时间执行...

    用VC++实现bmp位图打开和显示.doc

    - 删除不需要的功能选项(如隐藏工具栏和打印预览),其他设置保持默认即可。 - 完成项目创建后,编译并运行程序以确认基础框架是否正常工作。 2. **用户界面设计** - 在资源视图(Resource View)中找到菜单(Menu...

    vc++ 应用源码包_1

    VC++6.0 控制摄像头 一个视频捕捉类对摄像头的操作。 VC+++暴风影音(Media+Player+Classic)源码 知道的人不多,但提起国内的暴风影音,我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我...

    VC++实现bmp位图打开和显示.

    - 打开VC++6.0,通过“文件”>“新建”>“项目”,选择“MFC App Wizard [exe]”。 - 输入项目名称(如“Showpicture”),选择基于单文档的应用模式。 - 在“MFC App Wizard”配置过程中,删除“隐藏工具栏”和...

Global site tag (gtag.js) - Google Analytics