如题!

解决方案 »

  1.   

    VB原装的命令按钮文字颜色受系统设置的控制。
    添加Microsoft Forms 2.0 Object Library控件组,其中的commandbutton可以自由设置文字颜色。
      

  2.   

    采用API函数也可以达到目的。
      

  3.   

    用Microsoft Forms 2.0 Object Library
      

  4.   

    添加Microsoft Forms 2.0 Object Library控件组,其中的commandbutton可以自由设置文字颜色。
      

  5.   

    在VB中更改command上文字的颜色
    作者:不详 --------------------------------------------------------------------------------
     
    Change the ForeColor of the text in a command button. 
    Option ExplicitPrivate Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End TypePrivate Declare Function GetParent Lib "user32" _
    (ByVal hWnd As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias _
    "GetWindowLongA" (ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias _
    "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
    Private Const GWL_WNDPROC = (-4)Private Declare Function GetProp Lib "user32" Alias "GetPropA" _
    (ByVal hWnd As Long, ByVal lpString As String) As Long
    Private Declare Function SetProp Lib "user32" Alias "SetPropA" _
    (ByVal hWnd As Long, ByVal lpString As String, _
    ByVal hData As Long) As Long
    Private Declare Function RemoveProp Lib "user32" Alias _
    "RemovePropA" (ByVal hWnd As Long, _
    ByVal lpString As String) As LongPrivate 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 LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As Any, Source As Any, ByVal Length As Long)注释:Owner draw constants
    Private Const ODT_BUTTON = 4
    Private Const ODS_SELECTED = &H1
    注释:Window messages we注释:re using
    Private Const WM_DESTROY = &H2
    Private Const WM_DRAWITEM = &H2BPrivate Type DRAWITEMSTRUCT
    CtlType As Long
    CtlID As Long
    itemID As Long
    itemAction As Long
    itemState As Long
    hwndItem As Long
    hDC As Long
    rcItem As RECT
    itemData As Long
    End TypePrivate Declare Function GetWindowText Lib "user32" Alias _
    "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, _
    ByVal cch As Long) As Long
    注释:Various GDI painting-related functions
    Private 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
    Private Declare Function SetTextColor Lib "gdi32" (ByVal hDC As Long, _
    ByVal crColor As Long) As Long
    Private Declare Function SetBkMode Lib "gdi32" (ByVal hDC As Long, _
    ByVal nBkMode As Long) As Long
    Private Const TRANSPARENT = 1Private Const DT_CENTER = &H1
    Public Enum TextVAligns
    DT_VCENTER = &H4
    DT_BOTTOM = &H8
    End Enum
    Private Const DT_SINGLELINE = &H20
    Private Sub DrawButton(ByVal hWnd As Long, ByVal hDC As Long, _
    rct As RECT, ByVal nState As Long)Dim s As String
    Dim va As TextVAlignsva = GetProp(hWnd, "VBTVAlign")注释:Prepare DC for drawing
    SetBkMode hDC, TRANSPARENT
    SetTextColor hDC, GetProp(hWnd, "VBTForeColor")注释:Prepare a text buffer
    s = String$(255, 0)
    注释:What should we print on the button?
    GetWindowText hWnd, s, 255
    注释:Trim off nulls
    s = Left$(s, InStr(s, Chr$(0)) - 1)If va = DT_BOTTOM Then
    注释:Adjust specially for VB注释:s CommandButton control
    rct.Bottom = rct.Bottom - 4
    End IfIf (nState And ODS_SELECTED) = ODS_SELECTED Then
    注释:Button is in down state - offset
    注释:the text
    rct.Left = rct.Left + 1
    rct.Right = rct.Right + 1
    rct.Bottom = rct.Bottom + 1
    rct.Top = rct.Top + 1
    End IfDrawText hDC, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE _
    Or vaEnd SubPublic Function ExtButtonProc(ByVal hWnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As LongDim lOldProc As Long
    Dim di As DRAWITEMSTRUCTlOldProc = GetProp(hWnd, "ExtBtnProc")ExtButtonProc = CallWindowProc(lOldProc, hWnd, wMsg, wParam, lParam)If wMsg = WM_DRAWITEM Then
    CopyMemory di, ByVal lParam, Len(di)
    If di.CtlType = ODT_BUTTON Then
    If GetProp(di.hwndItem, "VBTCustom") = 1 Then
    DrawButton di.hwndItem, di.hDC, di.rcItem, _
    di.itemStateEnd IfEnd IfElseIf wMsg = WM_DESTROY Then
    ExtButtonUnSubclass hWndEnd IfEnd FunctionPublic Sub ExtButtonSubclass(hWndForm As Long)Dim l As Longl = GetProp(hWndForm, "ExtBtnProc")
    If l <> 0 Then
    注释:Already subclassed
    Exit Sub
    End IfSetProp hWndForm, "ExtBtnProc", _
    GetWindowLong(hWndForm, GWL_WNDPROC)
    SetWindowLong hWndForm, GWL_WNDPROC, AddressOf ExtButtonProcEnd SubPublic Sub ExtButtonUnSubclass(hWndForm As Long)Dim l As Longl = GetProp(hWndForm, "ExtBtnProc")
    If l = 0 Then
    注释:Isn注释:t subclassed
    Exit Sub
    End IfSetWindowLong hWndForm, GWL_WNDPROC, l
    RemoveProp hWndForm, "ExtBtnProc"End SubPublic Sub SetButtonForecolor(ByVal hWnd As Long, _
    ByVal lForeColor As Long, _
    Optional ByVal VAlign As TextVAligns = DT_VCENTER)Dim hWndParent As LonghWndParent = GetParent(hWnd)
    If GetProp(hWndParent, "ExtBtnProc") = 0 Then
    ExtButtonSubclass hWndParent
    End IfSetProp hWnd, "VBTCustom", 1
    SetProp hWnd, "VBTForeColor", lForeColor
    SetProp hWnd, "VBTVAlign", VAlignEnd SubPublic Sub RemoveButton(ByVal hWnd As Long)RemoveProp hWnd, "VBTCustom"
    RemoveProp hWnd, "VBTForeColor"
    RemoveProp hWnd, "VBTVAlign"End Sub
    To use this, set the target command button注释:s Style property to 1 - GraphicalEXAMPLES:To set command button forecolor(doesn注释:t have to be in form_load)Private Sub Form_Load()
    SetButtonForecolor Command1.Hwnd, vbBlue
    End SubThat will set Command1注释:s Forecolor to BlueTo remove the color(can be put anywhere)Private Sub Command2_Click()
    RemoveButton Command1.Hwnd
    Command1.Refresh
    End Sub 
      

  6.   

    是需要这样吗?
    不知道VB的BUTTON按钮的图片属性是干什么用的?
    你设好了图片属性,再设字体颜色和背景颜色看看是什么效果!!
    :P
      

  7.   

    hehe  
    要写那么长的代码/不是吧
    还是用属性好了
      

  8.   

    楼上说的对呀,这么累,不如做个Picture1,把它认做按扭不就得了,想要怎样就怎样。
      

  9.   

    http://www.china-askpro.com/msg31/qa50.shtml
      

  10.   

    不要用Form2.0.很不稳定!而且出错机率很大.亲身体会.呵呵.