IAdviseSink::OnDataChange 메서드(objidl.h)

서버에서 호출하여 데이터 개체의 현재 등록된 알림 싱크에 개체의 데이터가 변경되었음을 알립니다.

구문

void OnDataChange(
  [in] FORMATETC *pFormatetc,
  [in] STGMEDIUM *pStgmed
);

매개 변수

[in] pFormatetc

호출 데이터 개체의 형식, 대상 디바이스, 렌더링 및 스토리지 정보를 설명하는 FORMATETC 구조체에 대한 포인터입니다.

[in] pStgmed

호출 데이터 개체에 대한 스토리지 매체(전역 메모리, 디스크 파일, 스토리지 개체, 스트림 개체, GDI 개체 또는 정의되지 않음)와 해당 매체의 소유권을 정의하는 STGMEDIUM 구조체에 대한 포인터입니다.

반환 값

없음

설명

링크 개체의 개체 처리기 및 컨테이너는 IAdviseSink::OnDataChange 를 구현하여 개체의 데이터가 변경되었다는 알림을 받으면 적절한 단계를 수행합니다. 또한 IDataObject::D Advise 를 호출하여 관심 있는 데이터의 개체와의 권고 연결을 설정해야 합니다.

OLE의 캐싱 지원을 활용하는 컨테이너는 데이터의 변경 내용을 포함하여 개체의 컨테이너 프레젠테이션을 업데이트하는 데 필요한 정보가 개체의 캐시에서 유지 관리되므로 데이터 변경 알림에 등록할 필요가 없습니다.

구현자에 대한 참고 사항

컨테이너에 대해 IAdviseSink::OnDataChange 를 구현하는 경우 이 메서드는 비동기적이며 비동기 메서드 내에서 동기 호출을 하는 것은 유효하지 않습니다. 따라서 IDataObject::GetData 를 호출하여 개체를 업데이트하는 데 필요한 데이터를 가져올 수 없습니다. 대신, 내부 메시지를 게시하거나 InvalidateRect 를 호출하고 WM_PAINT 메시지를 기다리며 변경된 데이터에 대한 사각형을 무효화합니다. 이때 데이터를 자유롭게 가져와서 개체를 업데이트할 수 있습니다.

호출 기간 동안만 유효한 데이터 자체는 pStgmed가 가리키는 스토리지 매체를 사용하여 전달됩니다. 발신자가 매체를 소유하므로 조언 싱크는 이를 해제해서는 안됩니다. 또한 pStgmed가IStorage 또는 IStream 인터페이스를 가리키는 경우 싱크는 참조 횟수를 증가시키지 않아야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h

추가 정보

IAdviseSink