사용자가 체크 표시/체크 해제 할 수있는 체크 표시와 같은 역할을하는 메뉴 항목을 추가하려고 시도하고 다른 클래스는 해당 메뉴 항목의 체크 표시 상태를 볼 수 있습니다. 그러나 팝업 옵션을 사용하여 메뉴 옵션에 대한 클래스를 만드는 제안을 받았지만 Visual Studio 2005의 리소스 레이아웃 편집기에있을 때 메뉴 옵션에 대한 클래스를 만들 수 없습니다. 내가 설명한 것을 할 수있는 메뉴 항목을 만드는 가장 쉬운 방법에 대한 제안을 듣고.MFC 메뉴 항목 체크 박스 동작
3
A
답변
1
GetMenu() 메서드를 사용하여 메인 프레임에서 메뉴를 검색 한 다음 해당 메뉴 개체와 ID 번호를 사용하여 올바른 플래그와 GetMenuState() 함수를 사용하여 CheckMenuItem()을 호출했습니다.
8
ON_UPDATE_COMMAND_UI
처리기 기능과 ON_COMMAND
처리기를 통해 확인란의 상태를 변경하려면 메뉴 항목에 확인란을 추가하려면 CCmdUI::SetCheck
함수를 사용해야합니다. 이 방법은 응용 프로그램의 주 메뉴 및 만들 수있는 팝업 메뉴에서 모두 작동합니다.
MDI 또는 SDI MFC 응용 프로그램이 있다고 가정하면 먼저 응용 프로그램, 기본 프레임, 문서 또는 뷰 클래스와 같은 처리기 기능을 추가 할 위치를 결정해야합니다. 이것은 플래그가 사용될 대상에 따라 달라집니다. 응용 프로그램 전반의 동작을 제어하는 경우 응용 프로그램 클래스에 넣습니다. 이 뷰 특정 동작을 제어하는 경우, (나는 거짓로 설정 리소스 편집기에서 메뉴 항목의 검사 속성을 떠날 것을 권 해드립니다, 또한.)
등, 뷰 클래스에 넣어
, 예를 들어, 초기화되어// MyView.h
class CMyView : public CView
{
private:
BOOL m_Flag;
afx_msg void OnMyCommand();
afx_msg void OnUpdateMyCommand(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()
};
// MyView.cpp
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_COMMAND(ID_MY_COMMAND, OnMyCommand)
ON_UPDATE_COMMAND_UI(ID_MY_COMMAND, OnUpdateMyCommand)
END_MESSAGE_MAP()
void CMyView::OnMyCommand()
{
m_Flag = !m_Flag; // Toggle the flag
// Use the new flag value.
}
void CMyView::OnUpdateMyCommand(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_Flag);
}
당신은 m_Flag
멤버 변수를 확인해야합니다 :
다음은 ID_MY_COMMAND
메뉴 항목의 체크 박스의 상태를 제어하는 뷰 클래스를 사용하는 예입니다생성자 또는 OnInitialUpdate
함수.
도움이 되었기를 바랍니다.
2
@ ChrisN의 접근 방식은 (pCmdUI->SetCheck(m_Flag);
은 적용되지 않음)에 적합하지 않습니다.
// MyView.h
class CMyView : public CView
{
private:
BOOL m_Flag;
CMenu * m_menu;
virtual BOOL OnInitDialog();
afx_msg void OnMyCommand();
DECLARE_MESSAGE_MAP()
};
// MyView.cpp
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_COMMAND(ID_MY_COMMAND, OnMyCommand)
END_MESSAGE_MAP()
BOOL CMyView::OnInitDialog()
{
m_menu = GetMenu();
}
void CMyView::OnMyCommand()
{
m_Flag = !m_Flag; // Toggle the flag
if (m_flag) {
m_menu->CheckMenuItem(ID_MENUITEM, MF_CHECKED | MF_BYCOMMAND);
} else {
m_menu->CheckMenuItem(ID_MENUITEM, MF_UNCHECKED | MF_BYCOMMAND);
}
}
참고 :
다음 대화 애플리케이션을위한 솔루션입니다관련 문제
- 1. 장고 체크 박스 항목
- 2. 체크 가능한 메뉴 항목
- 3. 체크 박스 상황에 맞는 메뉴
- 4. 체크 박스 그룹에서 체크 된 체크 박스
- 5. 드롭 다운 메뉴 안의 체크 박스 php
- 6. 목록 상자 안에 체크 박스 항목 추가
- 7. 체크 박스 목록 최근 체크/체크되지 않음 항목
- 8. 체크 박스/체크되지 않은 체크 박스
- 9. 하위 메뉴 항목이있는 메뉴 항목에 체크 표시를 지정하려면 어떻게해야합니까? (Visual studio 2008 C++/MFC)
- 10. 체크 박스 목록으로 작업
- 11. 체크 박스
- 12. android : listview 내부의 동적 체크 박스
- 13. PHP $ _POST의 체크 체크 박스
- 14. 메뉴 항목 토글하기
- 15. 장고의보기에 체크 박스 데이터 게시하기
- 16. .NET Windows 7 Jumplist - 체크 박스/라디오 Jumplist 항목
- 17. 체크 박스 목록 상자에 항목 모음을 바인딩하는 방법은 무엇입니까?
- 18. 목록 상자에서 선택된 체크 박스 항목 가져 오기 mvvm
- 19. 의 asp.net MVC 3 체크 박스 foreach는 항목
- 20. WPF의 ListView 항목 선택 내가이 코드가 체크 박스
- 21. 작은 크기의 실버 라이트 체크 박스 체크 박스
- 22. 체크 박스 목록의 ListItem에 대한 체크 박스 아이콘을 숨기기
- 23. 젠드 양식 - 내 체크 박스 목록에 대한 다중 체크 박스
- 24. 체크 박스 이름을 문자열로 사용하여 체크 박스 속성을 가져옵니다.
- 25. 체크 박스 유효성 확인
- 26. JComboBox의 Java - 체크 박스
- 27. PHP 동적 체크 박스
- 28. 동적 체크 박스 목록
- 29. 파일론이있는 체크 박스
- 30. 체크 박스 및 PHP