powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / А как у Tabstrip изменить цвет фона?
4 сообщений из 4, страница 1 из 1
А как у Tabstrip изменить цвет фона?
    #38042195
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тот кусочек что выглядывает (повторяет цвет формы?).
Внутренние органы я замазываю так (без градиента но похоже на правду):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
  Dim st As Long, pt As Long
  st = GetDC(TabStrip1.hwnd)
  pt = GetPixel(st, 2, 5)
  ReleaseDC TabStrip1.hwnd, st
    
  'PictureGeneral
  PictureGeneral.BackColor = pt
  FrameOriginal.BackColor = pt
...



А вот сейчас решил вставить tabstrip2 внутрь tabstrip1.
Т.е. на самом деле внутрь картинки с цветом фона =pt
Т.е. фон tabstrip2 должен быть равен =pt

...
Рейтинг: 0 / 0
А как у Tabstrip изменить цвет фона?
    #38042234
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вырезать этот кусок окна табстрипа по маске или перехватить отрисовку фона и залить своим цветом.
Не уверен насчет возможности второго.
...
Рейтинг: 0 / 0
А как у Tabstrip изменить цвет фона?
    #38042312
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВырезать этот кусок окна табстрипа по маске.
Ерунда какая. Там не кусок, там еще по контуру цвет идет - узкой полоской.

Antonariy или перехватить отрисовку фона и залить своим цветом.Не уверен насчет возможности второго.
А вот как? Если поместить tabstrip на картинку, то сабклассинг этой картинки на предмет отлова WM_CTLCOLORXXX и подсовывания brush (да хоть картинку, хоть solid) как я привык уже делать ничего не дает.
М.б. его самого сабклассить?

Причем речь то о bkground контрола все-го лишь, а не о раскрашивании самих табов (что решено).

Упростим задачу. Берем форму, задаем ее цвет =белый (да хоть на классике без всяких XP-тематизаций). Кладем на нее TabStrip. И этот кусок будет серый, а по логике должен быть белый.
...
Рейтинг: 0 / 0
А как у Tabstrip изменить цвет фона?
    #38043562
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Ну, я попытался сабклассить Tabstrip
попробовал коды типа этого

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   Case WM_PAINT:
...
   Case WM_ERASEBKGND:
      the_hdc = GetDC(Form1.TabStrip1.hwnd)
      cr = GetSysColor(COLOR_BTNFACE)
      the_brush = CreateSolidBrush(vbWhite)
      hbmDstOld = SelectObject(the_hdc, the_brush)
      GetClientRect Form1.TabStrip1.hwnd, rc
      ExtFloodFill the_hdc, rc.Right - 3, 3, cr, FLOODFILLSURFACE
      SelectObject the_hdc, hbmDstOld
      ReleaseDC Form1.TabStrip1.hwnd, the_hdc

      NewTabStrip1WindowProc = 1
      Exit Function


Еще несколько вариантов в таком же духе (по сути то что ты предложил -подрисовать кусок, соотв. родному цвету)
-фигово все это работает и глючно
-аккуратного простого оригинального варианта подобрать не удалось.
В общем отказался от идеи вложенного табстрипа.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / А как у Tabstrip изменить цвет фона?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]