我需要在运行时在CBS_下拉列表和CBS_下拉列表样式之间切换。看起来唯一的方法是重新创建控件。
因此,我有以下代码:
CRect rect;
m_Combo.GetWindowRect(&rect);
m_Combo.DestroyWindow();
m_Combo.Create(CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | WS_VISIBLE, rect, this, IDC_MYCOMBO);
但所发生的一切就是组合消失了。我错过了什么?
使用
ModifyStyle
不是选项,因为无法在运行时更改此样式。必须重新创建控件。
编辑2:
CRect rect;
m_Combo.GetWindowRect(&rect);
ScreenToClient(&rect); // SUPER IMPORTANT :)
m_Combo.DestroyWindow();
m_Combo.Create(CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP | WS_VISIBLE, rect, this, IDC_MYCOMBO);
但现在,位置正确,但字体与对话框字体不匹配。