JBTALKS.CC

标题: 运用DWMAPI.DLL(VB.NET) [打印本页]

作者: goodhermit95    时间: 2009-5-29 10:37 AM
标题: 运用DWMAPI.DLL(VB.NET)
开个CodeFile叫 DWM_Code.vb
这个看不太懂

  1. Imports System.Runtime.InteropServices

  2. Module DWM_Code
  3.     <StructLayout(LayoutKind.Sequential)> _
  4. Public Structure Margins
  5.         Public Sub New(ByVal left As Integer, ByVal right As Integer, ByVal top As Integer, ByVal bottom As Integer)
  6.             _left = left
  7.             _right = right
  8.             _top = top
  9.             _bottom = bottom
  10.         End Sub

  11.         Public Sub New(ByVal allMargins As Integer)
  12.             _left = allMargins
  13.             _right = allMargins
  14.             _top = allMargins
  15.             _bottom = allMargins
  16.         End Sub

  17.         Private _left As Integer
  18.         Private _right As Integer
  19.         Private _top As Integer
  20.         Private _bottom As Integer

  21.         Public Property Left() As Integer
  22.             Get
  23.                 Return _left
  24.             End Get
  25.             Set(ByVal value As Integer)
  26.                 _left = value
  27.             End Set
  28.         End Property
  29.         Public Property Right() As Integer
  30.             Get
  31.                 Return _right
  32.             End Get
  33.             Set(ByVal value As Integer)
  34.                 _right = value
  35.             End Set
  36.         End Property
  37.         Public Property Top() As Integer
  38.             Get
  39.                 Return _top
  40.             End Get
  41.             Set(ByVal value As Integer)
  42.                 _top = value
  43.             End Set
  44.         End Property
  45.         Public Property Bottom() As Integer
  46.             Get
  47.                 Return _bottom
  48.             End Get
  49.             Set(ByVal value As Integer)
  50.                 _bottom = value
  51.             End Set
  52.         End Property

  53.         Public ReadOnly Property IsMarginless() As Boolean
  54.             Get
  55.                 Return (_left < 0 AndAlso _right < 0 AndAlso _top < 0 AndAlso _bottom < 0)
  56.             End Get
  57.         End Property

  58.         Public ReadOnly Property IsNull() As Boolean
  59.             Get
  60.                 Return (_left = 0 AndAlso _right = 0 AndAlso _top = 0 AndAlso _bottom = 0)
  61.             End Get
  62.         End Property
  63.     End Structure

  64.     <DllImport("dwmapi.dll", PreserveSig:=False)> _
  65. Public Function DwmExtendFrameIntoClientArea(ByVal hWnd As IntPtr, ByRef pMarInset As Margins) As Integer
  66.     End Function
  67. End Module

复制代码

  1. Sub Form_Load
  2.             Me.BackColor = Color.Black ‘用黑色来使他变半透明
  3.             DwmExtendFrameIntoClientArea(Me.Handle, New Margins(Me.Size.Width * 2, Me.Size.Width * 2, Me.Size.Width * 2, Me.Size.Width * 2))'刚刚在那个Code Declare的Function
  4.             Me.Hide()
  5.             Me.Show() 'Hide -> Show 用来Refresh效果

  6. end sub
复制代码

坏处是黑色的字Label会变透明,解决方法就是用Panel围着Components,然后ExteadArea在全部Panel……

作者: goodhermit95    时间: 2009-5-29 10:48 AM
标题: 效果效果~~
这个是Designer


这个是Runtime

作者: OxfordExe2    时间: 2009-5-31 07:39 PM
你好厉害= =
我还在学着
功力没那么高深
作者: goodhermit95    时间: 2009-6-1 10:42 AM
标题: 回复 #3 OxfordExe2 的帖子
这个只是API而已
property sub是用来把资料拿进来
作者: davidbilly87    时间: 2009-6-15 01:48 PM
原帖由 goodhermit95 于 2009-5-29 10:37 发表
开个CodeFile叫 DWM_Code.vb
这个看不太懂

Imports System.Runtime.InteropServices

Module DWM_Code
     _
Public Structure Margins
        Public Sub New(ByVal left As Integer, ByVal right  ...



为什么 不要  "Me.BackColor = Color.Black"  >>" Me.BackColor = Color.Red " 呢,背景设红色...那你就可以用黑色的字咯.....他只是把有关黑色变透明是吧?..我猜的,不知道对不对

[ 本帖最后由 davidbilly87 于 2009-6-15 02:04 PM 编辑 ]
作者: goodhermit95    时间: 2009-6-18 09:30 PM
标题: 回复 #5 davidbilly87 的帖子
因为dwmapi.dll是把黑色变成透明
为什么用黑色你去问microsoft






欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5