Страница: 1 |
Страница: 1 |
Вопрос: ProgressBar
Добавлено: 29.04.05 20:22
Автор вопроса: SyavX
Как изменить свойство Appearance с 3D на Flat у программно созданого ProgressBar'а?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 29.04.05 20:48
Сначала следует получить стиль у контрола:
GetWindowLong(.., GWL_STYLE, ..)
Потом обработать:
Value = Value And Not WS_BORDER ' (Возможно и че-то иное)
В конце:
SetWindowLong...
должно сработать...
Номер ответа: 2
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #2
Добавлено: 29.04.05 22:10
А нафтга программно создавать Прогресс? В чем фишка?
Номер ответа: 3
Автор ответа:
SyavX
Вопросов: 25
Ответов: 149
Профиль | | #3
Добавлено: 29.04.05 22:24
Дело в том что он (ProgressBar) создается без флага WS_BORDER (WS_CHILD Or WS_VISIBLE). А если и добавить WS_BORDER, то в результате появится черная рамка.
Просто хотел расширить примерчик в котором с ProgressBar через класс работают. Добавил изменение цвета, ориентации, а на Appearance застрял
2Noviks: чтоб ничего лишнего не подключать и в последствии не тягать с прогой
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 29.04.05 23:53
Нет этого св-ва, должно быть что-то иное...
Номер ответа: 5
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #5
Добавлено: 30.04.05 02:20
Свойство Appearance Read-Only что ли?
Номер ответа: 6
Автор ответа:
SyavX
Вопросов: 25
Ответов: 149
Профиль | | #6
Добавлено: 30.04.05 13:00
У стандартного ProgressBar есть свойство Appearance, оно имеет два состояния: 3D и Flat. При создании ProgressBar через CreateWindowEx с флагами WS_CHILD Or WS_VISIBLE контрол появляется как бы с Appearance = 3D
Задание: изменить как бы Appearance с как бы 3D на как бы Flat
Номер ответа: 7
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #7
Добавлено: 30.04.05 16:29
А если вот так:
Dim m_hWnd As Long, lExStyle As Long
m_hWnd = CreateWindowEX(0, PROGRESS_CLASSA, "", WS_VISIBLE Or WS_CHILD, 0, 0, 100, 20, Me.hwnd, 0&, App.hInstance, 0&
SendMessage m_hWnd, PBM_SETPOS, 50, 0
lExStyle = GetWindowLong(m_hWnd, GWL_EXSTYLE)
lExStyle = lExStyle And (Not WS_EX_STATICEDGE)
SetWindowLong m_hWnd, GWL_EXSTYLE, lExStyle
End Sub
Номер ответа: 8
Автор ответа:
SyavX
Вопросов: 25
Ответов: 149
Профиль | | #8
Добавлено: 01.05.05 01:16
2Comanche: Не помогает, по краям творится что-то неясное...
Номер ответа: 9
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #9
Добавлено: 01.05.05 10:19
Прогрессбары разного класса. Тот, который ты называешь "стандартный", класса "ProgressBar20WndClass". А создаёшь класса "msctls_progress32". Это ж совсем разные контролы. И не факт, что они будут одинаково выглядеть.
Номер ответа: 10
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #10
Добавлено: 01.05.05 12:09
2SyavX:
Ага, и правда. И не просто "что-то неясное": край (полоска толщиной в 1 или 2 px) становится прозрачным! О как! Причём "прошибает" аж насквозь родительской формы - и при запуске из VB IDE в этой "полоске" видны "ошмётки" от VB IDE. Интересно - с чего бы это?! что мы со стилями напутали?
Номер ответа: 11
Автор ответа:
SyavX
Вопросов: 25
Ответов: 149
Профиль | | #11
Добавлено: 01.05.05 14:41
HOOLIGAN правильно написал. Мне кажется вопрос можно закрывать...