powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как перерисовать API-Trackbar (слайдер)
2 сообщений из 2, страница 1 из 1
Как перерисовать API-Trackbar (слайдер)
    #38246960
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую объяснить ситуацию.
"Прозрачность" слайдера достигается за счет перерисовки фона по получению WM_CTLCOLORSTATIC родителем:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Case WM_CTLCOLORSTATIC:
      If app_UseBkPicture Then
        SetBkMode wParam, TRANSPARENT
        GetWindowRect lParam, rc
        tPt.x = rc.Left
        tPt.y = rc.Top
        MapWindowPoints 0, GetParent(lParam), tPt, 2
        rc.Left = tPt.x
        rc.Top = tPt.y
        SetBrushOrgEx wParam, -rc.Left, -rc.Top, tPt
        NewDigitsWindowProc = hbshBackDigits
        Exit Function
      End If



Я сейчас добавил возможность менять/убирать фоновую картинку.
Соответственно когда я это делаю, у меня BackGraund слайдера hwndTrackBar должен перерисоваться.

Ну т.е. после применения новой фоновой картинки (или когда я сказал ее использовать, или не использовать),
я должен как-то "дернуть" слайдер, чтоб он сгенерировал WM_CTLCOLORSTATIC (хочу перерисовать свой фон).

У меня это не получается. Т.е. пока не стукнул по слайдеру мышью (например), он не перерисовывается.

Если бы был чистый VB-слайдер, я бы сделал
Код: vbnet
1.
Slider.Refresh


и перерисовка фона бы сработала.

Я уже часа 3 пытаюсь играться с
RedrawWindow c разными параметрами
UpdateWindow
ShowWindow
InvalidateRect
соотв. пытаюсь "обновить" hwndTrackBar
и ни фига - не обновляет фон.
Чего делать, как его "передернуть" чтоб он захотел перерисовать фон?
hwnd вроде тот.
...
Рейтинг: 0 / 0
Как перерисовать API-Trackbar (слайдер)
    #38246963
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось наконец.
Но только передергиванием стиля:
Код: vbnet
1.
2.
    SetWindowLong hwndTrackBar, GWL_STYLE, GetWindowLong(hwndTrackBar, GWL_STYLE) And Not WS_VISIBLE
    SetWindowLong hwndTrackBar, GWL_STYLE, GetWindowLong(hwndTrackBar, GWL_STYLE) Or WS_VISIBLE


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


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