반응형

 CCmdUI 클래스 : 사용자 인터페이스 갱신  MFC 라이브러리

2009/02/11 10:17

복사http://blog.naver.com/origin26/40061989342

■ CCmdUI 클래스

。기능

- 사용자 인터페이스 갱신과 관련된 기능을 수행하며 ON_UPDATE_COMMAND_UI 매크로로 연결되는 이벤트 처리기에 사용한다.

- 연결된 이벤트 처리기는 ON_COMMAND로 이미 등록되어 있는 이벤트 상태에 변경이 있을 때 이를 업데이트 시킨다.

 

- 연결된 이벤트 처리기는 이 클래스의 인스턴스 포인터를 매개변수로 넘겨받는다.

- 이벤트명이 ID_BEGIN이라면 이를 갱신하는 이벤트 처리기는 OnUpdateBegin()이 된다.

 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

     . . .

     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) ;

 }

 

。주요 멤버변수 : 갱신할 사용자 인터페이스의 이벤트 ID를 나타내는 UNIT 형의 m_nID가 있다.

。주요 멤버 함수

 멤버 함수 기능 
 Enable BOOL형 매개변수를 받아 사용자 인터페이스를 활성화/비활성화 시킴.
 SetText 사용자 인터페이스의 텍스트를 변경시킴.
 SetCheck int형 매개변수를 받아 체크 표시를 하거나 없앰.
 SetRadio SetCheck 함수와 비슷한 기능. 단, 체크 표시대신 점이 찍힘.

 

------------------------------------------------------------------------------------------

 

- 우선 다음과 같은 이벤트 처리기가 정의되어 있다고 가정한다.

 BEGIN_ MESSAGE_MAP(CCmdUIView, CView)

      ...

      ON_COMMNAD( ID_BEGIN, OnBegin )

      ON_COMMAND( ID_END, OnEnd )

 END_MESSAGe_MAP()

 

 void CCmdUIView::OnBegin()

 {

     m_bStart = TRUE ;

 }

 

 void CCmdUIView::OnEnd()

 {

     m_bStart = FALSE ;

 }

 

 

■ Enable 함수

- 메뉴 항목을 상황에 다라 활성화 시키거나 비활성화 시킨다.

 

。상태변수 만들기

- 활성화인지 비활성화 인지의 상황을 기억하는 상태 변수가 필요하다.

 class CCmdUIView : public CView

 {   ...

     BOOL m_bStart ;

 }

 

- 상태 변수를 클래스 생성자 함수에서 초기화 해 준다.

 CCmdUIView::CCmdUIView()

 {  ...

     m_bStart = FALSE ;

 }

 

。사용자 인터페이스 갱신 메세지 처리기 등록  

- ON_UPDATE_COMMAND_UI로 등록한다.

 BEGIN_ MESSAGE_MAP(CCmdUIView, CView)

      ...

      ON_UPDATE_COMMNAD_UI( ID_BEGIN, OnBegin )

      ON_UPDATE_COMMNAD_UI( ID_END, OnEnd )

 END_MESSAGe_MAP()

 

。메세지 처리기 활성/비활성 상태 제어

- Enable 함수를 호출하여 매개변수로 TRUE(활성화) 또는 FLASE(비활성화)를 넘긴다.

- 이벤트 처리기에 넘겨지는 매객변수 pCmdUI에는 메뉴 항목에 대한 정보가 담겨 있다.

- CCmdUI 클래스의 멤버 함수들을 호출하면 해당 메뉴 항목을 제어할 수 있다.

 void CCmdUIView::OnUpdateBegin(CCmdUI *pCmdUI)

 {

     pCmdUI->Enable(!m_bStart) ;

 }

 void CCmdUIView::OnUpdateEnd(CCmdUI *pCmdUI)

 {

     pCmdUI->Enable(!m_bStart) ;

 }


반응형

'프로그래밍(Programming) > MFC&API' 카테고리의 다른 글

더블버퍼링  (0) 2012.11.01
CString 을 float 로 변환  (0) 2012.11.01
EditBox 가 CString 일때 비활성화(회색으로) 시키기  (0) 2012.11.01
UpdateData 함수  (0) 2012.11.01
스크롤바 기능, 사용하기  (0) 2012.11.01

+ Recent posts