首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

为什么SetTextColor没有用阿?解决方法

2012-02-14 
为什么SetTextColor没有用阿?我想给按钮字体改变颜色,想用SetWindowLong自定义窗口过程以处理WM_DRAWITEM

为什么SetTextColor没有用阿?
我想给按钮字体改变颜色,想用SetWindowLong自定义窗口过程以处理WM_DRAWITEM消息,从而用SetTextColor改变颜色,冗长的API和常量声明就不写了,以下代码是主要的代码:
标准模块里:
Global   prevProc   As   Long
Global   gHW   As   Long
Global   gHcmd   As   Long
Global   CtrlID   As   Long

Public   Sub   hook()
        prevProc   =   SetWindowLong   _
                              (gHW,   GWL_WNDPROC,   AddressOf   DrawButtonProc)
End   Sub
Private   Function   DrawButtonProc(ByVal   hWnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long
        Dim   di   As   DRAWITEMSTRUCT
        If   wMsg   =   WM_DRAWITEM   Then
                  CopyMemory   di,   ByVal   lParam,   Len(di)               '要得到的结构体
                  If   CtrlID   =   di.CtlID   And   ODT_BUTTON   =   di.CtlType   Then

                        SetTextColor   di.hdc,   RGB(0,   0,   255)

                  End   If
        End   If
        DrawButtonProc   =   CallWindowProc(prevProc,   gHW,   wMsg,   wParam,   lParam)
End   Function

窗体模块里面
Private   Sub   Form_Activate()
        hook
End   Sub

Private   Sub   Form_Load()
        gHW   =   Me.hWnd
        gHcmd   =   Command1.hWnd
        CtrlID   =   GetDlgCtrlID(gHcmd)
        Call   SendMessage(Command1.hWnd,   BM_SETSTYLE,   BS_OWNERDRAW,   False)
End   Sub
求各位大侠指导,不胜感激

[解决办法]
http://blog.csdn.net/hhfh/archive/2006/11/29/1419163.aspx

是不没有把sytle设置成graphic
[解决办法]
another link:
http://vbnet.mvps.org/index.html?code/intrinsic/buttoncolorcheck.htm
[解决办法]
http://www.china-askpro.com/msg31/qa50.shtml
[解决办法]
高兴地得知你解决了问题。我所看到的例子都是在处理WM_DRAWITEM之前先调用CallWindowProc(lOldProc, hWnd, wMsg, wParam, lParam)。
另外,可能CommandButton不会接受XP Theme Style了。

热点排行