任务栏的一系列操作

来源:互联网 发布:传奇霸业炼体数据表格 编辑:程序博客网 时间:2024/04/29 09:30
头文件内添加成员变量ITaskbarList3* pTaskbar;CoInitialize(0);//初始化COM组件,用于支持任务栏显示进度。CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pTaskbar));=========== 显示进度 =================================================================pTaskbar->SetProgressState(this->GetSafeHwnd(), TBPF_INDETERMINATE);pTaskbar->SetProgressValue(this->GetSafeHwnd(), cur, tol); //cur代表当前位置,tol代表总长度注: 颜色参数 //TBPF_NORMAL、TBPF_INDETERMINATE、TBPF_NOPROGRESS------蓝色//TBPF_ERROR------ - 红色//TBPF_PAUSED------黄色========== 设置提示信息 =======================================================pTaskbar->SetThumbnailTooltip(this->GetSafeHwnd(), TEXT("Some information"));========== 添加覆盖图标 ===========================================================HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);pTaskbar->SetOverlayIcon(this->GetSafeHwnd(), hIcon, _T("TIPS"));========= 设置任务栏预览的区域 ===================================================RECT rc = { 200,100,300,200 }; //此处设置一个rect结构,代表客户区的一块区间pTaskbar->SetThumbnailClip(this->GetSafeHwnd(),&rc); //显示客户区的那一块区间=========设置任务栏添加按钮(类似qq音乐)=====================================HICON hIcon2 = AfxGetApp()->LoadIcon(IDI_ICON2); //导入按钮图片HICON hIcon3 = AfxGetApp()->LoadIcon(IDI_ICON3);THUMBBUTTONMASK dwMask = THB_ICON | THB_TOOLTIP;THUMBBUTTON thbButtons[2];thbButtons[0].dwMask = dwMask;thbButtons[0].iId = 0;thbButtons[0].hIcon = hIcon3;memcpy(thbButtons[0].szTip, TEXT("上一曲"), sizeof(thbButtons[0].szTip)); //设置提示信息thbButtons[1].dwMask = dwMask;thbButtons[1].iId = 1;thbButtons[1].hIcon = hIcon2;memcpy(thbButtons[1].szTip, TEXT("下一曲"), sizeof(thbButtons[1].szTip));pTaskbar->ThumbBarAddButtons(this->GetSafeHwnd(), ARRAYSIZE(thbButtons), thbButtons);由于点击会发送WM_COMMAND消息,所以 重写OnCommand,其中wParam 的高位为THBN_CLICKED ,低位是按钮的id(由参数 iId 设置 )。添加代码:if (HIWORD(wParam) == THBN_CLICKED){OnThumbnailButtonClicked(LOWORD(wParam)); //自己添加函数return TRUE;}设置按钮点击消息处理函数void CMFCApplication1Dlg::OnThumbnailButtonClicked(int id){switch (id){case 0:AfxMessageBox(_T("Left"));break;case 1:AfxMessageBox(_T("Right"));break;}}========= 新的选项卡/窗口 显示在任务栏中===========================================//注册句柄,参数一为要注册的句柄,参数二为主窗口句柄if (pTaskbar->RegisterTab(dlg->GetSafeHwnd(), this->GetSafeHwnd()) != S_OK)AfxMessageBox(_T("Register Error"));// 显示在任务栏中窗口,必须要通过先注册if(pTaskbar->SetTabOrder(dlg->GetSafeHwnd(), this->GetSafeHwnd())!=S_OK)AfxMessageBox(_T("Show Error"));

注:如果出现某个未定义 添加头文件

#include <commctrl.h> 

#include <Shobjidl.h>

因为MSDN上用了这两个头文件  但是我没有添加一样可以使用....

0 0
原创粉丝点击