Shell 的 ITaskbarList 接口在 VC6.0 中没有定义,下面给出它的定义:
注意和 Lv0 兄的定义有点不同,得到了定义,就可以用它控制 Taskbar 了,下面是去掉窗口的 Taskbar 图标的方法,其他以此类推:
注意,这段代码必须在窗口已经建立好,TaskBar 上已出现图标后调用,不然 hWnd 在 TaskBar 上还不拥有图标,DeleteTab 不起作用。
另外的去掉图标的方法还有:
使用 WS_EX_TOOLWINDOW 标志创建窗口,或者在 OnCreate 中调用 ModifyStyleEx(0, WS_EX_TOOLWINDOW);
也可以去掉图标。
#include <obj .h>#include <shlobj.h>DECLARE_INTERFACE_(ITaskbarList, IUnknown) { STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(HrInit)(void) PURE; STDMETHOD(AddTab)(HWND) PURE; STDMETHOD(DeleteTab)(HWND) PURE; STDMETHOD(ActivateTab)(HWND) PURE; STDMETHOD(SetActiveAlt)(HWND) PURE;};typedef ITaskbarList *LPTASKBARLIST;注意和 Lv0 兄的定义有点不同,得到了定义,就可以用它控制 Taskbar 了,下面是去掉窗口的 Taskbar 图标的方法,其他以此类推:
LPTASKBARLIST pTaskbarList = NULL;if(SUCCEEDED( ::CoInitialize(NULL) )){ if(SUCCEEDED( ::CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList, (void **)&pTaskbarList) )) { if(SUCCEEDED(pTaskbarList->HrInit())) { CWnd* pMainWnd = AfxGetMainWnd(); VERIFY( SUCCEEDED( pTaskbarList->DeleteTab( pMainWnd->GetSafeHwnd() ) ) ); } pTaskbarList->Release(); } ::CoUninitialize();}注意,这段代码必须在窗口已经建立好,TaskBar 上已出现图标后调用,不然 hWnd 在 TaskBar 上还不拥有图标,DeleteTab 不起作用。
另外的去掉图标的方法还有:
使用 WS_EX_TOOLWINDOW 标志创建窗口,或者在 OnCreate 中调用 ModifyStyleEx(0, WS_EX_TOOLWINDOW);
也可以去掉图标。
继续阅读与本文标签相同的文章
上一篇 :
模拟信号量及 PV 原语的实现
下一篇 :
抓取 Direct3D 图像到 GDI 位图
-
Disruptor 全解析(1):Ring Buffer 有什么特别?
2026-06-02栏目: 教程
-
从一个 JDK6 BUG 看 JAVA 数组创建
2026-06-02栏目: 教程
-
Beanstalkd 介绍
2026-06-02栏目: 教程
-
Sun 微博 Slynkr 部署记录
2026-06-02栏目: 教程
-
取得 WinNT/2000 下的用户名
2026-06-02栏目: 教程
