Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Вопрос на засыпку - Transparent TextBox Добавлено: 02.04.04 14:02  

Автор вопроса:  LamerOnLine | ICQ: 334781088 

Проблемка та еще - нужно сделать TextBox прозрачным, но не сам контрол, а Background, как в Label. Абсолютно ничего не получается. Уже думаю плюнуть. Кто-нибудь еще хочет попробовать?

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 02.04.04 20:07

TextBox навряд-ли получится... а ты не хочешь TextBox заменить на PictureBox? Помнится был пример, там и буковки набивались и каретка была... немножко доделать и все... А фон прозрачный, в PictureBox, так картинку можно с Parent формы снимать будет...

Ответить

Номер ответа: 2
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 02.04.04 20:31
Полупрозрачными можно сделать только окна уровня формы, дочерние типа текстбокса - не получится. Можно попробовать через AlfaBlend, но это надо будет не печатать текст в пикчербоксе, а рисовать его как битмап и накладывать его hDC на hDC формы с коэффициентом прозрачности.

Ответить

Номер ответа: 3
Автор ответа:
 Destroyed



Вопросов: 0
Ответов: 3
 Профиль | | #3 Добавлено: 03.04.04 01:34

Попробуй подключить  компонент MS Form 2.0 Object Library. Там в TextBox - можно ставить прозрачность над текстом. Возможно столкнешься с проблемой ввода русского текста.

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 03.04.04 02:22
Человеку нужно под текстом а не над ним прозрачность. Да и если над текстом что либо будет (какой-либо hDC) , то сам текст станет недоступен

Ответить

Номер ответа: 5
Автор ответа:
 Chill



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
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #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
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 05.04.04 09:27

Да все уж перепробовал. И TRANSPARENT через SetBKMode, и при создании окна, да еще уйму всего. Не хочет.

А изобретать свой контрол на PictureBox не катит, хотя может и придется. В принципе, через DrawTextEx можно вывод организовать, но вот с поиском и выделением придется подгрузить машину.

Ответить

Номер ответа: 8
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #8 Добавлено: 05.04.04 09:45
Ещё раз: не делаются дочерние окна прозрачными, только окна первого уровня. Самый старший контейнер. И все что внутри него будет прозрачным, не только текстбокс.

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 05.04.04 15:28

Если не секрет - зачем это надо?

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 05.04.04 16:26

Не секрет - хочу написать контрол, в котором можно нормально сочетать возможности TextBox с картинками. Свой TextBox на основе PictureBox я писать не хочу, поэтому кладу его на PictureBox. Соответственно, фон должен быть прозрачный.

Ответить

Номер ответа: 11
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #11 Добавлено: 06.04.04 00:31

Короче сделать это можно...

Надо делать так, задаешь стиль текстбокса OWNER_DRAW

Сабклассируешь его

Отрисовываешь его с помошью GDI+ (не знаю есть ли функция прозрачности в обычном GDI)

И все, прозрачный ТекстБокс готов, вот только я никогда этого не делал, но вроде должно получиться...

 

Ответить

Номер ответа: 12
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #12 Добавлено: 06.04.04 02:39

Так ты попробуй, а затем скажешь, что :

>Короче сделать это можно...

Ответить

Номер ответа: 13
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 06.04.04 09:52

В MSDN есть примерчик как делать TextBox with dithered background, через Setbkmode TRANSPARENT, но единственный эфект от этого - текст начинает не стираться, а смазываться. То, что за контролом, все равно не видно.

Надыбал в инете примерчик TextBox с реально прозрачным фоном, но там столько кода, что проще написать новый контрол :)

Ответить

Номер ответа: 14
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #14 Добавлено: 06.04.04 12:52

Я сделаю, но не в ближайшие 3 дня, работы и без этого хватает...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам