2
我需要在運行時在CBS_DROPDOWN和CBS_DROPDOWNLIST樣式之間切換。看起來唯一的方法是重新創建控件。動態創建/銷燬CComboBox
所以我有以下代碼:
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);
但現在,位置是正確的,但字體與對話框字體不匹配。