[MFC]콤보박스 동적으로 생성하기, 콤보박스 선택할 때 이벤트
웹에서 보면 1단계 콤보박스 값에 따라서 2단계의 값이 결정되곤 합니다.
보통 그때그때 새로운 값을 넣어주는데요..
MFC에서는 Init단계에서 초기화 해주지 못하면 새로 생성할 때 많은 애로사항이 꽃핍니다.
그러므로 동적으로 생성해주는 방법을 떠올리게 되는거죠.
그 방법을 소개합니다.
CComboBox m_ctrlCombo;
RECT rc={0, 0, 100, 20};
if (!m_ctrlCombo.Create(CBS_DROPDOWN|WS_CHILD|WS_VSCROLL|WS_TABSTOP|WS_VISIBLE, rc, this, 2115))
AfxMessageBox(_T("combo box 생성 error!"));
CFont* pFont = GetFont();
if (pFont == NULL)
AfxMessageBox(_T("Font Error error!"));
m_ctrlCombo.SetFont(pFont);
m_ctrlCombo.AddString(_T("STRING1"));
m_ctrlCombo.AddString(_T("STRING2"));
m_ctrlCombo.SetCurSel(0);
[출처 : http://hizstory.tistory.com/56 , 갱우덩님 블로그]
위와 같이 처리하면 동적으로 콤보박스를 만들 수 있습니다!
물론 다른 편집 다이얼로그도 마찬가지겠죠?
그런데
보통 동적으로 생성하면 선택할 때 동적으로 내용을 채워야겠죠?
그렇다면! 콤보박스를 선택했을 때
어떤 이벤트가 오도록 만든다면
콤보박스 1단계 값에 따라서 2단계 콤보박스에 넣을 값을 정할 수 있습니다.
그 방법은 아래와 같죠!
MESSAGE_MAP 부분에
"ON_CBN_SELCHAGNE(IDC_COMBO, &Dlg::OnCbnSelChange)"
와 같이 메시지 처리기를 등록하시고
void OnCbnSelChange();
void Dlg::OnCbnSelChange()
{
MessageBox("test");
}
[출처 : http://www.tipssoft.com/bulletin/board.php?bo_table=QnA&wr_id=26145, 팁스소프트]
이렇게하면 유연한 MFC 다이얼로그를 만들 수 있습니다!