我想实现这样的功能:
捕获按键消息,当键盘按下时设置一个butoon为红色,弹起时设置button为绿色。使用MFC自带的好像没办法搞,之前发帖有朋友指点用CButtonST,可我试验了一下没效果。
我知道是我用法不对,所以恳请用过的朋友们指点一下了~~,贴点实例代码最好了~~另外如果有朋友知道用MFC的button类可以实现的话也麻烦指点一下,小弟先谢过了

解决方案 »

  1.   

    CButtonST中应该可以设置按钮颜色,你在键盘按下时,修改对应的颜色,同时重画按钮,弹起时再设置另一个颜色,重画---可能还要你修改一些CButtonST实现等,可以参考它的代码
      

  2.   

        用MFC应该可以实现的,让按钮相应相应的消息,在消息中进行设置.
      

  3.   

    给你个提示,是不是要自己拦截窗口消息,处理WM_KEYDOWN 和WM_KEYUP,
    或者你可以使用CWnd::OnKeyDown 和 CWnd::OnKeyUp  试一试.
    具体用法查看一下msdn
      

  4.   

    CButtonST::SetColor
      DWORD SetColor(BYTE byColorIndex, COLORREF crColor, BOOL bRepaint = TRUE)
      注释:
      调用此函数可以设置按钮在各种状态下显示指定的底色。
      参数:
      byColorIndex : 状态索引值。具体含义可以参见OffsetColor函数中的参数(byColorIndex)说明。
      crColor : 颜色值。设置按钮指定状态的底色。
      bRepaint: 值为TRUE则马上重绘按钮。
      返回值:
      BTNST_OK: 函数执行成功。
      BTNST_INVALIDINDEX: 无效的状态索引值。
      

  5.   

    初始化的时候使用下面函数就可以了:
    // TODO: Add extra initialization here
    m_btnST.SetActiveBgColor(RGB(0,0,255));//设置鼠标放上去的颜色 m_btnST.SetInactiveBgColor(RGB(255,0,255));//设置鼠标未放上去的颜色
    m_btnST为CButtonST对象
      

  6.   


    void SetButtonColor(CButtonST* btn)
    {
    btn->SetColor(CButtonST::BTNST_COLOR_BK_OUT, RGB(40, 35, 252)); // 鼠标没进入时背景色
    btn->SetColor(CButtonST::BTNST_COLOR_BK_IN, RGB(140, 169, 250)); // 鼠标进入背景色
    btn->SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, RGB(140, 169, 250)); // 获得焦点背景色
    btn->SetColor(CButtonST::BTNST_COLOR_FG_OUT, RGB(255, 255, 255));  // 相应的前景色...
    btn->SetColor(CButtonST::BTNST_COLOR_FG_IN, RGB(255, 255, 255));
    btn->SetColor(CButtonST::BTNST_COLOR_FG_FOCUS, RGB(255, 255, 255));
    }
      

  7.   

    用mfc 好像不能直接设置颜色 可以设置button的Owner Draw属性  然后在drawItem里面画两种状态 设置两个bool型变量 分别在buttondown和buttonup的时候设置为true就ok了
      

  8.   

    CButtonST参考