在对话框程序中做的一个小实验:
写这个程序主要是要验证以下内容:
1、Create()函数中CRect参数主要是用于创建组合框的长度,以及在下拉情况下的长度。而这些设置在自绘情况下都是可以自己控制的。
2、而对于非自绘情况下,要设置每个文本的高度,可以通过setItemHeight()来做到。当参数1为-1时,代表的意义是所有item的高度都为参数2的值。
3、关于字体的设置问题
4、detach()的使用
1、在构造函数中写的
private:
CComboBox mComboBox;
2、::OnInitDialog()中写的
mComboBox.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST, CRect(10, 10, 200, 300), this, 1);
mComboBox.AddString(_T("item1"));
mComboBox.AddString(_T("item2"));
CString strLBText;
CSize size;
int spacing;
CDC* pDC = mComboBox.GetDC();
spacing = mComboBox.GetItemHeight(0);
LOGFONT lf;
CFont *m_pFont;
m_pFont = GetFont();
m_pFont->GetLogFont(&lf);
lf.lfHeight = 20;
m_pFont->Detach();
m_pFont->CreateFontIndirect(&lf);
mComboBox.SetFont(m_pFont);
m_pFont->Detach();
for (int i = 0; i < mComboBox.GetCount(); i++)
{
mComboBox.GetLBText(i, strLBText);
size = pDC->GetTextExtent(strLBText);
// Only want to set the item height if the current height
// is not big enough.
if (mComboBox.GetItemHeight(i) < size.cy)
mComboBox.SetItemHeight( i, size.cy );
spacing = mComboBox.GetItemHeight(0);
}
mComboBox.ReleaseDC(pDC);