发现个问题,BS_OWNERDRAW的值是0x0B,而不是只有一个bit的值,这样导致直接用BS_OWNERDRAW & GetButtonStyle()就不对了,不知道大家有没有好的解决办法,最好代码可以同时适用于Windos XP 和WinCE,谢谢

解决方案 »

  1.   

    if ((BS_TYPEMASK & GetButtonStyle()) == BS_OWNERDRAW)
    {
    }
      

  2.   

    其实直接这样就可以:
    if (GetButtonStyle() == BS_OWNERDRAW)
    GetButtonStyle返回的就是按钮类型。如果用GetStyle之类的函数取控件风格的时候才需要BS_TYPEMASK &。
      

  3.   

    你的VC和SDK版本太旧了,BS_TYPEMASK就是0xf,可以自己定义。不过前面已经说了,GetButtonStyle返回的就是按钮类型,不需要在“与”BS_TYPEMASK了。
      

  4.   

    VC下面是没有问题的,但是WinCE下GetButtonStyle有时候返回值等于(BS_OWNERDRAW-1)
      

  5.   

    没做过CE下的程序。你可以换成用GetStyle或者GetWindowLong来取按钮风格,然后“与”0xf看看结果对不对。
      

  6.   

    根据我的测试在WinCE模拟器下用(GetButtonStyle() == BS_OWNERDRAW)有问题,在设备上就可以