ساخت یوزر فرم شفاف

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • میثم مقدم نیا

    • 2017/03/23
    • 555
    • 41.00

    آموزشی ساخت یوزر فرم شفاف

    شاید براتون پیش اومده باشه، بخواهید یوزر فرمی داشته باشید که پشت اون معلوم باشه یا همون شفاف باشه
    برای این کار کافیه که صفحه کد یوزر فرم خود را باز کنید و کد زیر را درون آن وارد کنید
    کد PHP:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        
    (ByVal lpClassName As StringByVal lpWindowName As String) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
        
    (ByVal hWnd As LongByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
        
    (ByVal hWnd As LongByVal nIndex As LongByVal dwNewLong As Long) As Long
    Private Declare Function SetLayeredWindowAttributes Lib "user32" _
        
    (ByVal hWnd As LongByVal crey As ByteByVal bAlpha As ByteByVal dwFlags As Long) As Long

    Private Const GWL_EXSTYLE = (-20)
    Private Const 
    WS_EX_LAYERED = &H80000
    Private Const LWA_ALPHA = &H2&

    Public 
    hWnd As Long

    Private Sub UserForm_Initialize()
    Dim bytOpacity As Byte
    bytOpacity 
    192 ' تنظیم حجم نزولی متغیر  
    hWnd = FindWindow("ThunderDFrame", Me.Caption)
    Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)
    Call SetLayeredWindowAttributes(Me.hWnd, 0, bytOpacity, LWA_ALPHA)
    End Sub 
    در ضمن فراموش نکنید که برای میزان شفافیت یوزر فورم (Bytopacity) را میتوان در محدوده نوع بایت، از 0 تا 255 تنظیم کرد.

    توجه داشته باشید که این کد برای ویندوز ۳۲ بیتی است و چنانچه شما از ویندوز ۶۴ بیتی استفاده می‌کنید در هرجای کد Declare دارید تبدیلش کنید به Declare PtrSafe مشکل حل می‌شود.


    اگه به کارتون اومد سپاس یادتون نره ممنون

    در سرزمینی کہ نتوان مردانہ زیست ، مردانہ مردن بهتر از این زندگیست
  • reza_gh_tak

    • 2019/06/21
    • 149
    • 24.00

    #2
    من تو اين فرمم هرجا كژي ميكنم خطا ميده ممنون مي شم كمكم كنيد
    فایل های پیوست شده

    کامنت

    • iranweld

      • 2015/03/29
      • 3341

      #3
      نوشته اصلی توسط reza_gh_tak
      من تو اين فرمم هرجا كژي ميكنم خطا ميده ممنون مي شم كمكم كنيد

      فایل پیوست را بررسی کنید
      فایل های پیوست شده

      کامنت

      • majid_mx4

        • 2012/06/25
        • 699

        #4
        با سلام

        احتمالا سیستم شما bit-64 است اگر دستورات جناب IranWeld جواب نداد قسمت اول دستورات را بشکل زیر تغییر دهید .
        کد:
        Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
            (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
        Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
            (ByVal hWnd As Long, ByVal nIndex As Long) As Long
        Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
            (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
        Private Declare PtrSafe Function SetLayeredWindowAttributes Lib "user32" _
            (ByVal hWnd As Long, ByVal crey As Byte, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
        پایدار باشید میر

        کامنت

        چند لحظه..