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의 경우에는 모든 샘플이 온라인에 있습니다.
샘플 빌드 및 실행
이 샘플을 빌드하고 실행하려면
atlbutn.sln 솔루션 파일을 엽니다.
빌드 메뉴에서 솔루션 빌드를 클릭합니다.
ActiveX Control Test Container를 열고 컨트롤을 삽입합니다(AtlButton 개체). 테스트 컨테이너에 액세스하고 테스트 컨테이너를 사용하여 컨트롤을 테스트하는 데 대한 자세한 내용은 Test Container를 사용하여 속성 및 이벤트 테스트를 참조하십시오.
컨트롤의 속성 대화 상자를 연 다음 샘플 폴더를 찾아 BMP 파일을 선택하고 적용을 클릭하여 이미지와 목록에 있는 각 속성을 연결합니다.
포인터가 컨트롤을 가리키거나 컨트롤이 클릭되는 경우 컨트롤에 표시되는 이미지는 달라집니다.
특성
이 샘플에서는 다음의 특성을 사용합니다.
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++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다. |