Программирование
Веб программирование

Прозрачность формы

 
 
  1. Создать форму
  2. Создать модуль класса
'КОД ФОРМЫ
Option Explicit

Dim Opocality As New mcOpocality

Private Sub Form_Load()
    With Me.Slider1
        .Min = (0)
        .Max = (255)
        .SelStart = (255)
    End With
End Sub

Private Sub Slider1_Scroll()
    Call Opocality.Opocality(Form1.hWnd, Slider1.Value)
End Sub

'КОД МОДУЛЬ КЛАССА
'Функция определяет стиль окна
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 crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

'Константы
Private Const LWA_COLORKEY = &H1
Private Const LWA_ALPHA = &H3
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000

Private Enum eType
  A1 = 1
  Ax = 99
End Enum

Private Type tQ
  nQ As Long
  TypeQ As eType
  nRA As Integer
  nA(100) As Boolean
  nAC As Integer
End Type

Private Q As tQ

Private Enum eCodeType
  ctNone = 0
  ctASCII10 = 1
  ctASCII16 = 2
End Enum


Private Type tTest
  sTheme As String
  sAutor As String
  nNumOfQuestions As Long
  CodeType As eCodeType
  sPath As String
  DontHelp As Boolean
End Type

Private test As tTest
Private bTestLoaded As Boolean
Private LastPath As String
Private nCorrectly As Long
Private HelpEn As Boolean
Private Win2k As Boolean
Private bDontHelp As Boolean
Private Function ClearMemory()
  test.sPath = ""
  test.CodeType = ctNone
  test.nNumOfQuestions = 0
  test.sTheme = "None"
  test.sAutor = ""
  nCorrectly = 0
  frmBase.Org.Text = ""
  frmBase.Dbl.Text = ""
  bTestLoaded = False
End Function

'hWnd - манипулятор окна, Layered - степень прозрачность от 0 до 255
Public Function Opocality(hWnd As Long, Layered As Byte) As Boolean
On Error GoTo 1
Dim Ret As Long
'Определяем стиль нужного окна
Ret = GetWindowLong(hWnd, GWL_EXSTYLE)
'Задоем стиль окна как заслоенный
Ret = Ret Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, Ret
'Задоем степень прозрачности окна
SetLayeredWindowAttributes hWnd, 1, Layered, LWA_ALPHA
SetTransparent = True
1 Exit Function
End Function

Есть вопросы? Спроси на нашем форуме!!
Максим [07.11.2011 22:13]

А в винде XP это вроде не работает

Юра [07.11.2011 22:25]

И в XP\Vista\7 работает

Саня [08.11.2011 21:46]

Отложу твой код в свой архив нужных кодов.
Сэнкс

Максим [08.11.2011 22:19]

Саня а что значит сенкс???

юра [08.11.2011 23:03]

Я себе dll-ку забахал со всеми возможными кодами чтобы по сто раз не писать одно и тоже и с экономить на этом время. Есши кому надо помочь буду только рад.
пиши на мыло 486 095 224

Юра [09.11.2011 08:04]

Мыло Alex-di@list.ru
ася 486095224

Саня [09.11.2011 11:55]

Сэнкс - спасибо ))

Максим [27.11.2011 17:07]

на delphi так тоже можно сделать только код по проще(2 строчки)

Саня [27.11.2011 21:37]

А на делфи без апи?

Максим [29.11.2011 16:09]

да без апи

ЭдикS@N [02.12.2011 12:54]

возникает ошибка в коде точнее здесь Dim Opocality As New mcOpocality

Гость [02.12.2011 12:56]

Создай модуль класса с названием mcOpocality

? [05.12.2011 16:27]

Дельфи - ещё более высокоуровневый язык?

tima [21.05.2012 19:19]

что за объект Slider1 ??

Miha [20.07.2012 23:02]

Это Microsoft Windows Common Controls 6.0 (жми CTRL + T и поставь там галочку, и нажми ок)(обьясняю для ламеров)

ruslang0230 [21.08.2013 22:21]

на .net очень это легко делать без API



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.