웹에서 보면 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 다이얼로그를 만들 수 있습니다!
'코드^학습 > 메모한 지식' 카테고리의 다른 글
[MFC] 레지스트리 Wow6432Node (0) | 2016.12.15 |
---|---|
[MFC] 다이얼로그 시작과 동시에 윈도우 숨기기 (0) | 2016.12.12 |
별거입니다만.. (0) | 2016.11.03 |
[MFC] Invalidate의 (반드시) 주의할 점! (0) | 2016.11.03 |
[C++][MFC] 구조체 선언시 주의할 점 (0) | 2016.10.17 |