Страница: 1 |
Страница: 1 |
Вопрос: Прозрачный фон в RichTextBox
Добавлено: 29.07.06 19:21
Автор вопроса: ZoomerSD | ICQ: 148640473
Доброе время суток!
на форуме нашол пример http://www.vbnet.ru/forum/show.aspx?id=58522
который позволяет делать фон стандартного текстового поля прозрачным. Кто нибудь знает как можно провернуть такое-же с RichTextBox?
Заранее спасибо.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #1
Добавлено: 29.07.06 21:27
по этому же принципу - сабклассинг...
Номер ответа: 2
Автор ответа:
ZoomerSD
ICQ: 148640473
Вопросов: 135
Ответов: 270
Профиль | | #2
Добавлено: 29.07.06 21:35
А по подробнее можно?
Номер ответа: 3
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #3
Добавлено: 30.07.06 07:12
Можно так:
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Const LWA_ALPHA = &H2
Const LWA_COLORKEY = &H1
Dim Ret As Long
Private Sub Form_Load()
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, &HFFFFFF, 255, LWA_COLORKEY Or LWA_ALPHA
End Sub
Т.е. все что белого цвета будет прозрачным, параметр bAlpha, коэффициент прозрачности (255 - полностью прозрачный, 0 - не прозрачный)
Номер ответа: 4
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #4
Добавлено: 30.07.06 14:31
2 Mihalыch: эт не то, потому что надо, чтобы было видно, не то, что под формой, а то, что под RichTextBox'ом... Как я понимаю, автор вопроса хочет сделать фон-картинку в контроле... Если ошибаюсь, прошу прощения...
Номер ответа: 5
Автор ответа:
ZoomerSD
ICQ: 148640473
Вопросов: 135
Ответов: 270
Профиль | | #5
Добавлено: 30.07.06 19:10
да. именно так. Правда есть одно НО. код должен работать как под ХР так и под 98-м а оба приведённых кода к сожалению работают только под ХР.
Номер ответа: 6
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #6
Добавлено: 30.07.06 19:50
Хм, а разве пример по твоему линку работает только в XP?
Номер ответа: 7
Автор ответа:
ZoomerSD
ICQ: 148640473
Вопросов: 135
Ответов: 270
Профиль | | #7
Добавлено: 30.07.06 20:12
Как не странно, но похоже что да. Там вылетает бесконечный цикл и в итоге ошибка. которая вырубает всё. что за ошибка и где у меня отследить не получилось. делаю дебаг всё вроде бы в порядке (правда не проверял что функции возвращают) а ток вылезаю из дебага сразу ошибка.
Номер ответа: 8
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #8
Добавлено: 30.07.06 20:20
Все API из примера поддерживались ещё в Win95. Так что под 98/Me всяко должно работать
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 01.08.06 11:26
Прозрачность в Win95/98/Me не поддерживалась изначально. А по сабжу - только сабклассинг. Есть пример для TextBox'а, под RTB можно переделать, но советую найти решение получше - ибо кривизна и мерцание будут твоими спутниками по жизни