본문 바로가기

공부/MFC

메뉴의 체크표시 변환 C++, MFC


void CMainFrame::OnUpdateWindow3(CCmdUI* pCmdUI)

{

       // TODO: Add your command update UI handler code here

       if(m_nWindowNum==3)

               pCmdUI->SetCheck(TRUE);

       else

               pCmdUI->SetCheck(FALSE);    

}

 
구글에서 검색해보면 대부분 이런식으로

SetCheck 를 사용하는 것들에 대한 글이 대다수이다.

하지만 이 방식은 대화상자를 특정 방식으로 생성했을 때에만 작동하며

그 이외에는 작동하지 않는다.


이럴때에

CMenu *hMenu = GetMenu();

   

  if(hMenu->GetMenuState(해당 메뉴의 아이디, MF_BYCOMMAND) != MF_CHECKED){ 

  hMenu->CheckMenuItem( 해당 메뉴의 아이디 , MF_CHECKED);

 }

 else{

  hMenu->CheckMenuItem( 해당 메뉴의 아이디 , MF_UNCHECKED);

 } 



처럼 CMenu 를 사용하여 메뉴의 체크 유무를 바꿔주고

메뉴에 관련된 변수들을 if문 안쪽에 넣어서 값을 변경해주면

다른 대화상자 생성조건으로도 메뉴의 체크를 바꿀 수 있다.