نمایش نتایج 1 تا 30 از 30

نام تاپیک: دکمه های مثل خود اکس پی در اکس پی

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهرانسر_ فاز5
    پست
    317

    دکمه های مثل خود اکس پی در اکس پی

    با سلام

    اقا شاید این سوال قبلا اینجا طرح شده با شه ولی چون من هیچ وقت کارم بهش نخورده بود توجه نمی کردم

    سوال:
    می خواستم دکمه های برنامم در اکس پی مثل خود ویندوز باشه :oops:

    مرسی

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    استان فارس
    پست
    1,054
    عزیز وقتی برنامه تو خود ایکس پی اجرا شه مث خودشه دیگه

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهرانسر_ فاز5
    پست
    317
    نقل قول نوشته شده توسط mehrzad007
    عزیز وقتی برنامه تو خود ایکس پی اجرا شه مث خودشه دیگه
    نه خوشکل فقط تایتل بارش به شکل خود اکس پی در می اد ولی دکمه ها و بیشتر ابجکتها به سکل مهمول خودشون باقی می موند
    :?

  4. #4
    برای اینکه تمام اجزا را به شکل خود XP در بیاورید باید از مانیفستها و همچنین یک فراخوانی API در VB (زبانهای VC و Delphi به این فراخوانی نیاز ندارند) استفاده کنید. جزییاتش چندین بار در همین سایت نوشته شده.

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    57
    سلام
    این را در یک text بنویس بعد به صورت vb6.exe.manifest اون را ذخیره کن بعدش هم این فایلت را تو دایرکتوری vb بزار . بعد هم vb را اجرا کن . همه چیز مثل xp میشه . این را از وبلاگ IB => http://ib.blogsky.com گرفتم .
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly
    xmlns="urn:schemas-microsoft-com:asm.v1"
    manifestVersion="1.0"
    >
    <assemblyIdentity
    type="win32"
    processorArchitecture="*"
    version="6.0.0.0"
    name="mash"
    />
    <description>Enter your Description Here</description>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
    language="*"
    processorArchitecture="*"
    publicKeyToken="6595b64144ccf1df"
    />
    </dependentAssembly>
    </dependency>
    </assembly>

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهرانسر_ فاز5
    پست
    317

    مرسی

    پسر ایران از لطفت ممنون این درست کار کرد ولی وقتی بنامه رو EXE می کنم دوباره به حالت اولش بر می گرده :cry:

  7. #7
    البته با این کاری که جناب IranBoy گفتند، فقط به هنگام ساخت برنامه کنترل ها شبیه به XP هستند. برای اینکه فایل EXE ای که برای برنامه میسازید هم به این شکل نمایان شود، حتما باید کد زیر را در کد برنامتون داشته باشید.

    Option Explicit
    Private Declare Function InitCommonControls Lib "comctl32.dll" () As Long

    Private Sub Form_Initialize()
    InitCommonControls
    End Sub

    بعد از اینکه برنامه خود را اجرایی کردید، فایلی به نام myproj.exe.manifest ( در اینجا myproj نام فایل اجرایی هست) ساخته و کدی که Iranboy عزیز در بالا دادند را در آن گذاشته و ذخیره کنید.
    کد مورد نظر اینه :


    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity type="win32" processorArchitecture="*" version="6.0.0.0" name="mash"/>
    <description>Enter your Description Here</description>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
    language="*"
    processorArchitecture="*"
    publicKeyToken="6595b64144ccf1df"
    />
    </dependentAssembly>
    </dependency>
    </assembly>


    حالا میتونید برنامتون را بر اساس XP Style مشاهده کنید.

  8. #8
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    استان فارس
    پست
    1,054
    آقایون واقعا ممنونم . شرمنده که در مورد چیزی که نمی دونستم حرف زدم :oops:

  9. #9
    کاربر دائمی
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهرانسر_ فاز5
    پست
    317
    نقل قول نوشته شده توسط مسعود غیبی
    البته با این کاری که جناب IranBoy گفتند، فقط به هنگام ساخت برنامه کنترل ها شبیه به XP هستند. برای اینکه فایل EXE ای که برای برنامه میسازید هم به این شکل نمایان شود، حتما باید کد زیر را در کد برنامتون داشته باشید.

    Option Explicit
    Private Declare Function InitCommonControls Lib "comctl32.dll" () As Long

    Private Sub Form_Initialize()
    InitCommonControls
    End Sub

    بعد از اینکه برنامه خود را اجرایی کردید، فایلی به نام myproj.exe.manifest ( در اینجا myproj نام فایل اجرایی هست) ساخته و کدی که Iranboy عزیز در بالا دادند را در آن گذاشته و ذخیره کنید.
    کد مورد نظر اینه :


    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity type="win32" processorArchitecture="*" version="6.0.0.0" name="mash"/>
    <description>Enter your Description Here</description>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
    language="*"
    processorArchitecture="*"
    publicKeyToken="6595b64144ccf1df"
    />
    </dependentAssembly>
    </dependency>
    </assembly>


    حالا میتونید برنامتون را بر اساس XP Style مشاهده کنید.
    --------------------------------------------------------------------------------------
    بچه ها از لطفتون ممنون دم همتون گرم

  10. #10
    کاربر دائمی
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهرانسر_ فاز5
    پست
    317
    نقل قول نوشته شده توسط mehrzad007
    آقایون واقعا ممنونم . شرمنده که در مورد چیزی که نمی دونستم حرف زدم :oops:


    خیلی آقایی


  11. #11
    سلام
    دستتون دردنکنه ولی من هرکاری میکنم خطا میده! :cry:
    می خواستم بگم اگه میشه یه نمونه برنامه از گفته های بلا رو اینجا قرار بدین ، چون نمی دونم اشکال از ویندوزه یا از فایلی که ساختم!
    ممنون. :wink:

  12. #12
    اینم یه کد سریع السیر. دیگه به بزرگی خودتون ببخشید. :wink:

  13. #13
    سلام
    دستت در نکنه ولی موقعه باز کردن خطا میده! :?
    اگه زحمتی نیست یه نگاهی بهش بندار.
    ممنون :wink:

  14. #14
    من فایل رو دانلود کردم و مشکلی ندیدم همه چیز هم درست کار کرد (هم فایل EXE و هم فایل ویژوال بیسیک)
    وقتی فایل rar رو باز میکنی خطا میده یا موقع اجرای فایل (EXE) و یا هنگام باز کردن سورس؟

  15. #15
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    سلام
    توی .net چطوری میشه اینکاره کارد؟
    با ویبی دات نت؟

  16. #16
    آقای غیبی
    وقتی گزینه ی style دکمه ها رو 1 می کنی دکمه ها از حالت اکس پی در میان
    چه کار باید کرد :?:
    ممنون از جوابتون

  17. #17
    ببخشید که جوابتون رو دیر دادم.
    ابتدا یک Module بسازید و کد های زیر را کپی کرده و در آن paste کنید.

    Option Explicit

    ' ********** API **********

    Public Const GWL_WNDPROC = (-4)

    Public Declare Function SendMessage Lib "user32" _
    Alias "SendMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long

    Public Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" ( _
    ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long

    Public Declare Function CallWindowProc Lib "user32" _
    Alias "CallWindowProcA" ( _
    ByVal lpPrevWndFunc As Long, _
    ByVal hwnd As Long, _
    ByVal Msg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long

    Public Declare Function GetProp Lib "user32" _
    Alias "GetPropA" ( _
    ByVal hwnd As Long, ByVal lpString As String) As Long
    Public Declare Function SetProp Lib "user32" _
    Alias "SetPropA" ( _
    ByVal hwnd As Long, ByVal lpString As String, _
    ByVal hData As Long) As Long
    Public Declare Function RemoveProp Lib "user32" _
    Alias "RemovePropA" ( _
    ByVal hwnd As Long, ByVal lpString As String) As Long

    Public Declare Sub CopyMemory Lib "kernel32" _
    Alias "RtlMoveMemory" ( _
    Destination As Any, Source As Any, ByVal Length As Long)

    Public Const WM_PAINT = &HF
    Public Const WM_DESTROY = &H2
    Public Const WM_NCPAINT = &H85
    Public Const WM_MOUSEHOVER = &H2A1
    Public Const WM_MOUSELEAVE = &H2A3
    Public Const WM_MOUSEMOVE = &H200
    Public Const WM_SETFOCUS = &H7
    Public Const WM_KILLFOCUS = &H8
    Public Const WM_LBUTTONDOWN = &H201
    Public Const WM_LBUTTONUP = &H202
    Public Const WM_KEYDOWN = &H100
    Public Const WM_KEYUP = &H101
    Public Const WM_ENABLE = &HA
    Public Const WM_MOUSEACTIVATE = &H21
    Public Const BM_GETSTATE = &HF2

    Public Const BST_PUSHED = &H4
    Public Const BST_FOCUS = &H8

    Public Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type

    Public Type PAINTSTRUCT
    hdc As Long
    fErase As Long
    rcPaint As RECT
    fRestore As Long
    fIncUpdate As Long
    rgbReserved(32) As Byte
    End Type

    Public Declare Function BeginPaint Lib "user32" (ByVal hwnd As Long, lpPaint As PAINTSTRUCT) As Long
    Public Declare Function EndPaint Lib "user32" (ByVal hwnd As Long, lpPaint As PAINTSTRUCT) As Long

    Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    Public Declare Function InvalidateRect Lib "user32" ( _
    ByVal hwnd As Long, _
    lpRect As Any, _
    ByVal bErase As Long) As Long

    Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
    Public Declare Function FillRect Lib "user32" ( _
    ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
    Public Declare Function CreateBitmap Lib "gdi32" ( _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal nPlanes As Long, _
    ByVal nBitCount As Long, _
    lpBits As Any) As Long
    Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
    Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
    Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Public Declare Function InflateRect Lib "user32" ( _
    lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
    Public Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long
    Public Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
    Public Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
    Public Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function BitBlt Lib "gdi32" ( _
    ByVal hDestDC As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal hSrcDC As Long, _
    ByVal xSrc As Long, _
    ByVal ySrc As Long, _
    ByVal dwRop As Long) As Long
    Public Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long

    Public Const COLOR_BTNTEXT = 18
    Public Const COLOR_GRAYTEXT = 17

    Public Const DT_CALCRECT = &H400
    Public Const DT_CENTER = &H1
    Public Const DT_WORDBREAK = &H10

    Public Declare Function DrawText Lib "user32" Alias "DrawTextA" ( _
    ByVal hdc As Long, _
    ByVal lpStr As String, _
    ByVal nCount As Long, _
    lpRect As RECT, _
    ByVal wFormat As Long) As Long

    Type TrackMouseEvent
    cbSize As Long
    dwFlags As Long
    hwndTrack As Long
    dwHoverTime As Long
    End Type

    Public Const TME_HOVER = 1
    Public Const TME_LEAVE = 2

    Public Declare Function TrackMouseEvent Lib "user32" (lpEventTrack As TrackMouseEvent) As Long

    Const TRANSPARENT = 1

    Public Declare Function TransparentBlt Lib "msimg32" ( _
    ByVal hDCDest As Long, _
    ByVal nXOriginDest As Long, _
    ByVal nYOriginDest As Long, _
    ByVal nWidthDest As Long, _
    ByVal hHeightDest As Long, _
    ByVal hDCSrc As Long, _
    ByVal nXOriginSrc As Long, _
    ByVal nYOriginSrc As Long, _
    ByVal nWidthSrc As Long, _
    ByVal nHeightSrc As Long, _
    ByVal crTransparent As Long) As Long

    Const SM_CXFOCUSBORDER = 83
    Const SM_CYFOCUSBORDER = 84

    ' ********** Theme API **********

    Const STAP_ALLOW_CONTROLS = 2

    Public Declare Function GetThemeAppProperties Lib "uxtheme" () As Long
    Public Declare Function IsThemeActive Lib "uxtheme" () As Long

    Public Declare Function DrawThemeBackground Lib "uxtheme" ( _
    ByVal hTheme As Long, _
    ByVal hdc As Long, _
    ByVal iPartID As Long, _
    ByVal iStateID As Long, _
    pRect As RECT, _
    pClipRect As RECT) As Long

    Public Declare Function DrawThemeText Lib "uxtheme" ( _
    ByVal hTheme As Long, _
    ByVal hdc As Long, _
    ByVal iPartID As Long, _
    ByVal iStateID As Long, _
    ByVal pszText As Long, _
    ByVal iCharCount As Long, _
    ByVal dwTextFlags As Long, _
    ByVal dwTextFlags2 As Long, _
    pRect As RECT) As Long

    Public Declare Function DrawThemeEdge Lib "uxtheme" ( _
    ByVal hTheme As Long, _
    ByVal hdc As Long, _
    ByVal iPartID As Long, _
    ByVal iStateID As Long, _
    pDestRect As RECT, _
    ByVal uEdge As Long, _
    ByVal uFlags As Long, _
    pContentRect As Any) As Long

    Declare Function GetThemeTextExtent Lib "uxtheme" ( _
    ByVal hTheme As Long, _
    ByVal hdc As Long, _
    ByVal iPartID As Long, _
    ByVal iStateID As Long, _
    ByVal pszText As Long, _
    ByVal iCharCount As Long, _
    ByVal dwTextFlags As Long, _
    pBoundingRect As Any, _
    pExtentRect As RECT) As Long

    Public Declare Function IsAppThemed Lib "uxtheme" () As Long

    Public Declare Function OpenThemeData Lib "uxtheme" ( _
    ByVal hwnd As Long, _
    ByVal pszClassList As Long) As Long

    Public Declare Function CloseThemeData Lib "uxtheme" ( _
    ByVal hTheme As Long) As Long

    Public Declare Function GetThemeSysColor Lib "uxtheme" ( _
    ByVal hTheme As Long, _
    ByVal iColorId As Long) As Long

    Public Declare Function GetThemeSysSize Lib "uxtheme" ( _
    ByVal hTheme As Long, _
    ByVal iSizeId As Long) As Long
    '
    ' MakeXPButton
    '
    ' Converts a "Graphical" button to XP style
    '
    Sub MakeXPButton(ByVal Button As Object)
    Dim hwnd As Long

    On Error GoTo NoXP

    If IsThemeActive() = 0 Then Exit Sub
    If IsAppThemed() = 0 Then Exit Sub

    ' Check the object class
    If TypeOf Button Is CommandButton Or _
    TypeOf Button Is OptionButton Or _
    TypeOf Button Is CheckBox Then

    ' Only subclass if the style is Graphical
    If Button.Style = vbButtonGraphical Then

    ' Store the button object in the
    ' window and subclass it
    hwnd = Button.hwnd
    SetProp hwnd, "Button", ObjPtr(Button)
    SetProp hwnd, "WinProc", SetWindowLong(Button.hwnd, GWL_WNDPROC, AddressOf WinProc_Button)

    End If

    End If

    NoXP:

    End Sub

    '
    ' DrawButton
    '
    ' Draws a graphical button using the current
    ' XP visual style
    '
    Sub DrawButton(ByVal hwnd As Long)
    Dim hdc As Long
    Dim tPS As PAINTSTRUCT
    Dim hTheme As Long, hBR As Long
    Dim lState As Long
    Dim bChecked As Boolean, bHot As Boolean, bFocused As Boolean
    Dim bPushed As Boolean, bNoPicture As Boolean
    Dim Button As Object, lFontOld As Long
    Dim oPict As IPicture, oFont As IFont
    Dim tCR As RECT, tCRText As RECT

    On Error Resume Next

    ' Get the button object
    CopyMemory Button, GetProp(hwnd, "Button"), 4&

    ' Get the button state
    lState = SendMessage(hwnd, BM_GETSTATE, 0&, ByVal 0&)
    bChecked = Button.Value
    bHot = GetProp(hwnd, "Hot")
    bPushed = lState And BST_PUSHED
    bFocused = lState And BST_FOCUS

    ' Get the client rectangle
    GetClientRect hwnd, tCR

    ' Open the theme
    hTheme = OpenThemeData(hwnd, StrPtr("Button"))

    ' Get the button DC
    hdc = BeginPaint(hwnd, tPS)

    ' Fill the background using the
    ' parent window background because
    ' the button can have transparent parts
    hBR = CreateSolidBrush(TranslateColor(Button.Con tainer.BackColor))
    FillRect hdc, tCR, hBR
    DeleteObject hBR

    ' Set the state and picture
    If Button.Enabled = False Then

    lState = 4
    Set oPict = Button.DisabledPicture

    If oPict Is Nothing Then
    Set oPict = Button.Picture
    ElseIf oPict.Handle = 0 Then
    Set oPict = Button.Picture
    End If

    ElseIf bHot And Not bPushed Then

    lState = 2

    If bChecked Then
    Set oPict = Button.DownPicture

    If oPict Is Nothing Then
    Set oPict = Button.Picture
    ElseIf oPict.Handle = 0 Then
    Set oPict = Button.Picture
    End If
    Else
    Set oPict = Button.Picture
    End If

    ElseIf bChecked Or bPushed Then

    lState = 3

    Set oPict = Button.DownPicture

    If oPict Is Nothing Then
    Set oPict = Button.Picture
    ElseIf oPict.Handle = 0 Then
    Set oPict = Button.Picture
    End If

    ElseIf GetProp(hwnd, "Hot") = 1 Then

    lState = 2
    Set oPict = Button.Picture

    ElseIf bFocused Then

    lState = 5
    Set oPict = Button.Picture

    Else

    lState = 1
    Set oPict = Button.Picture

    End If

    If oPict Is Nothing Then
    bNoPicture = True
    ElseIf oPict.Handle = 0 Then
    bNoPicture = True
    End If

    ' Draw the button background
    DrawThemeBackground hTheme, hdc, 1, lState, tCR, tCR

    If bFocused Then

    ' Draw the focus rectangle
    tCRText = tCR
    InflateRect tCRText, -3, -3

    DrawFocusRect hdc, tCRText

    End If

    If Len(Button.Caption) Then

    ' Select the button font
    Set oFont = Button.Font
    lFontOld = SelectObject(hdc, oFont.hFont)

    ' Calculate the text size
    tCRText = tCR
    DrawText hdc, Button.Caption, -1, tCRText, DT_CALCRECT Or DT_CENTER Or DT_WORDBREAK

    tCRText.Left = tCR.Left
    tCRText.Right = tCR.Right

    If bNoPicture Then
    tCRText.Top = (tCR.Bottom - tCRText.Bottom) / 2
    tCRText.Bottom = tCRText.Top + tCRText.Bottom
    Else
    tCRText.Top = tCR.Bottom - tCRText.Bottom - 5
    tCRText.Bottom = tCR.Bottom
    End If

    ' Set the text background
    SetBkMode hdc, TRANSPARENT

    ' Set the color
    If Button.Enabled Then
    SetTextColor hdc, GetThemeSysColor(hTheme, COLOR_BTNTEXT)
    Else
    SetTextColor hdc, GetThemeSysColor(hTheme, COLOR_GRAYTEXT)
    End If

    ' Draw the text
    DrawText hdc, Button.Caption, -1, tCRText, DT_CENTER Or DT_WORDBREAK

    ' Restore the original font
    SelectObject hdc, lFontOld

    tCR.Bottom = tCRText.Top

    End If

    If Not bNoPicture Then

    Dim lW As Long, lH As Long

    ' Convert from HIMETRIC to Pixels
    lW = oPict.Width / 2540 * (1440 / Screen.TwipsPerPixelX)
    lH = oPict.Height / 2540 * (1440 / Screen.TwipsPerPixelY)

    If Button.Enabled Then

    If Button.UseMaskColor Then
    ' Draw the image using the mask color
    DrawTransparentPicture oPict, hdc, (tCR.Right - lW) / 2, (tCR.Bottom - lH) / 2, lW, lH, Button.MaskColor
    Else
    ' Draw the image without using the mask color
    oPict.Render hdc, (tCR.Right - lW) / 2, (tCR.Bottom - lH) / 2 + lH, lW, -lH, _
    0, 0, oPict.Width, oPict.Height, ByVal 0&
    End If

    Else

    ' Draw the image in disabled mode
    DrawDisabledPicture oPict, hdc, (tCR.Right - lW) / 2, (tCR.Bottom - lH) / 2, _
    lW, lH, Button.MaskColor

    End If

    End If

    ' Release button object
    CopyMemory Button, 0&, 4&

    ' Release the DC
    EndPaint hwnd, tPS

    ' Close the theme
    CloseThemeData hTheme

    End Sub

    '
    ' DrawTransparentPicture
    '
    ' Draws a transparent picture
    '
    Public Sub DrawTransparentPicture( _
    ByVal picSource As Picture, _
    ByVal hDCDest As Long, _
    ByVal xDest As Long, _
    ByVal yDest As Long, _
    ByVal cxDest As Long, _
    ByVal cyDest As Long, _
    ByVal clrMask As Long, _
    Optional ByVal xSrc As Long, _
    Optional ByVal ySrc As Long, _
    Optional ByVal cxSrc As Long, _
    Optional ByVal cySrc As Long)

    Dim hDCSrc As Long, hDCScreen As Long
    Dim hbmOld As Long

    If picSource Is Nothing Then Exit Sub
    If picSource.Type <> vbPicTypeBitmap Then Exit Sub

    If cxSrc = 0 Then cxSrc = cxDest
    If cySrc = 0 Then cySrc = cyDest

    hDCScreen = GetDC(0&)

    ' Select passed picture into an HDC
    hDCSrc = CreateCompatibleDC(hDCScreen)
    hbmOld = SelectObject(hDCSrc, picSource.Handle)

    ' Draw the bitmap in the destination DC
    TransparentBlt hDCDest, xDest, yDest, cxDest, cyDest, hDCSrc, xSrc, ySrc, cxSrc, cySrc, clrMask

    ' Restore the original bitmap
    SelectObject hDCSrc, hbmOld

    ' Release the DCs
    DeleteDC hDCSrc
    ReleaseDC 0&, hDCScreen

    End Sub

    '
    ' DrawDisabledPicture
    '
    ' Draws a picture in B&W
    '
    Public Sub DrawDisabledPicture( _
    ByVal picSource As Picture, _
    ByVal hDCDest As Long, _
    ByVal xDest As Long, _
    ByVal yDest As Long, _
    ByVal cxDest As Long, _
    ByVal cyDest As Long, _
    ByVal MaskColor As Long)
    Dim hDCSrc As Long, hDCScreen As Long, hDCBW As Long
    Dim lBMPBW As Long, lBMPOld As Long

    If picSource Is Nothing Then Exit Sub
    If picSource.Type <> vbPicTypeBitmap Then Exit Sub

    hDCScreen = GetDC(0&)

    ' Select passed picture into an HDC
    hDCSrc = CreateCompatibleDC(hDCScreen)
    lBMPOld = SelectObject(hDCSrc, picSource.Handle)

    ' Create a B&W picture
    hDCBW = CreateCompatibleDC(hDCScreen)
    lBMPBW = CreateBitmap(cxDest, cyDest, 1, 1, ByVal 0&)
    DeleteObject SelectObject(hDCBW, lBMPBW)

    ' Set the source background to white
    ' When you use BitBlt to copy from a
    ' color to a B&W bitmap, windows
    ' will convert all pixels matching
    ' the source background color to white
    ' and everything else to black
    SetBkColor hDCSrc, MaskColor

    BitBlt hDCBW, 0, 0, cxDest, cyDest, hDCSrc, 0, 0, vbSrcCopy

    ' Draw the image using white
    ' as the transparent color
    TransparentBlt hDCDest, xDest, yDest, cxDest, cyDest, hDCBW, 0, 0, cxDest, cyDest, vbWhite

    SelectObject hDCSrc, lBMPOld

    DeleteDC hDCBW
    DeleteDC hDCSrc
    ReleaseDC 0&, hDCScreen

    End Sub


    '
    ' TranslateColor
    '
    ' Converts an OLE_COLOR to RGB
    '
    Function TranslateColor(ByVal Clr As OLE_COLOR)

    If (Clr And &H80000000) = &H80000000 Then
    TranslateColor = GetSysColor(Clr And &HFF)
    Else
    TranslateColor = Clr
    End If

    End Function

    '
    ' WinProc_Button
    '
    ' Button window procedure
    '
    Public Function WinProc_Button( _
    ByVal hwnd As Long, _
    ByVal Msg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long
    Dim tTME As TrackMouseEvent
    Dim lProc As Long

    ' Get the previous window procedure
    lProc = GetProp(hwnd, "WinProc")

    Select Case Msg

    Case WM_NCPAINT
    ' Do nothing
    Exit Function

    Case WM_PAINT

    ' Draw the button
    DrawButton hwnd
    Exit Function

    Case WM_DESTROY

    ' Unsubclass the window
    SetWindowLong hwnd, GWL_WNDPROC, lProc
    RemoveProp hwnd, "WinProc"
    RemoveProp hwnd, "Button"

    End Select

    ' Call the previous window procedure
    WinProc_Button = CallWindowProc(lProc, hwnd, Msg, wParam, lParam)

    Select Case Msg

    Case WM_MOUSEHOVER

    ' Mouse is over the button

    SetProp hwnd, "Hot", 1

    ' Redraw the button
    DrawButton hwnd

    Case WM_MOUSELEAVE

    ' Mouse has left the button

    RemoveProp hwnd, "Hot"
    DrawButton hwnd

    Case WM_MOUSEMOVE

    If GetProp(hwnd, "Hot") = 0 Then

    tTME.cbSize = LenB(tTME)
    tTME.hwndTrack = hwnd
    tTME.dwFlags = TME_HOVER Or TME_LEAVE
    tTME.dwHoverTime = 1

    TrackMouseEvent tTME

    End If

    Case WM_SETFOCUS, WM_KILLFOCUS, _
    WM_LBUTTONDOWN, WM_LBUTTONUP, _
    WM_KEYDOWN, WM_KEYUP, _
    WM_ENABLE, WM_MOUSEACTIVATE

    ' Draw the button
    DrawButton hwnd

    End Select

    End Function


    حالا برای استفاده از این کد میبایست در فرم مورد نظر خود از کد زیر استفاده نمایید.

    MakeXPButton نام کنترل مورد نظر

    مثل

    MakeXPButton cmdtest


    در این حالت اگر حالت style روی graphical تنظیم شده باشد هم دکمه به ستایل XP نمایش داده میشود.
    امیدوارم مشکلتان حل شده باشد. :wink:

  18. #18
    سلام
    توی .net چطوری میشه اینکاره کارد؟
    با ویبی دات نت؟
    جناب لینوکس شرمندم که دیر جواب رو دادم (خب اول نمیدونستم) با کمی گشت و گذار در اینترنت جواب رو پیدا کردم.
    در زمان ساخت نرم افزار خود خصوصیت FlatStyle کنترل مورد نظر خود را به System تغییر دهید.
    پس از ساخت فایل exe (که در پوشه Debug ساخته میشود)، برنامه notepad را باز کرده و کد زیر را در آن paste کنید:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

    <assemblyIdentity

    version="1.0.0.0"

    processorArchitecture="X86"

    name="Microsoft.Winweb.test"

    type="win32"

    />

    <description>.NET control deployment tool</description>

    <dependency>

    <dependentAssembly>

    <assemblyIdentity

    type="win32"

    name="Microsoft.Windows.Common-Controls"

    version="6.0.0.0"

    processorArchitecture="X86"

    publicKeyToken="6595b64144ccf1df"

    language="*"

    />

    </dependentAssembly>

    </dependency>

    </assembly>

    توجه داشته باسد که به جای عبارت "نام فایل اجرایی"، نام فایل اجرایی برنامه خود را (بدون پسوند) بنویسید. سپس این فایل را با نام زیر در پوشه Debug (منظور پوشه ایست که فایل اجرایی در آن قرار دارد) ذخیره کنید:

    نام فایل اجرایی.exe.manifest

    در اینجا نیز به جای عبارت "نام فایل اجرایی" نام برنامه خود را بنویسید.
    حالا برنامه خود را اجرا کرده و حالش رو ببرید. :wink:

  19. #19
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    ممنون!
    منم اینو پیدا کردم تو msdn مرسی از لطفتون

  20. #20
    می شه یه لطفی بکنید و اینایی رو که توضیح دادین تو یک برنامه بزارید :oops: البته اگه می شه تو کدش برای هر کدوم توضیح داده بشه که برای چیه :oops: :oops:

  21. #21
    + نشون دادن برنامه به صورت نهایی در موقع اجرا F5 :oops:

  22. #22
    آقا احسان این کدها مربوط به XML هست که اگه خواستی اطلاعات بیشتری کسب کنی فکر کنم بهتر باشه در قسمت XML سوال خودتون رو مطرح کنید. در ضمن من میتونم نمونه براتون درست کنم ولی شرمنده چون دیگه امکان آپلودم تمام شده :cry: . با این حال اگه چیزه دیگه ای بود من در خدمتم. :)

  23. #23

    Grphical Style

    وقتی استایل دکهمه ها رو گرافیکال می کنیم دکمه ها مثل 98 می شود
    راه حل را برایم بگویید

  24. #24
    وقتی استایل دکهمه ها رو گرافیکال می کنیم دکمه ها مثل 98 می شود
    راه حل را برایم بگویید
    من که کدش رو نوشتم. شش پست بالاتر، دقیقاً بعد از پست قبلیتون.
    اگه مشکلی بود بگویید. :wink:

  25. #25
    سلام و ممنون
    در مورد سایر کنترل ها و کامپوننتها چطور ؟ آیا همین روش جواب میده؟
    منظورم اینه که مثلا اگه از یه کامپوننت button دیگه ای استفاده کنم.

  26. #26

  27. #27
    منظورم اینه که مثلا اگه از یه کامپوننت button دیگه ای استفاده کنم.
    نه برای همه کنترلها. ولی معمولا جواب می دهد.
    برای کنترل هایی که از فایل mscomctl.ocx یا COMCTL.OCX استخراج میشن مثل TabStrip یا ProgressBar و یا غیره باید چیکار کرد ؟
    برای استفاده از COMCTL.OCX شما نیاز به فایل COMCTL32.OCX دارید که میتونید از آدرس زیر دانلود کرده و آن را به روش زیر رجیستر کنید. در این صورت مانند کنترل های دیگر به شکل XP در می آید.
    Windows 95, 98, or Me:
    regsvr32 \windows\system\COMCTL32.OCX

    Windows NT or 2000:
    regsvr32 \WINNT\system32\COMCTL32.OCX

    Windows XP:
    regsvr32 \windows\system32\COMCTL32.OCX

    دقت داشته باشید که بعد و قبل از آدرس فایل یک فاصله وجود دارد.

    آدرس فایل :
    http://www.ascentive.com/support/new...b/COMCTL32.OCX

    در ضمن تفاوت بین کنترل های mscomctl و COMCTL32 تنها در ComboImage هست که این کنترل (موجود در mscomctl) به راحتی با روشهای پیشین به XP Style تبدیل میشود.

  28. #28
    سلام.
    من پست ها رو کامل نخوندم . ولی این برنامرو وقتی exe بکنید دیگه به Test.exe.manifestهم نیازی نیست. و اما برای عکس دکمه ها میتونید از کامپوننت KewlButtonz استفاده کنید.

  29. #29
    این برنامرو وقتی exe بکنید دیگه به Test.exe.manifestهم نیازی نیست
    دوست عزیز مطمئنا فایل XP.Manifest موجود در فایل ارسالی خودتون رو دیدید.
    برنامه ارسالی شما تنها فرقی که با پستهای قبلی دارد این است که فایل Manifest را به شکل Resource در خود نگاه داری میکند. بدین معنا که دیگر نیازی به ساخت فایل جدا ندارید. ===> در عمل یکی است.
    برای عکس دکمه ها میتونید از کامپوننت KewlButtonz استفاده کنید
    هدف استفاده کمتر از Control ها و فایلهای OCX اضافیست. وقتی میشه از منابع خود ویندوز استفاده کرد دیگه نباید سراغ کامپوننت های اضافی رفت.

  30. #30

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •