본문 바로가기

공부/MFC

Visual C++ 2008 MFC Chapter 10 메뉴~ -3

다른 메뉴를 만들듯이

일시 정지 메뉴를 만들고

일시정지 메뉴를 만들기 전에 구분선을 하나 넣어본다.[생성시에 메뉴에 다 한글로 써있으니 설명이 필요치 않다.]




m_bRunning 을 넣었듯이 m_bPause 도 넣어준다.

역시 마찬가지로 시작 종료 메뉴를 만든것처럼 

void CMainFrame::OnMenuPause()와

void CMainFrame::OnUpdateMenuPause(CCmdUI *pCmdUI)

를 추가하고 다음과 같이 입력한다.




==========================================================
void CMainFrame::OnMenuPause()
{
if(m_bPause) AfxMessageBox(_T("다시 시작합니다."));
else AfxMessageBox(_T("일시 정지합니다."));


m_bPause = !m_bPause;
}

void CMainFrame::OnUpdateMenuPause(CCmdUI *pCmdUI)
{
if(m_bPause) pCmdUI->SetText(_T("다시 시작"));
else pCmdUI->SetText(_T("일시 정지"));
}
==========================================================






클릭할때마다 메시지가 뜨고 다시 시작과 일시 정지가 토글된다.

여기서 체크 메뉴 방식으로 바꾸는 방법인 SetCheck() 함수를 이용하면 다음과 같이 만들 수 있다.


void CMainFrame::OnUpdateMenuPause(CCmdUI *pCmdUI)
{
// if(m_bPause) pCmdUI->SetText(_T("다시 시작"));
// else pCmdUI->SetText(_T("일시 정지"));
if(m_bPause) pCmdUI->SetCheck(TRUE);
else pCmdUI->SetCheck(FALSE);

}


이런식으로 하면 다시 시작 대신 일시 정지의 왼측에 체크마크가 생기게 된다.

 ===========================================

단축키는 어떻게 만드는가. 

상태표시줄 처럼 만드는 것인가?      No.

상태 표시줄 만들듯이 만들면 메뉴에 쓰이는 것만 바뀌게됨.

물론 이 방법대로 해서 어느 단축키를 눌러야 해당 메뉴의 단축키인지를 알리기는 해야함.

단축키를 만드는 방법은 액셀레이터 테이블 에서 정의하여 만듬.

가는 방법은 다음과 같음.

 
 마지막 줄의 Menu_Pause가 없는게 당연하다.  가장 아랫줄의 빈 칸을 눌러서 새로운 단축키를 생성해야 한다.

 파일 업로드.