На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
Закрыто SCINER 17-07-2005:
  
> Прозрачность формы но не контолов на ней , Может в FAQ?
    Вот многие начинают спрашивать, как сделать так, чтобы сама форма была прозрачной полностью, а контролы на ней не прозрачные, ну или полупрозрачные... вот накатал примерчик:

    ExpandedWrap disabled
      'Нужно выставить у формы св-во BorderStyle = 0
      'и чтобы кнопка формы отображалась на панели задач, нужно выставить св-во ShowInTaskbar = true
      Option Explicit
       
      Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
      Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
      Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
      Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
      Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
      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 crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
       
      Private Const GWL_EXSTYLE = -20
      Private Const WS_EX_LAYERED = &H80000
      Private Const LWA_ALPHA = &H2&
       
      Private Const RGN_OR = 2
       
      Private Sub TranspForm(ByVal frm As Form, Transparency As Integer) ' значение Transparency может быть от 0 до 255 (0 - полностью прозрачная, 255 - непрозрачная)
          Dim WindowRgn As Long ' тут будет храниться регион, по которому в последствии будет вырезано окно
          Dim ctrlRgn As Long ' тут будет храниться регион текущео конрола
          Dim ctrl As Control ' текущий контрол
          Dim NormalWindowStyle As Long
          
          WindowRgn = CreateRectRgn(0, 0, 0, 0) ' создаем пустой регион
          
          On Error Resume Next
          For Each ctrl In frm.Controls ' перебираем все контролы на форме
              ctrlRgn = CreateRectRgn(frm.ScaleX(ctrl.Left, frm.ScaleMode, vbPixels), frm.ScaleY(ctrl.Top, frm.ScaleMode, vbPixels), frm.ScaleX(ctrl.Left + ctrl.Width, frm.ScaleMode, vbPixels), frm.ScaleY(ctrl.Top + ctrl.Height, frm.ScaleMode, vbPixels)) ' создаем регион текущего контрола
              CombineRgn WindowRgn, WindowRgn, ctrlRgn, RGN_OR ' комбинируем его с регионом WindowRgn
          Next
          
          SetWindowRgn frm.hWnd, WindowRgn, True ' вырезаем окно по региону WindowRgn
          
          DeleteObject ctrlRgn
       
          On Error GoTo win98
       
          NormalWindowStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
          SetWindowLong Me.hWnd, GWL_EXSTYLE, NormalWindowStyle Or WS_EX_LAYERED
          SetLayeredWindowAttributes Me.hWnd, 0, 255, LWA_ALPHA
       
          SetLayeredWindowAttributes Me.hWnd, 0, (255 * Transparency) / 100, LWA_ALPHA
       
          win98:
          
      End Sub
       
      Private Sub Form_Load()
          TranspForm Me, 50 ' вызываем ф-ию которая делает форму прозрачной, а элементы на ней полупрозрачными
      End Sub


    P.S. Есть какие нибудь предложения по поводу кода?
    Сообщение отредактировано: Jenizix -
      Так по моему эта тема давно уже обсуждалась, не помню как там насчет контролов, но если насчет кода то посмотрю,спасибо. А так - это уже мало интересно, пройдено.
        А где полупрозрачность ???
          Цитата AndreyMp @
          Так по моему эта тема давно уже обсуждалась, не помню как там насчет контролов, но если насчет кода то посмотрю,спасибо. А так - это уже мало интересно, пройдено.

          Это может для тебя пройдено. Для новичков еще все впереди ;) :)
            Ну ЭТО я еще не успел посмотреть. Но если интнресует то у меня есть рабочий проект, не мой, но проверенный. Откуда скачал не помню, очень давно это было.
              Посылаю,но это не мой проект, но проверенно рабочий. Еще раз напоминаю, что уже не помню откуда скачал.Может быть и с Вашего форума. Ище раз извините за плагиат.Но у меня есть и свое по этому поводу,пока не решаюсь отправить поскольку не доработано еще.

              Добавлено
              SCINER а в факе неужели этого нет. Тогда отправь этот примерчик туда. Не так это и сложно, что бы проблему строить.
              Прикреплённый файлПрикреплённый файл_______________.rar (2.78 Кбайт, скачиваний: 184)
                AndreyMp, ты походу вообще не понял о чем идет речь! ты дал пример использования полупрозрачности!!!

                Цитата SCINER @
                А где полупрозрачность ???

                Ну это если кому надо, сами приделают... ;)

                Добавлено
                Обновил код, теперь есть и полупрозрачность!
                Сообщение отредактировано: Jenizix -
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:
                Закрыто SCINER 17-07-2005:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0337 ]   [ 15 queries used ]   [ Generated: 15.09.25, 22:38 GMT ]