+ -
当前位置:首页 → 问答吧 → 如何改变ComboBox组合框中edit和小三角的宽度,高手来啊,谢谢!

如何改变ComboBox组合框中edit和小三角的宽度,高手来啊,谢谢!

时间:2011-12-02

来源:互联网

问题详述:
ComboBox由edit控件和小三角btn组成(简称btn),不改变ComboBox控件高度时,btn的宽度和高度都是17个像素
用ComboBox的成员函数SetItemHeight(-1,24)设置后,edit的高度是24,btn的高度是26,但是btn的宽度仍然是17。
贴部分代码
void CWEComboBox::OnPaint()
{
CPaintDC dc(this);
CRect rectCombo;
CBrush brushInser, brushOuter;
COMBOBOXINFO comboInfo;
CString strShow;

//获取控件信息

GetWindowText(strShow);
comboInfo.cbSize = sizeof(COMBOBOXINFO);
GetComboBoxInfo(&comboInfo);
comboInfo.rcItem.right -= 9;
comboInfo.rcButton.left -= 9; if(comboInfo.stateButton==8)
{
m_stateDownBtn = DOWN;
}else if(m_stateDownBtn!=OVER)
{
m_stateDownBtn = NORMAL;
}

//设置重绘区域
GetClientRect(rectCombo);

//创建画刷
brushInser.CreateSolidBrush(RGB(255, 255, 255));
brushOuter.CreateSolidBrush(RGB(182, 126, 31));

//重绘
dc.FillRect(rectCombo, &brushInser);
dc.FrameRect(rectCombo, &brushOuter);
DrawPicture(&dc, m_stateDownBtn, comboInfo.rcButton);
DrawShowText(&dc);


}



其中红色的调整btn使宽高都变成26,方便加载位图,编译运行后,看起来没什么问题,但是我在ComboBox选择一个值后,点击下面,edit和btn就恢复他们的宽度,使我加载的位图只显示一部分,另一部分是空白,希望高手指点下,万分感谢!

作者: nearcheng   发布时间: 2011-12-02

子类化 Combobox 控件在 OnDraw里面进行重绘。。。

作者: shen_wei   发布时间: 2011-12-02

我子类化Combobox 在void CWEComboBox::OnPaint()里重绘的,我试试

作者: nearcheng   发布时间: 2011-12-02

控件里没有OnDraw啊……

作者: nearcheng   发布时间: 2011-12-02

子类化 Combobox 控件在 DrawItem()函数里面绘制;

作者: jc5566   发布时间: 2011-12-02

to jc5566
  你的方法不行,刚试过了

作者: nearcheng   发布时间: 2011-12-02

按钮的宽度改变了,点击的时候可以超过默认17的宽度出现下拉框吗?

作者: jc5566   发布时间: 2011-12-02

combobox我做过重绘,没有遇到过你这样的问题;

作者: jc5566   发布时间: 2011-12-02

to jc5566
  我的就在于btn的宽度改不过来,始终17,我的操作:
   
  btn.left -= 9;
  edit.right -= 9;
  这样重绘 btn上加载位图正常(既宽度26),但是点击btn选择后,点击其他地方,只显示btn默认的17像素的宽度。

作者: nearcheng   发布时间: 2011-12-02

我这边贴图没问题,就是按钮宽度大于17的时候点击,下拉列表出不来。
你把你的程序发我一份,我帮你看看吧,估计是刷新的时候获取的大小改变了。

作者: jc5566   发布时间: 2011-12-02

作者: jc5566   发布时间: 2011-12-02

热门下载

更多