Страница: 1 |
Вопрос: Вопрос на засыпку - Transparent TextBox | Добавлено: 02.04.04 14:02 |
Автор вопроса: ![]() |
Проблемка та еще - нужно сделать TextBox прозрачным, но не сам контрол, а Background, как в Label. Абсолютно ничего не получается. Уже думаю плюнуть. Кто-нибудь еще хочет попробовать? |
Ответы | Всего ответов: 14 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 02.04.04 20:07 |
TextBox навряд-ли получится... а ты не хочешь TextBox заменить на PictureBox? Помнится был пример, там и буковки набивались и каретка была... немножко доделать и все... А фон прозрачный, в PictureBox, так картинку можно с Parent формы снимать будет... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #2 | Добавлено: 02.04.04 20:31 |
Полупрозрачными можно сделать только окна уровня формы, дочерние типа текстбокса - не получится. Можно попробовать через AlfaBlend, но это надо будет не печатать текст в пикчербоксе, а рисовать его как битмап и накладывать его hDC на hDC формы с коэффициентом прозрачности. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 3 |
Профиль | Цитата | #3 | Добавлено: 03.04.04 01:34 |
Попробуй подключить компонент MS Form 2.0 Object Library. Там в TextBox - можно ставить прозрачность над текстом. Возможно столкнешься с проблемой ввода русского текста. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #4 | Добавлено: 03.04.04 02:22 |
Человеку нужно под текстом а не над ним прозрачность. Да и если над текстом что либо будет (какой-либо hDC) , то сам текст станет недоступен |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 554200 Вопросов: 101 Ответов: 343 |
Профиль | Цитата | #5 | Добавлено: 03.04.04 03:37 |
у окон есть такой стиль WS_EX_TRANSPARENT, попробуй, вдруг поможет... ******************************************************************************** [form MSDN] WS_EX_TRANSPARENT Specifies that a window created with this style should not be painted until siblings beneath the window (that were created by the same thread) have been painted. The window appears transparent because the bits of underlying sibling windows have already been painted. ******************************************************************************** |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 204447456 Вопросов: 28 Ответов: 664 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 03.04.04 07:00 |
Я уже не помню, но вроде читал что прозрачный стиль можно присвоить окну только при его создании (CreateWindowEx). Но ты попробуй поколдовать. Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Const GWL_EXSTYLE = -20 Private Const WS_EX_TRANSPARENT = &H20& Private Sub Form_Click() Dim Style As Long Style = GetWindowLong(Text1.hwnd, GWL_EXSTYLE) Style = Style Or WS_EX_TRANSPARENT Call SetWindowLong(Text1.hwnd, GWL_EXSTYLE, Style) End Sub |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #7 | Добавлено: 05.04.04 09:27 |
Да все уж перепробовал. И TRANSPARENT через SetBKMode, и при создании окна, да еще уйму всего. Не хочет. А изобретать свой контрол на PictureBox не катит, хотя может и придется. В принципе, через DrawTextEx можно вывод организовать, но вот с поиском и выделением придется подгрузить машину. |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #8 | Добавлено: 05.04.04 09:45 |
Ещё раз: не делаются дочерние окна прозрачными, только окна первого уровня. Самый старший контейнер. И все что внутри него будет прозрачным, не только текстбокс. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 05.04.04 15:28 |
Если не секрет - зачем это надо? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #10 | Добавлено: 05.04.04 16:26 |
Не секрет - хочу написать контрол, в котором можно нормально сочетать возможности TextBox с картинками. Свой TextBox на основе PictureBox я писать не хочу, поэтому кладу его на PictureBox. Соответственно, фон должен быть прозрачный. |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 554200 Вопросов: 101 Ответов: 343 |
Профиль | Цитата | #11 | Добавлено: 06.04.04 00:31 |
Короче сделать это можно... Надо делать так, задаешь стиль текстбокса OWNER_DRAW Сабклассируешь его Отрисовываешь его с помошью GDI+ (не знаю есть ли функция прозрачности в обычном GDI) И все, прозрачный ТекстБокс готов, вот только я никогда этого не делал, но вроде должно получиться...
|
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() Вопросов: 117 Ответов: 1538 |
Профиль | Цитата | #12 | Добавлено: 06.04.04 02:39 |
Так ты попробуй, а затем скажешь, что : >Короче сделать это можно... |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #13 | Добавлено: 06.04.04 09:52 |
В MSDN есть примерчик как делать TextBox with dithered background, через Setbkmode TRANSPARENT, но единственный эфект от этого - текст начинает не стираться, а смазываться. То, что за контролом, все равно не видно. Надыбал в инете примерчик TextBox с реально прозрачным фоном, но там столько кода, что проще написать новый контрол |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 554200 Вопросов: 101 Ответов: 343 |
Профиль | Цитата | #14 | Добавлено: 06.04.04 12:52 |
Я сделаю, но не в ближайшие 3 дня, работы и без этого хватает... |
Страница: 1 |
|