منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] ظل خارجي للفورم - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] ظل خارجي للفورم (/showthread.php?tid=16357)

الصفحات: 1 2


ظل خارجي للفورم - محمد اسماعيل - 05-07-16

اريد كود عمل ظل خارجي للفورم يعمل علي جميع النسخ

استخدمت كود ولكن لايعمل علي النسخة 7 64 بت اريد كود يعمل مع اختلاف النسخ اكس بي او 7 او 8 بكلا النواتيين ويكون بسيط


RE: ظل خارجي للفورم - أسامة - 05-07-16

جرب هذا
كود :
 Private Const CS_DROPSHADOW As Integer = 131072

   Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
       Get
           Dim cp As CreateParams = MyBase.CreateParams
           Dim OSVer As Version = System.Environment.OSVersion.Version()
           Select Case OSVer.Major
               Case Is < 5
               Case 5
                   If OSVer.Minor > 0 Then
                       cp.ClassStyle = cp.ClassStyle Or CS_DROPSHADOW
                   End If
               Case Is > 5
                   cp.ClassStyle = cp.ClassStyle Or CS_DROPSHADOW
               Case Else
           End Select
           Return cp
       End Get
   End Property



RE: ظل خارجي للفورم - الوادي - 05-07-16

يا محمد،

هذا كود آخر يظهر ظل في جميع الجوانب، ولا تنسى أن لا تضع للفورم حدوديعني 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 IntPtrByRef pMarInset As Padding) As Integer
    End 
Function
 
   <Runtime.InteropServices.DllImport("dwmapi.dll")> _
    Public Shared 
Function DwmSetWindowAttribute(hwnd As IntPtrattr As IntegerByRef attrValue As IntegerattrSize 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), TrueFalse)
 
       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.Handle2v4)
 
                   Dim margins As New Padding(1111)
 
                   DwmExtendFrameIntoClientArea(Me.Handlemargins)
 
               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 



RE: ظل خارجي للفورم - محمد اسماعيل - 05-07-16

(05-07-16, 07:26 AM)الوادي كتب : يا محمد،

هذا كود آخر يظهر ظل في جميع الجوانب، ولا تنسى أن لا تضع للفورم حدوديعني 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 IntPtrByRef pMarInset As Padding) As Integer
    End 
Function
 
   <Runtime.InteropServices.DllImport("dwmapi.dll")> _
    Public Shared 
Function DwmSetWindowAttribute(hwnd As IntPtrattr As IntegerByRef attrValue As IntegerattrSize 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), TrueFalse)
 
       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.Handle2v4)
 
                   Dim margins As New Padding(1111)
 
                   DwmExtendFrameIntoClientArea(Me.Handlemargins)
 
               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 

مش عارف اشكرك ازاي علي تعبك معايا ولكن نفس المشكلة الكود يعمل علي اكس بي و7 32 بت

ولكن علي جهازي 64 بت لايعمل اي ظل خارجي مهما كان علي الرغم من ان الفيجول بيسك 2013 فية ظل خارجي ويعمل علي جهازي العنيد 64 بت

والكود دة انا كنت بستخدمة علي النسخة 32 بت ولا يعمل علي 64 بت Huh Huh Huh Huh في اية خطا وهل الكود الخاص بك قمت بتجربة علي ويندوز 64 بت

كود :
Public CS_DROPSHADOW As Int32 = &H20000
   Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
       Get
           Dim parameters As CreateParams = MyBase.CreateParams
           parameters.ClassStyle += CS_DROPSHADOW
           Return parameters
       End Get
   End Property

(05-07-16, 06:13 AM)أسامة كتب : جرب هذا
كود :
 Private Const CS_DROPSHADOW As Integer = 131072

   Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
       Get
           Dim cp As CreateParams = MyBase.CreateParams
           Dim OSVer As Version = System.Environment.OSVersion.Version()
           Select Case OSVer.Major
               Case Is < 5
               Case 5
                   If OSVer.Minor > 0 Then
                       cp.ClassStyle = cp.ClassStyle Or CS_DROPSHADOW
                   End If
               Case Is > 5
                   cp.ClassStyle = cp.ClassStyle Or CS_DROPSHADOW
               Case Else
           End Select
           Return cp
       End Get
   End Property
مشكور جدا اخي اسامة ولكن الكود لايعمل عندي علي النسخة7  64 بت ويعمل علي باقي النسخ اكس بي  و 7 32 بت


RE: ظل خارجي للفورم - الوادي - 05-07-16

يا محمد،

غير خصائص المشروع واجعله على x86 وبكذا يعمل على 32 و 64


RE: ظل خارجي للفورم - محمد اسماعيل - 05-07-16

(05-07-16, 09:22 AM)الوادي كتب : يا محمد،

غير خصائص المشروع واجعله على x86 وبكذا يعمل على 32 و 64

Wink  برنامجي x86  وليس 64

ولكن المشكلة بجهازي ويندوز 7  64  بت Dodgy


RE: ظل خارجي للفورم - الوادي - 05-07-16

يا محمد،

أنا جهازي ويندوز 7 64 بت ويعمل لدي حتى أنني لم أنني غيرته لكل الخيارات AnyCPU و x86 وx64 ولم أواجه مشكلة.

هل تستخدم ستايل أو ثيم خاص للويندوز؟ مجرد احتمال


RE: ظل خارجي للفورم - محمد اسماعيل - 05-07-16

(05-07-16, 09:39 AM)الوادي كتب : يا محمد،

أنا جهازي ويندوز 7  64  بت ويعمل لدي حتى أنني لم أنني غيرته لكل الخيارات AnyCPU و x86 وx64 ولم أواجه مشكلة.

هل تستخدم ستايل أو ثيم خاص للويندوز؟ مجرد احتمال

مدام الاكواد تعمل جيد اعندك علي فيرجن  64  انا هعتمد الكود لحد مجربة بعد عمل نسخة جديدة عندي 64 او علي جهاز اخر انشاءاللة

وكل عام وانتم بخير جميعا بمناسبة عيد الفطر


RE: ظل خارجي للفورم - الوادي - 05-07-16

يا محمد،

ما جاوبتني.!


RE: ظل خارجي للفورم - bidaya - 06-07-16

(05-07-16, 09:49 AM)الوادي كتب : يا محمد،

ما جاوبتني.!

اخي اسمحلي على التدخل
انا ايظا جربته عندي ولم يعمل