본문 바로가기
Programming

[MFC] 콤보박스에 따른 다른 동작 수행(펌)

by leanu 2008. 1. 2.

처음에 프로젝트를 진행하다가 콤보박스를 제대로 작동하게 하는 설명이 되어있는 곳이 없어서

고생을 많이 했던 생각에 이렇게 올립니다.


---> MFC AppWizard로  formview 나 dialog기반의 프로젝트를 생성한다.  <---


1. Workspace의 ResourceView탭을 선택한후


2.resources->dialog 하위 메뉴를 보면   IDD_Dialog이름이 보이는데 더블 클릭하면

  다이얼로그를  수정할 수 있는 창이 보이며,  팝업 메뉴창이 하나 뜬다.


3. 팝업 메뉴의 Combobox를 선택한다.

사용자 삽입 이미지
4.콤보박스를 클릭하면 십자가 모양이 생기는데 원하는 부분에 표를 만들듯이 시작 위치에서
  클릭한 후 끝에서 떼면 콤보박스가 만들어 진다.
 
사용자 삽입 이미지

 
4-1. 콤보박스의 화살표 부분을 클릭하면 하위 메뉴의 길이부분까지 선택범위가 넓어지는데 원하는
   메뉴의 수 만큼 길이를 조절해 주면 된다.
   (참고) 선택점에는 검정색과 투명한점이 있는데 투명한 점은 이동점이고,
             검은색 점은 크기조절점이다.
 
5. 콤보박스에서 오른쪽 버튼을 누르면 단축메뉴가 뜨는데 여기서 Properties를 클릭하면
    콤보박스의 환경을 설정할 수 있는 창이 뜬다.
 
 
사용자 삽입 이미지
6. General탭의 ID 에서 콤보박스의 이름을 변경할 수 있고,
   Data 탭을 선택후 메뉴의 목록을 써 넣는다. 이 때 다음 메뉴는 Ctrl+Enter를 치고 쓰면 된다.
   여기까지 하고 프로그램을 실행하게 되면 콤보박스에 적어넣은 메뉴가 나타나게 된다.
사용자 삽입 이미지
 
 
 
7. 이제 단축키 Ctrl+W 를 이용해 클래스 위자드를 실행한다.
 
8. Object IDs에서 콤보박스의 이름을 클릭, Messages에서 CBN_SELCHANGE를 더블클릭하면
    Add Member Function이라는 대화상자가 뜬다. 이때 명령어를 바꾸어 줄수 있다.
    Ok버튼을 누른면 Member Functions의 내용에 OnSelChangeCombo1(입력한명령어)라는
    한줄이 추가되는데 더블클릭하거나 클래스위저드 메뉴의 Edit Code를 클릭하면 수정할 수있는
    코딩창이 뜨게 된다.
 
사용자 삽입 이미지
 
9. 다시 클래스 위저드를 실행시켜 Member variables탭을 선택한다.
   Control IDs의 콤보박스 ID를 선택한 후 Add Variable을 클릭하면 멤버를 입력할 수 있는 대화
   상자가 뜬다. 여기서 원하는 이름을 입력후 category는 control을 선택하고, Variable type 는
   Ccombobox 를 선택한다. OK버튼을 누르면 멤버가 생성된 것이 보인다.
사용자 삽입 이미지
 
 
10. workspace의 FileView탭을 선택한 후 작업하고 있는 다이얼로그의 헤더파일에 정의되어있는
     클래스에 CString 계열의 문자열 이름을 적어 넣는다. ex) CString 원하는이름;
사용자 삽입 이미지
 
 
 
11. 다시 리소스탭으로 돌아가 콤보박스를 더블클릭하고 코딩창에 아래의 내용을 입력한다.
///////////////////////////////////////////////////////////////////////////////////////

void COfdmDlg::OnSelchangeCOMBOChannel() //입력했던 명령어
{

 int nIndex;
 nIndex = m_Channel.GetCurSel();  
// 현재 선택된 항목의 인덱스를 얻음

 m_Channel.GetLBText(nIndex, Ch_type);   //인덱스에 해당하는 문자열 얻음
 SetDlgItemText(IDC_COMBO_Channel, Ch_type); 
//선택된 항목의 문자열 출력
 if(Ch_type=="실행명령1")
 {
 
  원하는 명령;
   
 }
 
 
 else if(Ch_type=="실행명령2")
{
   원하는 명령;
}

else
 
 {
  원하는 명령;
 }
 
}
///////////////////////////////////////////////////////////////////////////////////////
 
여기서 m_Channel은 9번 단계에서 설정한 이름이고, Ch_type는 6번 단계에서 입력한 문자열이다.
한마디로 Ch_type의 문자열을 비교하면서 선택된 문자열에서 원하는 명령을 실행시켜 주는것이다.
 

'Programming' 카테고리의 다른 글

Java Script 정리  (0) 2008.01.02
Writing Solid Code 요약  (0) 2008.01.02
SetPixelFormat  (0) 2008.01.02
10진수 단위별 용어  (0) 2008.01.02
popen()  (2) 2008.01.01

댓글