我想的第一个方法:使用BS_COWNERDRAW风格的子窗口
遇到的问题:这个窗口骨子里是方的,虽然可以不画出边框。鼠标移如方形区它就有反映了。我想的第二个方法:使用BS_COWNERDRAW风格的子窗口,画一个看似圆骨子里是方的按钮,CreateEllipticRgn();做一个圆形的区域,用PtInRegion();来判断鼠标是否移入圆域。
遇到的问题:CreateEllipticRgn();和PtInRegion();至少有一个不灵,是不是我还缺什么函数没用。我想的第三个方法:生画一个圆,用CreateEllipticRgn();和PtInRegion();
遇到的问题:除了和第二个一样的以外还多出了画图的问题。请各位有经验做过类似东西的人指条明路。

解决方案 »

  1.   

    《windows 程序设计》有详细讲解。
      

  2.   

    http://www.vccode.com/file/20020702171417_round_buttons.zip
    ButtunControl
      

  3.   

    http://www.vckbase.com/
    http://www.vchelp.net/
    http://www.codeproject.com/
    上都有
      

  4.   

    样子:
    http://www.vccode.com/images/controls_button_008_1.gif
      

  5.   

    我有做好的一个类
    直接可用
    [email protected]
      

  6.   

    MFC我不会,我想用SDK做,有没有不是MFC的原码。
      

  7.   

    《windows 程序设计》中对话框部分,好象是在一个About的例子中,你查查
      

  8.   

    楼主自己的第二种方法应该是可取的,你可能在用PtInRegion()时没有将客户区的点与屏幕点对应好,用ClientToScreen与ScreenToClient进行转换