房地产免费网站建设,产品设计考研学校排名,网站建设错误代码50019,微信小程序开发步骤效果对比 先看下优化前后的效果#xff0c;再看实现过程. 优化前 优化后 从上图中可看到#xff0c;combobox优化后可以自适应不同长度的字符串#xff0c;保证每个字符串都能够显示完整。 实现过程 当我们触发CBN_DROPDOWN事件时#xff0c;不再使用默认的实现#xff0c… 效果对比 先看下优化前后的效果再看实现过程. 优化前 优化后 从上图中可看到combobox优化后可以自适应不同长度的字符串保证每个字符串都能够显示完整。 实现过程 当我们触发CBN_DROPDOWN事件时不再使用默认的实现而是利用消息反射机制重新计算下拉列表的宽度具体步骤如下 生成CMyComboBox类这个类继承CComboBox将CMyComboBox绑定combobox控件响应CBN_DROPDOWN消息响应重新计算最大的下拉列表长度 CMyComboBox类 类声明
class CMyComboBox : public CComboBox
{DECLARE_DYNAMIC(CMyComboBox)public:CMyComboBox();virtual ~CMyComboBox();protected:DECLARE_MESSAGE_MAP()
public:afx_msg void OnCbnDropdown();
};BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
//消息反射声明
ON_CONTROL_REFLECT(CBN_DROPDOWN, CMyComboBox::OnCbnDropdown)
END_MESSAGE_MAP()// CMyComboBox 消息处理程序
void CMyComboBox::OnCbnDropdown()
{CClientDC dc(this);int nWitdh 10;int nSaveDC dc.SaveDC();//获取字体信息dc.SelectObject(GetFont());//计算最大的显示长度for (int i 0; i GetCount(); i){CString strLable _T();GetLBText(i, strLable);nWitdh max(nWitdh,dc.GetTextExtent(strLable).cx);}//多增加的冗余宽度nWitdh 10;//设置下拉列表宽度SetDroppedWidth(nWitdh);//恢复实际dcdc.RestoreDC(nSaveDC);
} 转载于:https://www.cnblogs.com/jinxiang1224/p/8468317.html