您的位置:首页 > 其它

Windows7 任务栏功能的开发

2009-10-02 00:47 281 查看
此篇文章为原创,禁止转载
此篇文章仅限于C++,托管代码开发请参考Windows API Code Pack for the Microsoft .NET Framework。
本文参考至: MSDN dd942846

我的上一篇文章讨论了如何针对Vista的窗体透明进行编程开发,今天来讨论下Windows7的特色——任务栏开发。

Windows7为窗口增加了一个属性:application ID(应用程序ID)。这个ID可以是任意128个字符,推荐包括公司名,产品名和应用程序名。拥有相同应用程序ID的窗口将会被归类到同一个任务栏按钮上。

为进程设置应用程序ID需要调用Win32 API SetCurrentProcessExplicitAppUserModelID,它包含在shell32.dll中。为窗口设置应用程序ID则需要调用SHGetPropertyStoreForWindow 函数并且运用IPropertyStore接口,如下:
PROPVARIANT pv;
InitPropVariantFromString(L"MyAppID", &pv);

IPropertyStore* pps;
VERIFY(SHGetPropertyStoreForWindow(hwnd, IID_PPV_ARGS(&pps)));
VERIFY(pps->SetValue(PKEY_AppUserModel_ID, pv));
VERIFY(pps->Commit());

这是设置应用程序ID的代码。

我们可以通过注册任务栏按钮创建的窗口消息来得到相关消息通知:
uint wmTBC = RegisterWindowMessage(_T("TaskbarButtonCreated"));
这样在任务栏按钮创建后你的窗口过程会收到wmTBC的消息。这个消息收到以后可以使用COM的接口来管理任务栏的相关特性。
创建ITaskbarList3接口:
ITaskbarList3* ptl;
VERIFY(CoCreateInstance(
CLSID_TaskbarList, NULL, CLSCTX_ALL,
IID_ITaskbarList3, (void**)&ptl));

有了ITaskbarList3接口我们可以:
1、通过ITaskbarList3::SetOverlayIcon方法设置任务栏图标与关联提示。
2、通过ITaskbarList3::SetProgressState方法设置任务栏表现进度条的状态。与ITaskbarList3::SetProgressValue方法设置任务栏进度条的进度。

更重要的功能是Thumbnail(微软将鼠标悬浮在任务栏按钮后所弹出的窗口缩微图上的工具栏成为Thumbnail,可参考Windows Media Player播放时),这个功能可以使用户不切换到你的窗口即可以调用你程序内的功能。

通过ITaskbarList3::ThumbBarAddButtons 与ITaskbarList3::ThumbBarUpdateButtons俩个方法来管理这个“小工具条”上的按钮,大家应该从字面上能理解他们的功能。
更详细的信息请参考:Windows 7 Taskbar: Thumbnail Toolbars。

最后一个特色是Jump List,一个当鼠标悬浮在任务栏按钮上时弹出的系统菜单附加项列表。可以参考Windows Live Messenger的Jump List。

如果你的应用程序时一个处理文件的程序,想要在这个列表中出现你常用的文件历史记录,需要以下两个步骤:
1、在注册表注册了自己的文件类型与文件关联。
2、使用公共文件对话框保存、打开文件。

有一点要提一下,你的文档处理应用程序应该知道用户通过右击这个Jump List上面的条目选择删除所去掉的历史列表,这样应用程序内才能和Jump List同步。下面代码用来获取这些删除后的列表。

ICustomDestinationList* cdl;
VERIFY(CoCreateInstance(CLSID_DestinationList, ..., IID_ICustomDestinationList, (void**)cdl));

IObjectArray* removedItems;
cdl->BeginList(&maxSlots, IID_IObjectArray, (void**)removedItems);
//…Iterate removedItems and make decisions
removedItems->Release();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐