`

使用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++隐藏任务栏程序

    一个基于VC6.0的C++程序。实现隐藏任务栏功能

    vc++ 应用源码包_3

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

    vc++ 应用源码包_1

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

    将对话框程序放到通知区VC源代码

    并隐藏对话框,以及隐藏任务栏的程序对话空可以在相应后显示出来主要运用SetWindowPos隐藏对话框ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW)隐藏任务栏具体请看代码vc++6.0 2003下编译通过我的qq:24266683 ...

    vc++ 应用源码包_2

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

    vc++ 应用源码包_5

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

    vc++ 应用源码包_6

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

    C++程序设计技巧

    C++ BUILDER让任务栏图标动起来 拨号上网IP地址的检知 在C++ Builder中使用ActiveX控件显示Flash动画 用VC++6.0编写Proxy服务器 注册表的应用与事例(上) 注册表的应用与事例(下) C++Builder4.0实现在线...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    VC++ 专家指导.doc

    (68) 如何检索原先的Task Manager应用程序使用的任务列表 61 (70) 在哪儿创建临文件 63 (71) 我怎样才能建立一个等待光标? 64 (73) 如何访问桌面窗口 65 (74) 什么是COLORREF? 我该怎样用它? 66 (75) ...

    VC6风格界面

    ...................\如何隐藏显示在任务栏中的对话框程序.doc ...................\实现带阴影弹出的窗口.doc ...................\实现真正的Windows屏幕保护程序.doc ...................\对CXPStyleButtonST...

Global site tag (gtag.js) - Google Analytics