Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WTL, CTabView изм. цвет, шрифт заголовка закладки 
:(
    Опции темы
maksqwe
Дата 28.3.2012, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



Пытаюсь изменить цвет шрифта и устанавливать шрифт заголовка закладки жирным. Получается только изменить шрифт на жирный для всех закладок CTabView'a.
Собственно:

Код

CTabView m_view;
...
m_hWndClient = m_view.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);


Тут каждой стринички(закладки) присваиваю свой листвив
Код

m_view.AddPage(pView[i].m_hWnd, _T(URL_MAIN));


Менять цвет получается только для всех закладок объекта "m_view", по отдельности неполучается, так как не вижу в доступных методах CTabView изменять конкретно шрифты отдельных закладок.
Код

m_view.m_tab.SetFont(FontToBold(m_view.GetFont()));


Кому инетерсно, функция изменяющая шрифт на жирный
Код

HFONT CMainFrame::FontToBold(HFONT hFont)
{
    LOGFONT lf;
    GetObject (hFont, sizeof(LOGFONT), &lf);
    lf.lfWeight = FW_BOLD;
    
    return CreateFontIndirect(&lf);
}


Как реализовать изменение шрифт и по возможности его цвет по отдельности лдя каждой закладки, а не для всех сразу?

Сначало думал все просто и создал просто массив объектов CTabView. Как и пршлый раз объявлял "m_view" в классе "CMainFrame"
Код
CTabView *m_view;


Потом...
Код

m_view = new CTabView[COUNT];
for (int i = 0; i < COUNT; ++i)
      m_hWndClient = m_view[i].Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);


Дальше как и выше. Тут то и кроется вся тайна :(  m_hWndClient присвается хендл только последнего объекта  m_view[COUNT-1]. Соответственно показывается только последняя закладка этого объекта. Если бы не это, спокойно можно было бы менять шрифт отдельно для каждой закладки.

Извините за нубский вопрос конечно, просто я только только начал изучать WTL. Как я понял, создаются CTabView'ы, но показывается толкьо последний который скопировал свой хендл m_hWndClient, а предыдущие не могут передать свои закладки этому последнему. 

Как быть? Я скорее всего не прав, разъясните пожалуста как лучше реализовать данную проблему и почему это так, заранее спасибо.


Это сообщение отредактировал(а) maksqwe - 28.3.2012, 13:47
PM MAIL   Вверх
Earnest
Дата 29.3.2012, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Все, что идет после "Сначало думал все просто" просто бред; до этого все было правильно.
Вопрос с изменением фонта - это отдельная тема. Естественно, шрифт присваивается всему окну. Если хочешь извращаться с рисованием, смотри в сторону CustomDraw, кажется таб-контрол должен его поддерживать.  
В скобках.
С WTL вообще проблема, им мало кто пользуется и знает. И я в том числе. Но, поскольку, WTL - это довольно легкая обертка над WinAPI, то особых проблем быть не должно. Такие вещи лучше спрашивать в форуме по WinAPI.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.2824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.