Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Иконка на вкладке TabCtrl


Автор: Alca 4.2.2009, 14:56
Иконка на вкладке TabCtrl. Как замутить? (VC++ 2008, чистый WinAPI)

Автор: Rrader 4.2.2009, 15:01
У SysTabControl32 есть стиль TCS_OWNERDRAWFIXED. Там можно рисовать на табах, например, через Theme API

Автор: Alca 4.2.2009, 15:14
Не то. Мне надо создать ImageList и запихнуть из него в tci.iImage (индекс иконки).
Код

    TCITEM tci;        
    tci.pszText    = lpCaption;
    tci.cchTextMax = 20;
    tci.mask       = TCIF_TEXT | TCIF_IMAGE;
    tci.iImage     = iImage;

Вот такой у мну код:
Код

HIMAGELIST m_hImageList = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 4, 4);
HICON hIcon = NULL;
//hIcon = (HICON)::LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_icoApplication));
hIcon = (HICON)::LoadImage(g_hInstance, MAKEINTRESOURCE(IDI_icoApplication), IMAGE_ICON, 16, 16, LR_SHARED);
if (NULL == hIcon) {
    MessageBox(0, "NULL == hIcon", "", MB_OK);
}
ImageList_AddIcon(hIcon);

Код

//вставляем закладку
TCITEM tci;        
tci.pszText    = "lpCaption";
tci.cchTextMax = 20;
tci.mask       = TCIF_TEXT | TCIF_IMAGE;
tci.iImage     = 0/*iImage*/;
::SendMessage(_m_hWnd, TCM_INSERTITEM, iPos, (LPARAM)&tci);

Автор: Dem_max 4.2.2009, 15:20
Код

   HICON hIcon;
   hImgList = ImageList_Create(16,16,ILC_COLOR32|ILC_MASK,4,0);
   hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(ICON_1));
   ImageList_AddIcon(hImgList,hIcon);
   hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(ICON_2));
   ImageList_AddIcon(hImgList,hIcon);
   hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(ICON_3));
   ImageList_AddIcon(hImgList,hIcon);
   hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(ICON_4));
   ImageList_AddIcon(hImgList,hIcon);
   hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(ICON_5));
   ImageList_AddIcon(hImgList,hIcon);
   himlMain.add(hImgList);

   TCITEM tcItem;
   FillZeroMemory(&tcItem, sizeof(tcItem));
   TabCtrl_SetImageList(hWndTabControl, hImgList);
   tcItem.mask =  TCIF_IMAGE | TCIF_TEXT;
   tcItem.cchTextMax = 200;

   for(int i = 0; i < 5; i++)
   {
      tcItem.pszText = Txt;
      tcItem.iImage = i;
      TabCtrl_InsertItem(hWndTabControl, i, &tcItem);
   }

Автор: Alca 4.2.2009, 15:42
Dem_max, есть у тебя работающий пример?

Автор: Rrader 4.2.2009, 16:27
Alca, так все работает, просто добавь к своему коду
Код

TabCtrl_SetImageList(_m_hWnd, m_hImageList);

Автор: Dem_max 4.2.2009, 16:41
Alca, 
держи http://demmax2004.narod.ru/files/IRtoUDP_1.3.zip

Автор: Alca 4.2.2009, 16:43
Есть у меня такое:
Код

::SendMessage(_m_hWnd, TCM_SETIMAGELIST, NULL, m_hImageList);


Добавлено через 6 минут и 43 секунды
Цитата

держи Работающий пример

Там же нет исходников  smile 

Автор: Alca 5.2.2009, 12:46
Спасибо, разобрался. +1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)