ATLBUTTON 특성 샘플: 상태에 따라 다른 비트맵을 사용하는 단추 만들기

업데이트: 2007년 11월

ATLBUTTON 특성 샘플에서는 상태에 따라 세 가지 비트맵 중 하나를 사용하여 표시되는 단추를 만듭니다. 이 단추에는 누름 상태, 가리킴 상태(마우스가 단추 위에 있는 상태) 및 누르지 않음 상태에 사용하는 비트맵이 있습니다. 기본 비트맵은 샘플에 포함되어 있지만 이 속성을 재정의하여 사용자 고유의 비트맵을 사용할 수 있습니다.

이 샘플에서는 일부 IDL, COM 및 컴파일러 특성의 사용 방법도 보여 줍니다. dispinterface 특성은 atlbutn.idl 파일에 dispatch 인터페이스 _ATLButton을 배치하는 데 사용됩니다. propputref 특성은 PictureStatic, PictureHover 및 PicturePush 함수에서 값 대신 참조를 사용할 수 있도록 하는 데 사용됩니다. 일반적으로 사용되는 다른 특성 중에서도 버전 특성을 보여 줍니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드 및 실행

이 샘플을 빌드하고 실행하려면

  1. atlbutn.sln 솔루션 파일을 엽니다.

  2. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

  3. ActiveX Control Test Container를 열고 컨트롤을 삽입합니다(AtlButton 개체). 테스트 컨테이너에 액세스하고 테스트 컨테이너를 사용하여 컨트롤을 테스트하는 데 대한 자세한 내용은 Test Container를 사용하여 속성 및 이벤트 테스트를 참조하십시오.

  4. 컨트롤의 속성 대화 상자를 연 다음 샘플 폴더를 찾아 BMP 파일을 선택하고 적용을 클릭하여 이미지와 목록에 있는 각 속성을 연결합니다.

  5. 포인터가 컨트롤을 가리키거나 컨트롤이 클릭되는 경우 컨트롤에 표시되는 이미지는 달라집니다.

특성

이 샘플에서는 다음의 특성을 사용합니다.

coclass, default, dispinterface, dll, dual, event_source, helpstring, id, implements_category, in, module, name, object, out, pointer_default, progid, propget, propput, propputref, registration_script, retval, support_error_info, uuid, version, vi_progid

키워드

이 샘플에서는 다음의 키워드를 사용합니다.

Apartment; ATLTRACE; AtlWaitWithMessageLoop; BEGIN_COM_MAP; BEGIN_CONNECTION_POINT_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; BEGIN_PROPERTY_MAP; CComCoClass; CComControl; CComControl::FireViewChange; CComControl::InPlaceActivate; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; CloseHandle; CoGetInterfaceAndReleaseStream; CoInitialize; COleControl::OnClick; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL_IID; CoMarshalInterThreadInterfaceInStream; CONNECTION_POINT_ENTRY; CProxy_ATLButton; CreateDIBPalette; CreatePalette; CreateThread; CTimer; DECLARE_HANDLE; DECLARE_REGISTRY_RESOURCEID; DIBNumColors; DisableThreadLibraryCalls; DLL_PROCESS_DETACH; END_COM_MAP; END_CONNECTION_POINT_MAP; END_MSG_MAP; END_OBJECT_MAP; END_PROPERTY_MAP; GetCursorPos; GetFileSize; GetWindow; GlobalAlloc; GlobalFree; GlobalLock; GlobalSize; GlobalUnlock; IConnectionPointContainerImpl; IConnectionPointImpl; IDispatchImpl; IObjectSafetyImpl; IOleControlImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceObjectWindowlessImpl; IOleInPlaceObjectWindowlessImpl::InPlaceDeactivate; IOleObjectImpl; IPersistPropertyBagImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IViewObjectExImpl; LPLOGPALETTE; MESSAGE_HANDLER; OBJECT_ENTRY; PaintDIB; PaletteSize; PROP_ENTRY; PtInRect; PutImage; ReadDIBFile; ReadFile; RealizePalette; ScreenToClient; SelectPalette; SetDIBitsToDevice; SetStretchBltMode; Sleep; StretchDIBits; TimerOff; TimerOn; Unlock; USES_CONVERSION

참고:

이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다.

참고 항목

기타 리소스

ATL 특성 샘플