반응형
CCmdUI 특징과 기능
CCmdUI는 MFC(Microsoft Foundation Classes) 라이브러리에서 제공되는 클래스 중 하나로, 메뉴 및 툴바 항목과 연결된 명령 상태(Command User Interface) 정보를 관리하는 데 사용됩니다. MFC는 주로 Windows 기반 응용 프로그램을 개발하기 위한 Microsoft의 C++ 라이브러리입니다.
CCmdUI 클래스의 주요 특징 및 기능은 다음과 같습니다:
- 명령 상태 관리:
- CCmdUI는 주로 명령 상태를 관리하는 데 사용됩니다. 명령 상태란 메뉴 항목 또는 툴바 버튼이 활성화, 비활성화, 선택된 상태 등 어떤 상태에 있는지를 나타냅니다.
- 예를 들어, 특정 조건에서 메뉴 항목이나 툴바 버튼을 비활성화하고 싶을 때 CCmdUI를 사용하여 그 상태를 관리할 수 있습니다.
- OnUpdate 함수와의 연동:
- CCmdUI 객체는 주로 OnUpdate 멤버 함수와 연동됩니다. OnUpdate 함수는 주기적으로 호출되어 명령 상태를 업데이트합니다.
- OnUpdate 함수 내에서 CCmdUI를 사용하여 명령 상태를 설정하고, 해당 상태에 따라 메뉴나 툴바 항목이 업데이트됩니다.
- Enable, SetCheck, SetRadio, SetText 등의 멤버 함수:
- CCmdUI 클래스는 다양한 멤버 함수를 제공하여 명령 상태를 설정할 수 있습니다. 몇 가지 주요 함수는 다음과 같습니다:
- Enable(BOOL bOn): 명령을 활성화 또는 비활성화합니다.
- SetCheck(int nCheck): 체크 상태를 설정합니다.
- SetRadio(BOOL bOn): 라디오 상태를 설정합니다.
- SetText(LPCTSTR lpszText): 텍스트를 설정합니다.
- CCmdUI 클래스는 다양한 멤버 함수를 제공하여 명령 상태를 설정할 수 있습니다. 몇 가지 주요 함수는 다음과 같습니다:
- CmdUI 구조체와의 사용:
- CCmdUI는 일반적으로 ON_UPDATE_COMMAND_UI 매크로와 함께 사용됩니다. 이 매크로는 ON_COMMAND 또는 ON_UPDATE_COMMAND_UI를 통해 명령 핸들러와 연결될 때 호출되어 CCmdUI 객체를 생성하고 초기화합니다.
아래는 간단한 CCmdUI 사용 예시입니다. 이렇게 설정된 CCmdUI 객체는 연결된 메뉴 항목이나 툴바 버튼에 반영되어 사용자에게 표시됩니다.
void CMyView::OnUpdateMyCommand(CCmdUI* pCmdUI) {
// 어떤 조건에 따라 명령 상태를 설정
pCmdUI->Enable(TRUE); // 활성화
pCmdUI->SetCheck(FALSE); // 체크 해제
pCmdUI->SetText(_T("New Text")); // 텍스트 설정
}
반응형
CCmdUI 클래스 내용
class CCmdUI // simple helper class
{
public:
// Attributes
UINT m_nID;
UINT m_nIndex; // menu item or other index
// if a menu item
CMenu* m_pMenu; // NULL if not a menu
CMenu* m_pSubMenu; // sub containing menu item
// if a popup sub menu - ID is for first in popup
// if from some other window
CWnd* m_pOther; // NULL if a menu or not a CWnd
// Operations to do in ON_UPDATE_COMMAND_UI
virtual void Enable(BOOL bOn = TRUE);
virtual void SetCheck(int nCheck = 1); // 0, 1 or 2 (indeterminate)
virtual void SetRadio(BOOL bOn = TRUE);
virtual void SetText(LPCTSTR lpszText);
// Advanced operation
void ContinueRouting();
// Implementation
CCmdUI();
BOOL m_bEnableChanged;
BOOL m_bContinueRouting;
UINT m_nIndexMax; // last + 1 for iterating m_nIndex
CMenu* m_pParentMenu; // NULL if parent menu not easily determined
// (probably a secondary popup menu)
BOOL DoUpdate(CCmdTarget* pTarget, BOOL bDisableIfNoHndler);
};
관련호출 예제
반응형
'코딩취미 > C,C++' 카테고리의 다른 글
[c언어] sizeof 와 ftell 의 차이점, 사용 목적 (0) | 2023.12.15 |
---|---|
[C언어] fopen 대신 fopen_s 를 사용하는 이유, 특징 정리 (0) | 2023.12.14 |
[C언어] C11 : ISO/IEC 9899:2011 특징과 내용 (0) | 2023.12.13 |
stricmp 와 strnicmp 차이점과 사용방법 (0) | 2023.12.06 |
vsnprintf 의 기능과 가변인자(va_list) 리스트 사용 방법 (0) | 2023.12.06 |