CComControl 클래스

이 클래스는 ATL 컨트롤을 만들고 관리하기 위한 메서드를 제공합니다.

Important

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.

구문

template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
    public WinBase;

매개 변수

T
컨트롤을 구현하는 클래스입니다.

WinBase
창 함수를 구현하는 기본 클래스입니다. 기본값은 CWindowImpl입니다.

멤버

공용 생성자

속성 설명
CComControl::CComControl 생성자입니다.

공용 메서드

이름 설명
CComControl::ControlQueryInterface 요청된 인터페이스에 대한 포인터를 검색합니다.
CComControl::CreateControlWindow 컨트롤의 창을 만듭니다.
CComControl::FireOnChanged 컨트롤 속성이 변경되었음을 컨테이너의 싱크에 알깁니다.
CComControl::FireOnRequestEdit 컨트롤 속성이 변경되고 개체가 싱크를 진행하는 방법을 묻는 것을 컨테이너 싱크에 알깁니다.
CComControl::MessageBox 메시지 상자를 만들고 표시하고 작동하려면 이 메서드를 호출합니다.

설명

CComControl 는 ATL 컨트롤에 대한 유용한 컨트롤 도우미 함수 및 필수 데이터 멤버 집합입니다. ATL 컨트롤 마법사를 사용하여 표준 컨트롤 또는 DHTML 컨트롤을 만들 때 마법사는 자동으로 클래스를 파생 CComControl합니다. CComControl는 대부분의 메서드를 CComControlBase에서 파생합니다.

컨트롤을 만드는 방법에 대한 자세한 내용은 ATL 자습서를 참조하세요. ATL 프로젝트 마법사에 대한 자세한 내용은 ATL 프로젝트 만들기 문서를 참조하세요.

메서드 및 데이터 멤버의 CComControl 데모는 CIRC 샘플을 참조하세요.

상속 계층 구조

WinBase

CComControlBase

CComControl

요구 사항

헤더: atlctl.h

CComControl::CComControl

생성자입니다.

CComControl();

설명

CComControlBase 생성자를 호출하여 CWindowImpl을 통해 상속된 데이터 멤버를 전달 m_hWnd 합니다.

CComControl::ControlQueryInterface

요청된 인터페이스에 대한 포인터를 검색합니다.

virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);

매개 변수

iid
[in] 요청되는 인터페이스의 GUID입니다.

ppv
[out] iid로 식별되는 인터페이스 포인터에 대한 포인터이거나, 인터페이스를 찾을 수 없는 경우 NULL입니다.

설명

COM 맵 테이블의 인터페이스만 처리합니다.

예시

// Retrieve the control's IOleObject interface. Note interface 
// is automatically released when pOleObject goes out of scope

CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);

CComControl::CreateControlWindow

기본적으로 호출 CWindowImpl::Create하여 컨트롤에 대한 창을 만듭니다.

virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);

매개 변수

hWndParent
[in] 부모 또는 소유자 창에 대한 핸들입니다. 유효한 창 핸들을 제공해야 합니다. 컨트롤 창은 부모 창의 영역으로 제한됩니다.

rcPos
[in] 만들 창의 초기 크기와 위치입니다.

설명

예를 들어 두 개의 창을 만들려면 단일 창을 만드는 것 이외의 작업을 수행하려는 경우 이 메서드를 재정의합니다. 그 중 하나는 컨트롤의 도구 모음이 됩니다.

예시

RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;

// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);

CComControl::FireOnChanged

컨트롤 속성이 변경되었음을 컨테이너의 싱크에 알깁니다.

HRESULT FireOnChanged(DISPID dispID);

매개 변수

dispID
[in] 변경된 속성의 식별자입니다.

Return Value

표준 HRESULT 값 중 하나입니다.

설명

컨트롤 클래스가 IPropertyNotifySink에서 파생되는 경우 이 메서드는 CFirePropNotifyEvent::FireOnChanged를 호출하여 지정된 컨트롤 속성이 변경되었음을 모든 연결된 IPropertyNotifySink 인터페이스에 알립니다. 컨트롤 클래스가 IPropertyNotifySink파생되지 않으면 이 메서드는 S_OK 반환합니다.

컨트롤이 연결점을 지원하지 않는 경우에도 이 메서드를 호출해도 안전합니다.

예시

STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
   // store newVal in CComBstr member
   m_bstrMyText = newVal;

   // note the DISPID for the MyText property is 3 in this example
   FireOnChanged(3);

   return S_OK;
}

CComControl::FireOnRequestEdit

컨트롤 속성이 변경되고 개체가 싱크를 진행하는 방법을 묻는 것을 컨테이너 싱크에 알깁니다.

HRESULT FireOnRequestEdit(DISPID dispID);

매개 변수

dispID
[in] 변경하려는 속성의 식별자입니다.

Return Value

표준 HRESULT 값 중 하나입니다.

설명

컨트롤 클래스가 IPropertyNotifySink에서 파생되는 경우 이 메서드는 CFirePropNotifyEvent::FireOnRequestEdit를 호출하여 지정된 컨트롤 속성이 변경될 것임을 모든 연결된 IPropertyNotifySink 인터페이스에 알립니다. 컨트롤 클래스가 IPropertyNotifySink파생되지 않으면 이 메서드는 S_OK 반환합니다.

컨트롤이 연결점을 지원하지 않는 경우에도 이 메서드를 호출해도 안전합니다.

예시

STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
   // the DISPID for MyTitle in this example is 4
   DISPID dispID = 4;

   // make sure we can change the property
   if (FireOnRequestEdit(dispID) == S_FALSE)
      return S_FALSE;

   // store newVal in CComBstr member
   m_bstrMyTitle = newVal;

   // signal that the property has been changed
   FireOnChanged(dispID);

   return S_OK;
}

CComControl::MessageBox

메시지 상자를 만들고 표시하고 작동하려면 이 메서드를 호출합니다.

int MessageBox(
    LPCTSTR lpszText,
    LPCTSTR lpszCaption = _T(""),
    UINT nType = MB_OK);

매개 변수

lpszText
메시지 상자에 표시할 텍스트입니다.

lpszCaption
대화 상자 제목입니다. NULL(기본값)이면 제목 "Error"가 사용됩니다.

nType
대화 상자의 내용과 동작을 지정합니다. 사용 가능한 다양한 메시지 상자 목록은 Windows SDK 설명서의 MessageBox 항목을 참조하세요. 기본값은 간단한 확인 단추를 제공합니다.

Return Value

Windows SDK 설명서의 MessageBox 아래에 나열된 메뉴 항목 값 중 하나를 지정하는 정수 값을 반환합니다.

설명

MessageBox 는 개발 중에 유용하며 사용자에게 오류 또는 경고 메시지를 쉽게 표시할 수 있습니다.

참고 항목

CWindowImpl 클래스
클래스 개요
CComControlBase 클래스
CComCompositeControl 클래스