我是自己写的BUTTON类,现在的情况是:当输入焦点从它转移到同父窗口的其它按钮上面时,这个Default按钮还是具有粗边框,和XP操作系统不一致,请问这是什么原因?

解决方案 »

  1.   

    在botton类的DrawItem里边// 如果父窗口里的其它控件都没有获得输入焦点,那么绘制粗边框的default按钮
    if( GetParent()->GetFocus() == NULL )
    {
       //绘制粗边框的default按钮
    }这样行吗?
      

  2.   

    应该这样
    bFocus = lpDrawItemStruct->itemState & ODA_FOCUS
      

  3.   

    错了,是
    bFocus = lpDrawItemStruct->itemState & ODS_FOCUS
      

  4.   

    晕,看来我没有把意思表达清楚
    绘制FOCUS虚线很简单,我是说Default按钮的绘制,你随便打开一个系统的窗口,按TAB键,就会发现
    default按钮并不是一直具有保持default风格的而我的却一直是default风格
      

  5.   

    Default按钮始终具有Focus风格,
      

  6.   

    什么是default风格阿?我遇到一个有关焦点的问题,大家看看和楼主的问题是不是一样;
    例如有2个按钮a和b,我要实现的功能是按a后焦点自动到b上去,按b后焦点就自动到a上去,
    我在ab2按钮中对应的click事件里分别调用b.SetFocus()、a.SetFocus();这样的效果是按钮上的虚线框可以正确的切换,但是按钮周围的实线框却没有正确的切换,请问那个实线框是个什么东东阿?好像虚线框和实线框不在同一个按钮上就不能正常的响应  Enter 键。
      

  7.   

    嗯,我昨天也问过一个相同的问题。人家回答后,我的理解是这样的
    default按钮的粗边框不属于输入焦点,虚线框才是输入焦点,也就是使用setfocus得到的。
    而粗边框是默认属性,可以使用setbuttonstyle改变。“回车对应缺省按钮,空格对应焦点按钮”并且
    输入焦点和默认属性可以不在同一个按钮上,这是我试验了的。