void MainWindow::W7ToolbarSetImages() { QPixmap img; QBitmap mask; HIMAGELIST himl = ImageList_Create(20, 20, ILC_COLOR32, 4, 0); img = QIcon(":/back.png").pixmap(20); mask = img.createMaskFromColor(Qt::transparent); ImageList_Add(himl, img.toWinHBITMAP(QPixmap::PremultipliedAlpha), mask.toWinHBITMAP()); img = QIcon(":/play.png").pixmap(20); mask = img.createMaskFromColor(Qt::transparent); ImageList_Add(himl, img.toWinHBITMAP(QPixmap::PremultipliedAlpha), mask.toWinHBITMAP()); img = QIcon(":/forward.png").pixmap(20); mask = img.createMaskFromColor(Qt::transparent); ImageList_Add(himl, img.toWinHBITMAP(QPixmap::PremultipliedAlpha), mask.toWinHBITMAP()); img = QIcon(":/pause.png").pixmap(20); mask = img.createMaskFromColor(Qt::transparent); ImageList_Add(himl, img.toWinHBITMAP(QPixmap::PremultipliedAlpha), mask.toWinHBITMAP()); if (m_w7toolbar) m_w7toolbar->ThumbBarSetImageList(this->winId(), himl); ImageList_Destroy(himl); }
void MainInterface::createTaskBarButtons() { taskbar_wmsg = WM_NULL; /*Here is the code for the taskbar thumb buttons FIXME:We need pretty buttons in 16x16 px that are handled correctly by masks in Qt FIXME:the play button's picture doesn't changed to pause when clicked */ CoInitialize( 0 ); if( S_OK == CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList3, (void **)&p_taskbl) ) { p_taskbl->HrInit(); if( (himl = ImageList_Create( 20, //cx 20, //cy ILC_COLOR32,//flags 4,//initial nb of images 0//nb of images that can be added ) ) != NULL ) { QPixmap img = QPixmap(":/win7/prev"); QPixmap img2 = QPixmap(":/win7/pause"); QPixmap img3 = QPixmap(":/win7/play"); QPixmap img4 = QPixmap(":/win7/next"); QBitmap mask = img.createMaskFromColor(Qt::transparent); QBitmap mask2 = img2.createMaskFromColor(Qt::transparent); QBitmap mask3 = img3.createMaskFromColor(Qt::transparent); QBitmap mask4 = img4.createMaskFromColor(Qt::transparent); if(-1 == ImageList_Add(himl, img.toWinHBITMAP(QPixmap::PremultipliedAlpha),mask.toWinHBITMAP())) msg_Err( p_intf, "First ImageList_Add failed" ); if(-1 == ImageList_Add(himl, img2.toWinHBITMAP(QPixmap::PremultipliedAlpha),mask2.toWinHBITMAP())) msg_Err( p_intf, "Second ImageList_Add failed" ); if(-1 == ImageList_Add(himl, img3.toWinHBITMAP(QPixmap::PremultipliedAlpha),mask3.toWinHBITMAP())) msg_Err( p_intf, "Third ImageList_Add failed" ); if(-1 == ImageList_Add(himl, img4.toWinHBITMAP(QPixmap::PremultipliedAlpha),mask4.toWinHBITMAP())) msg_Err( p_intf, "Fourth ImageList_Add failed" ); } // Define an array of two buttons. These buttons provide images through an // image list and also provide tooltips. THUMBBUTTONMASK dwMask = THUMBBUTTONMASK(THB_BITMAP | THB_FLAGS); THUMBBUTTON thbButtons[3]; thbButtons[0].dwMask = dwMask; thbButtons[0].iId = 0; thbButtons[0].iBitmap = 0; thbButtons[0].dwFlags = THBF_HIDDEN; thbButtons[1].dwMask = dwMask; thbButtons[1].iId = 1; thbButtons[1].iBitmap = 2; thbButtons[1].dwFlags = THBF_HIDDEN; thbButtons[2].dwMask = dwMask; thbButtons[2].iId = 2; thbButtons[2].iBitmap = 3; thbButtons[2].dwFlags = THBF_HIDDEN; HRESULT hr = p_taskbl->ThumbBarSetImageList(winId(), himl ); if(S_OK != hr) msg_Err( p_intf, "ThumbBarSetImageList failed with error %08lx", hr ); else { hr = p_taskbl->ThumbBarAddButtons(winId(), 3, thbButtons); if(S_OK != hr) msg_Err( p_intf, "ThumbBarAddButtons failed with error %08lx", hr ); } CONNECT( THEMIM->getIM(), playingStatusChanged( int ), this, changeThumbbarButtons( int ) ); }