MFC 下拉列表里头的字太长了,显示不完
MFC 下拉列表里面的字太长了,显示不完
如题 下拉列表里面的字太长了显示不完 求帮忙高手解决
------解决方案--------------------
void TH::ResetCtrlWidth( CComboBox *lpCtrl )
{
CString str;
int dx = 0;
CSize sz;
CDC *pDC = lpCtrl->GetDC();
CFont *pOldFont = pDC->SelectObject(lpCtrl->GetFont());
for (int i = 0; i < lpCtrl->GetCount(); i++)
{
lpCtrl->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
if (sz.cx > dx)
{
dx = sz.cx;
}
}
lpCtrl->SetDroppedWidth(dx+24);
pDC->SelectObject(pOldFont);
lpCtrl->ReleaseDC(pDC);
}
// 根据文本长度自动调整宽度
------解决方案--------------------
2楼的应该没错
------解决方案--------------------
设置tooltip 调用函数SetToolTip
------解决方案--------------------
好吧,给你补上这个。我这是继承CComboBox实现重绘的
class XComboBox : public CComboBox
{
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lp);
virtual void MeasureItem(LPMEASUREITEMSTRUCT lp);
};
如题 下拉列表里面的字太长了显示不完 求帮忙高手解决
------解决方案--------------------
void TH::ResetCtrlWidth( CComboBox *lpCtrl )
{
CString str;
int dx = 0;
CSize sz;
CDC *pDC = lpCtrl->GetDC();
CFont *pOldFont = pDC->SelectObject(lpCtrl->GetFont());
for (int i = 0; i < lpCtrl->GetCount(); i++)
{
lpCtrl->GetLBText(i, str);
sz = pDC->GetTextExtent(str);
if (sz.cx > dx)
{
dx = sz.cx;
}
}
lpCtrl->SetDroppedWidth(dx+24);
pDC->SelectObject(pOldFont);
lpCtrl->ReleaseDC(pDC);
}
// 根据文本长度自动调整宽度
------解决方案--------------------
2楼的应该没错
------解决方案--------------------
设置tooltip 调用函数SetToolTip
------解决方案--------------------
好吧,给你补上这个。我这是继承CComboBox实现重绘的
class XComboBox : public CComboBox
{
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lp);
virtual void MeasureItem(LPMEASUREITEMSTRUCT lp);
};