现在为了方便,我只需要调用CButton::SetIcon在按钮上显示出图标原始大小和纵横比就可以了,以下是代码:CButton lcb_qyjs;lcb_qyjs.Attach(::GetDlgItem(this->m_hWnd,IDC_BUTTON_QYJS));
lcb_qyjs.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON2));
lcb_qyjs.Detach();现在在界面的button中可以显示出ico图标了,可是发现一个问题,我做的这个ico图标大小为128 X 170像素的,现在在按钮上显示出来以后明显小了很多,而且纵横比也不对,弄得ico上面的字都看不清楚,这是怎么回事了,有没有办法,可以把ico图标的原始大小和纵横比显示在界面上了?是我的代码没对吗?先在这里谢谢大家的热心回复了。

解决方案 »

  1.   

    你用CBitmapButton就好了,然后调用他的CBitmapButton::SizeToContent 
      

  2.   

    貌似要设置按钮的style中设置为icon属性
      

  3.   


    问下1楼用CBitmapButton类会不会有这个问题,我做成的icon背景是透明的,用CBitmapButton需要把ico转成bmp,显示出来的时候bmp好像背景不能透明吧,这个问题怎么解决了。
      

  4.   

    自已顶下,问下是不是cbutton的seticon函数只能做到这样,不能设置大小啊,而CBitmapButton的bmp又不支持背景透明,刚才在看网上看到有个叫CButtonST类有源代码可以用,我下了这个源代码把BtnST.h和BtnST.cpp都加进了我的项目,但是编译时报错很多,我用的是VC2008,有谁可以告诉我,要怎样才能在VC2008中正确使用啊?
      

  5.   

    CButtonST好象不是UNICODED的,你改成UNICODE的试试.
    你弄张小点的ICON不就行了,这么大的要显示也就得缩放
    实在不成,自己重绘按钮
      

  6.   

    哎,又想好看,又想简单,哪有这么好的事?
    你要很好看界面需要定制的
    简单的设置当然满足不了你的要求,我建议用ButtonST或者自己自绘
      

  7.   

    楼主的朋友啊,问题我现在下的CButtonST不能在VC2008里面用,不知道是我自已没用对还是什么原因,btn.h和btn.cpp加进去了,又报错的,说什么宏定义重复,好像又有函数不对,我现在就想问下CButtonST,谁在VC2008里面用过的,麻烦给个可用的源代码下载,再给个具体的使用方法,万分感谢啊。
      

  8.   

    CButtonBT在VC2008里可以用了,上面问题已解决。现在又出新问题让我郁闷,网上下的免费CButtonST类的代码,可能是老版本的,里面的SetIcon成员函数,只支持两个SetIcon函数的重载形式,没有新的DWORD SetIcon(int nIconIn, int nCxDesiredIn, int nCyDesiredIn, int nIconOut = NULL, int nCxDesiredOut = 0, int nCyDesiredOut = 0),这个成员函数的实现, 在这里求一下各位大侠和朋友,在哪里可以找到支持这个函数的CButtonST类的版本可以用的啊,知道的万分感谢提供一个下载地址吧。另外听人说这个CButtonST类,好像还是收费的,问下支持我需要的这个SetIcon函数的版本还有免费的吗?外国人的东西,好贵啊。
    在这里再次感谢大家的热心帮助。
      

  9.   

    http://www.codeproject.com/KB/buttons/cbuttonst.aspx 
    看这个行不行。帮你找了很久。 
    我一般编程序不做美化,所以这种类也没用过... 
    呵呵