3. 기초 프로그래밍 실습 12

Download Report

Transcript 3. 기초 프로그래밍 실습 12

3장. 기초 프로그래밍
3. 기초 프로그래밍
3.9 메뉴 (Menu)
대화상자 상단에 메뉴를 만들면 사용이 매우 편리하다.
주 메뉴와 서브 메뉴 (드롭다운)로 구성된다.
주 메뉴
서브 메뉴
서브 메뉴
3. 기초 프로그래밍

실습 12 : 메뉴 만들기
메뉴를 만들고 아래 기능을 부여한다.




주 메뉴 File 에 서브 메뉴 Open 과 Exit 를 만든다.
주 메뉴 Help 에 서브 메뉴 About 를 만든다.
Open을 누르면 메시지 상자가,
About을 누르면 프로그램 정보가 표시되도록 한다.
3. 기초 프로그래밍

따라하기
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Menu)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
3. 기초 프로그래밍
4. 리소스 뷰의 Menu를 우측 클릭하고 리소스 추가에서
Menu – 새로 만들기를 클릭한다.
3. 기초 프로그래밍
5.
아래와 같이 메뉴 편집창이 생성되면 &File 을 입력한다.
( & 는 Ctrl + F 단축키 사용 가능하게 해준다. )
6. 아래 쪽 [여기에 입력]을 클릭하고 &Open 과 E&xit 를 각각 입력.
기억!
3. 기초 프로그래밍
7.
주메뉴에서 오른쪽 [여기에 입력]에 &Help 를 입력한다.
8. 아래 쪽 [여기에 입력]을 클릭하고 &About 를 각각 입력.
3. 기초 프로그래밍
참고1 : 아래와 같이 메뉴 항목 사이에 줄을 표시하려면 속성창의
Separator 항목을 True 로 한다.
Exit 클릭 -> 우측마우스클릭
-> 새로삽입 클릭
참고2 : 체크 표시는 Checked 항목을 True 로
3. 기초 프로그래밍
9. 대화상자를 클릭하고 속성 중 Menu 항목을 IDR_MENU1 으로
선택한다.
3. 기초 프로그래밍
10. 클래스 마법사을 실행하고 ID_FILE_OPEN32771 과 ID_FILE_EXIT
그리고 ID_HELP_ABOUT 를 찾아 처리기 추가한다.
3. 기초 프로그래밍
11. 아래와 같이 코드를 추가한다.
void CMenuDlg::OnFileOpen32771()
{
// TODO: 여기에 명령 처리기 코드를 추가합니다.
MessageBox("파일열기","Open");
}
Open
void CMenuDlg::OnFileExit()
{
// TODO: 여기에 명령 처리기 코드를 추가합니다.
OnOK();
}
Exit
void CMenuDlg::OnHelpAbout()
{
// TODO: 여기에 명령 처리기 코드를 추가합니다.
CAboutDlg Dlg;
Dlg.DoModal();
}
About
3. 기초 프로그래밍
12. 아래와 같이 서브메뉴를 클릭했을 때 실행이 잘 되는지 확인한다.
3. 기초 프로그래밍
3.10 스크롤바 (Scroll Bar)
HScrollBar

화면을 좌우로 스크롤
VScrollBar

화면을 상하로 스크롤
3. 기초 프로그래밍

실습 13
 수평 및 수직 스크롤바를 움직이면 각각의 값이 표시되도록 한다.
3. 기초 프로그래밍

따라하기
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Scrol)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
3. 기초 프로그래밍
4. 에디터상자 2개, 수직스크롤 1개, 수평스크롤 1개를 배치한다.
IDC_EDIT1
IDC_SCROLLBAR1
IDC_EDIT2
IDC_SCROLLBAR2
3. 기초 프로그래밍
5. 클래스 마법사을 실행하고 멤버 변수를 클릭한 다음 [사용자 지정
추가] 를 클릭해 int 형으로 m_temp1 과 m_temp2 를 만든다.
m_temp1
직접 입력
m_temp2
직접 입력
3. 기초 프로그래밍
6. IDC_EDIT1 과 IDC_EDIT2 에 대해서도 변수를 int 형으로 만든다.
m_Edit1
m_Edit2
3. 기초 프로그래밍
7. IDC_SCROLLBAR1 과 IDC_SCROLLBAR2 에 대해서는 변수를
Control 형으로 만든다.
m_strVert
m_strHori
3. 기초 프로그래밍
8. 메시지 탭 을 클릭하고 WM_HSCROLL 을 찾아 [처리기 추가]를
하고, 마찬가지로 WM_VSCROLL 도 처리기 추가 한다.
3. 기초 프로그래밍
9. OnInitDialog() 를 찾아 아래의 코드를 추가 한다.
BOOL CScrolDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 여기에 추가 초기화 작업을 추가합니다.
m_scrVert.SetScrollRange(0,255);
m_scrHori.SetScrollRange(0,255);
}
return TRUE; //포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
3. 기초 프로그래밍
10. OnVScroll (수직스크롤)에 대해 아래의 코드를 추가 한다.
void CScrolDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
UpdateData(TRUE);
if ( nSBCode == SB_LINELEFT )
m_temp1--;
else if ( nSBCode == SB_LINERIGHT )
m_temp1++;
m_Edit1 = m_scrVert.GetScrollPos();
m_scrVert.SetScrollPos(m_temp1);
▲을 누르면 변수값 -1 한다.
▼을 누르면 변수값 +1 한다.
에디터 상자에 변수값 표시
스크롤바를 실제 이동
UpdateData(FALSE);
}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
3. 기초 프로그래밍
11. OnHScroll (수평스크롤)에 대해 아래의 코드를 추가 한다.
void CScrolDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
UpdateData(TRUE);
if ( nSBCode == SB_LINELEFT )
m_temp2--;
else if ( nSBCode == SB_LINERIGHT )
m_temp2++;
m_Edit2 = m_scrHori.GetScrollPos();
m_scrHori.SetScrollPos(m_temp2);
◀을 누르면 변수값 -1 한다.
▶을 누르면 변수값 +1 한다.
에디터 상자에 변수값 표시
스크롤바를 실제 이동
UpdateData(FALSE);
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
3. 기초 프로그래밍
3.11 트리 컨트롤 (Tree Control)
데이터를 계층구조의 폴더 형태로
표현하기 위한 컨트롤
3. 기초 프로그래밍
3.13 애니메이션 컨트롤
간단한 동영상 플레이를 위한 컨트롤
사운드가 포함되지 않은 주로 개발용
AVI 파일만 플레이 가능
3. 기초 프로그래밍
3.14 슬라이더 컨트롤
주로 연속적으로 수치를 증감 시킬
때 사용하는 컨트롤
3. 기초 프로그래밍

실습 16
 슬라이더 컨트롤을 움직이면 증감값이 출력되도록 한다.
 슬라이드 범위는 1 ~ 100 까지로 한다.
감소
증가
3. 기초 프로그래밍

따라하기
1.
새로 MFC 응용프로그램 프로젝트를 생성한다. (이름 : Sli)
2.
응용프로그램 종류를 [대화 상자 기반]으로,
[유니코드 라이브러리 사용]을 체크 해제한다.
3.
화면에 있는 컨트롤들을 삭제하여 깨끗하게 한다.
3. 기초 프로그래밍
4. 에디터 상자, 슬라이더 컨트롤, 버튼 각각 1개를 배치한다.
IDC_EDIT1
IDC_SLIDE1
IDC_BUTTON1
3. 기초 프로그래밍
5. 클래스 마법사을 실행하고 IDC_EDIT1 과 IDC_SLIDE1 의 멤버
변수를 만든다.
m_EditA
m_Sli
Control
int
CSliderCtrl
3. 기초 프로그래밍
6. 메시지 항목에서 WM_HSCROLL 을 클릭하고 [처리기 추가]를 한 후
[코드 편집]을 클릭한다.
3. 기초 프로그래밍
7. 아래의 코드를 추가 한다.
void CSlideDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
UpdateData(TRUE);
m_EditA = m_Sli.GetPos();
UpdateData(FALSE);
}
슬라이더 위치를 에디터 상자에 표시
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
3. 기초 프로그래밍
8. OnInitDialog() 를 찾아 아래의 코드를 추가 한다.
BOOL CScrolDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 여기에 추가 초기화 작업을 추가합니다.
m_Sli.SetRange(1, 100);
}
슬라이더 범위
return TRUE; //포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
3. 기초 프로그래밍
9.
종료 버튼을 더블 클릭하고 아래 코드를 추가한다.
void CComboDlg::OnClickedButton1()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
다이얼로그 상자 종료
}
10. 실행 후 결과를 확인해 본다.
3. 기초 프로그래밍

연습문제 4


아래와 같이 메뉴를 만들 것
열기를 누르면 메시지상자가 뜨도록 할 것
파일(&F)
열기(&O)
종료(&X)