05-07-16, 07:26 AM
يا محمد،
هذا كود آخر يظهر ظل في جميع الجوانب، ولا تنسى أن لا تضع للفورم حدوديعني Me.FormBorderStyle = FormBorderStyle.None
هذه النتيجة
وهذا الكود بالفجوال بيسيك
هذا كود آخر يظهر ظل في جميع الجوانب، ولا تنسى أن لا تضع للفورم حدوديعني Me.FormBorderStyle = FormBorderStyle.None
هذه النتيجة
وهذا الكود بالفجوال بيسيك
PHP كود :
#Region " Drop Shadow On A Borderless WinForm "
'' http://stackoverflow.com/questions/16493698/drop-shadow-on-a-borderless-winform
<Runtime.InteropServices.DllImport("dwmapi.dll")> _
Public Shared Function DwmExtendFrameIntoClientArea(hWnd As IntPtr, ByRef pMarInset As Padding) As Integer
End Function
<Runtime.InteropServices.DllImport("dwmapi.dll")> _
Public Shared Function DwmSetWindowAttribute(hwnd As IntPtr, attr As Integer, ByRef attrValue As Integer, attrSize As Integer) As Integer
End Function
<Runtime.InteropServices.DllImport("dwmapi.dll")> _
Public Shared Function DwmIsCompositionEnabled(ByRef pfEnabled As Integer) As Integer
End Function
Private m_aeroEnabled As Boolean
'' variables for box shadow
Private Const CS_DROPSHADOW As Integer = &H20000
Private Const WM_NCPAINT As Integer = &H85
Private Const WM_ACTIVATEAPP As Integer = &H1C
Private Const WM_NCHITTEST As Integer = &H84
'' variables for dragging the form
Private Const HTCLIENT As Integer = &H1
Private Const HTCAPTION As Integer = &H2
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
m_aeroEnabled = CheckAeroEnabled()
Dim cp As CreateParams = MyBase.CreateParams
If Not m_aeroEnabled Then
cp.ClassStyle = cp.ClassStyle Or CS_DROPSHADOW
End If
Return cp
End Get
End Property
Private Function CheckAeroEnabled() As Boolean
If Environment.OSVersion.Version.Major >= 6 Then
Dim enabled As Integer = 0
DwmIsCompositionEnabled(enabled)
Return If((enabled = 1), True, False)
End If
Return False
End Function
Protected Overrides Sub WndProc(ByRef m As Message)
Select Case m.Msg
Case WM_NCPAINT
'' box shadow
If m_aeroEnabled Then
Dim v = 2
DwmSetWindowAttribute(Me.Handle, 2, v, 4)
Dim margins As New Padding(1, 1, 1, 1)
DwmExtendFrameIntoClientArea(Me.Handle, margins)
End If
Exit Select
Case Else
Exit Select
End Select
MyBase.WndProc(m)
'' drag the form
If m.Msg = WM_NCHITTEST AndAlso CInt(m.Result) = HTCLIENT Then
m.Result = HTCAPTION
End If
End Sub
#End Region


