Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lab 4 보고서 교재 5장 사용자 인터페이스 예제 - 사용자 인터페이스 갱신

Similar presentations


Presentation on theme: "Lab 4 보고서 교재 5장 사용자 인터페이스 예제 - 사용자 인터페이스 갱신"— Presentation transcript:

1 Lab 4 보고서 교재 5장 사용자 인터페이스 예제 - 사용자 인터페이스 갱신
이름 학번

2 실습 목적 및 장비 실습 목적 장비: PC, 윈도우 운영체제, Visual Studio (VC++ 6.0)
메뉴 및 툴바 버튼 이용 방법 메뉴 및 툴바 버튼 설계 ON_COMMAND 마크로 이용 ON_COMMAND_RANGE 마크로 이용 사용자 인터페이스 갱신 처리 UPDATE_COMMAND_UI 메시지 처리 CCmdUI 클래스 멤버 함수 이용 방법 리소스 파일 내용 분석 마우스 커서 형태 변경 표준 커서 이용 사용자 정의 커서 설계 및 설정 장비: PC, 윈도우 운영체제, Visual Studio (VC++ 6.0)

3 사용자 인터페이스 갱신 예제 프로그램 개요 프로그램 완성 후 *.rc 파일의 내용을 메모장으로 읽어본다
Single Document 애플리케이션 메뉴 항목 선택에 따라 영향 받는 다른 메뉴 항목이나 툴바 갱신 실행 파일( 프로그램 완성 후 *.rc 파일의 내용을 메모장으로 읽어본다

4 메뉴 표시: 다이얼로그 박스 부속 메뉴 메뉴 리소스 추가
메뉴 리소스에 대해 Class Wizard 불러 다이얼로그 클래스에 연계시킴 다이얼로그 속성에서 아래와 같이 메뉴 리소스 ID 설정

5 Resource View의 Menu IDR_MAINFRAME
메뉴 커맨드 메시지 핸들러 메뉴의 항목을 선택하면, WM_COMMAND 메시지가 발생하여 메시지의 파라미터(wParams)를 통해 커맨드 (메뉴 항목) ID가 전달된다. WM_COMMAND 메시지 처리는 뷰 클래스, 도큐먼트 클래스, 메인프레임 클래스, 또는 애플리케이션 클래스 어디에서나 할 수 있다. Resource View의 Menu IDR_MAINFRAME

6 메뉴 커맨드 메시지 핸들러 빨간색 메뉴항목이 선택되었을 때 수행될 메시지 핸들러 작성

7 메뉴 커맨드 메시지 핸들러 void CMainFrame::OnRed() { m_nColor = ID_RED; }
void CMainFrame::OnYellow() m_nColor = ID_YELLOW; void CMainFrame::OnBlue() m_nColor = ID_BLUE;

8 ON_UPDATE_COMMAND_UI_RANGE 매크로

9 CCmdUI::Enable 함수 메뉴를 활성화/비활성화 시킴 BEGIN_MESSAGE_MAP(CCmdUIView, CView)
ON_UPDATE_COMMAND_UI(ID_BEGIN, OnUpdateBegin) ON_UPDATE_COMMAND_UI(ID_END, OnUpdateEnd) END_MESSAGE_MAP() void CCmdUIView::OnUpdateBegin(CCmdUI *pCmdUI) { pCmdUI->Enable(!m_bStart); } void CCmdUIView::OnUpdateEnd(CCmdUI *pCmdUI) pCmdUI->Enable(m_bStart);

10 CCmdUI::SetText 함수 메뉴의 캡션 바꾸기 (m_bStart 값에 따라 작업 중단/작업 시작 메뉴를 변경하는 코드를 완성하라 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_COMMAND(IDM_BEGINEND, OnBeginend) ON_UPDATE_COMMAND_UI(IDM_BEGINEND, OnUpdateBeginend) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CMainFrame::OnUpdateBeginend(CCmdUI* pCmdUI) { }

11 CCmdUI::SetCheck 함수 메뉴에 체크 표시 class CMainFrame: public CFrameWnd { //…
UINT m_nColor; CMainFrame::CMainFrame() { m_nColor = ID_RED; } BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_COMMAND_RANGE(ID_RED, ID_BLUE, OnColorCheck) //}}AFX_MSG_MAP END_MESSAGE_MAP()  void CMainFrame::OnColorCheck(UINT nID) { m_nColor = nID; }

12 CCmdUI::SetCheck 함수 일괄 처리를 위해 ON_UPDATE_COMMAND_UI_RANGE 마크로를 이용
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_COMMAND_RANGE(ID_RED, ID_BLUE, OnColorCheck) ON_UPDATE_COMMAND_UI_RANGE(ID_RED, ID_BLUE, OnUpdateColorCheck) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CMainFrame::OnUpdateColorCheck(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nColor == pCmdUI->m_nID); }

13 CCmdUI::SetRadio 함수 SetCheck 와 동일
void CMainFrame::OnUpdateColorRadio(CCmdUI* pCmdUI) { pCmdUI->SetRadio(m_nColor == pCmdUI->m_nID); }

14 SetCheck와 SetRadio의 동기화를 위한 작업
menuitem 들을 위한 리소스 ID 부여 방법 SetCheck 항목: ID_RED, ID_YELLOW, ID_BLUE SetRadio 항목: ID_RED2, ID_YELLOW2, ID_BLUE2 SetRadio menuitem 들을 위한 핸들러를 작성해 보시오.

15 보고서 요구사항 툴바를 메뉴 항목에 연동시키는 방법:


Download ppt "Lab 4 보고서 교재 5장 사용자 인터페이스 예제 - 사용자 인터페이스 갱신"

Similar presentations


Ads by Google