Это и есть API функция из библиотеки dwmapi.dll.Paradox писал(а):Искал во всех неймспейсах - не нашел... Может, это Express Edition такой... А API - аналог есть?...
Несомненно, целых два - хэндл окна и структура с нужными размерами полей окна.Paradox писал(а):А параметры у этой функции есть?..
Paradox писал(а):Э... А поподробнее про переменные структуры и где брать идентификатор окна?
<StructLayout(LayoutKind.Sequential)> _
Public Structure MARGINS
Public Left As Integer
Public Right As Integer
Public Top As Integer
Public Bottom As Integer
End Structure
Paradox писал(а):Эх... =( Можно еще строку вызова?..
'Обьявляем структуру, описывающую размер полей Glass
<StructLayout(LayoutKind.Sequential)> Private Structure Margins
Public cxLeftWidth As Integer
Public cxRightWidth As Integer
Public cyTopHeight As Integer
Public cyBottomHeight As Integer
End Structure
'Импортируем функию из DLL
<DllImport("DwmApi.dll")> Private Shared Function DwmExtendFrameIntoClientArea(ByVal hwnd As IntPtr, ByRef pMarInset As Margins) As Integer
End Function
<DllImport("dwmapi.dll", PreserveSig:=False)> Private Shared Function DwmIsCompositionEnabled() As Boolean
End Function
Const HT_CAPTION As Integer = &H2
Const WM_NCLBUTTONDOWN As Integer = &HA1
Private Sub PaintGlass()
Dim margins As New Margins()
margins.cxLeftWidth = Me.Width / 2
margins.cxRightWidth = Me.Width / 2
margins.cyTopHeight = Me.Height / 2
margins.cyBottomHeight = Me.Height / 2
Me.BackColor = Color.Black
'Определяем Handle формы
Dim theHandle As Long = Me.Handle.ToInt64
'Вызываем функцию Glass из библиотеки DwmApi.dll
Try
If DwmIsCompositionEnabled() = True Then
DwmExtendFrameIntoClientArea(theHandle, margins)
End If
Catch
End Try
Private Sub Form_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
PaintGlass()
End Sub
773FF писал(а):Dim theHandle As Long = Me.Handle.ToInt64
Paradox писал(а):РАБОТАЕТ! Только надо так Dim theHandle as IntPtr = Me.handle
- спрасибо!!! В VMware Workstation Aero не работает, а пользователи ругались бы долго.Тебе просто повезло
На 64-битных системах указатели 64-битные
На 32бит будет ждать облом.
Поэтому желательно использовать IntPtr вместо int32 или int64
Paradox писал(а):Еще один вопрос =) С тех пор, как я растянул аеро на всю форму, на кнопках стал "просвечивать" текст. Смена цвета текста кнопки не помогает =(. Можно это как-нибудь устранить?
- у меня возникли аналогичные проблемы. В процессе раскопок я прочитал, что полноценно с Aero можно работать в приложениях WPF (Windows Presentation Foundation). А в Windows Forms надо или вручную прорисовывать текст на кнопках (текстовых полях и пр.), или например, вставить в кнопку рисунок (image) с необходимой надписью.на кнопках стал "просвечивать" текст
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32