DoDragDrop 함수(ole2.h)

OLE 끌어서 놓기 작업을 수행합니다.

참고 이 함수를 호출하기 전에 OleInitialize를 호출해야 합니다.
 

구문

HRESULT DoDragDrop(
  [in]  LPDATAOBJECT pDataObj,
  [in]  LPDROPSOURCE pDropSource,
  [in]  DWORD        dwOKEffects,
  [out] LPDWORD      pdwEffect
);

매개 변수

[in] pDataObj

끌 데이터를 포함하는 데이터 개체의 IDataObject 인터페이스에 대한 포인터입니다.

[in] pDropSource

끌기 작업 중에 원본과 통신하는 데 사용되는 IDropSource 인터페이스의 구현에 대한 포인터입니다.

[in] dwOKEffects

원본이 OLE 끌어서 놓기 작업에서 허용하는 효과입니다. 가장 중요한 것은 이동을 허용하는지 여부입니다. dwOKEffectpdwEffect 매개 변수는 DROPEFFECT 열거형에서 값을 가져옵니다. 값 목록은 DROPEFFECT를 참조하세요.

[out] pdwEffect

OLE 끌어서 놓기 작업이 원본 데이터에 미치는 영향을 나타내는 값에 대한 포인터입니다. pdwEffect 매개 변수는 작업이 취소되지 않은 경우에만 설정됩니다.

반환 값

이 함수는 성공에 대한 S_OK 반환합니다. 다른 가능한 값은 다음과 같습니다.

반환 코드 설명
DRAGDROP_S_DROP
OLE 끌어서 놓기 작업이 성공했습니다.
DRAGDROP_S_CANCEL
OLE 끌어서 놓기 작업이 취소되었습니다.
E_UNSPEC
예기치 않은 오류가 발생했습니다.

설명

OLE 끌어서 놓기 작업의 데이터 원본 역할을 할 수 있는 애플리케이션을 개발하는 경우 사용자가 OLE 끌어서 놓기 작업을 시작한 것을 감지할 때 DoDragDrop 을 호출해야 합니다.

DoDragDrop 함수는 IDropSourceIDropTarget 인터페이스에서 다양한 메서드를 호출하는 루프를 입력합니다. (끌어서 놓기 작업을 성공적으로 수행하려면 데이터 원본 역할을 하는 애플리케이션도 IDropSource를 구현해야 하지만 대상 애플리케이션은 IDropTarget을 구현해야 합니다.)

  1. DoDragDrop 함수는 현재 커서 위치 아래의 창을 결정합니다. 그런 다음 이 창이 유효한 삭제 대상인지 확인합니다.
  2. 창이 유효한 놓기 대상인 경우 DoDragDropIDropTarget::D ragEnter를 호출합니다. 이 메서드는 삭제가 실제로 발생한 경우의 결과를 나타내는 효과 코드를 제공합니다. 유효한 드롭 효과 목록은 DROPEFFECT 열거형을 참조하세요.
  3. DoDragDrop 은 드롭 소스 인터페이스가 사용자에게 적절한 시각적 피드백을 제공할 수 있도록 효과 코드로 IDropSource::GiveFeedback 을 호출합니다. DoDragDrop에 전달된 pDropSource 포인터는 적절한 IDropSource 인터페이스를 지정합니다.
  4. DoDragDrop 은 마우스 커서의 움직임과 키보드 또는 마우스 단추 상태의 변화를 추적합니다.
    • 사용자가 창 밖으로 이동하면 DoDragDropIDropTarget::D ragLeave를 호출합니다.
    • 마우스가 다른 창에 들어가면 DoDragDrop 은 해당 창이 유효한 놓기 대상인지 확인한 다음 해당 창에 대해 IDropTarget::D ragEnter 를 호출합니다.
    • 마우스가 이동하지만 동일한 창 내에 있으면 DoDragDropIDropTarget::D ragOver를 호출합니다.
  5. 키보드 또는 마우스 단추 상태가 변경된 경우 DoDragDropIDropSource::QueryContinueDrag 를 호출하고 끌기를 계속할지, 데이터를 삭제할지, 반환 값에 따라 작업을 취소할지를 결정합니다.
    • 반환 값이 S_OK 경우 DoDragDrop 은 먼저 IDropTarget::D ragOver 를 호출하여 작업을 계속합니다. 이 메서드는 새 효과 값을 반환하고 DoDragDrop 은 적절한 시각적 피드백을 설정할 수 있도록 새 효과로 IDropSource::GiveFeedback 을 호출합니다. 유효한 드롭 효과 목록은 DROPEFFECT 열거형을 참조하세요. IDropTarget::D ragOverIDropSource::GiveFeedback 이 페어링되므로 마우스가 놓기 대상을 가로질러 이동하면 사용자에게 마우스 위치에 대한 최신 피드백이 제공됩니다.
    • 반환 값이 DRAGDROP_S_DROP 경우 DoDragDropIDropTarget::D rop을 호출합니다. DoDragDrop 함수는 소스에 마지막 효과 코드를 반환하므로 원본 애플리케이션은 원본 데이터에 대해 적절한 작업을 수행할 수 있습니다(예: 작업이 이동인 경우 데이터 잘라내기).
    • 반환 값이 DRAGDROP_S_CANCEL 경우 DoDragDrop 함수는 IDropTarget::D ragLeave를 호출합니다.
DoDragDrop 은 터치 또는 펜 입력을 처리할 때 끌어서 놓기 지원 호출을 지원하지 않습니다.

터치 또는 펜 입력을 지원하려면 터치 처리기에서 DoDragDrop 을 호출하지 마세요. 대신 시스템이 터치 입력 시 합성하는 마우스 메시지에 대해 처리기에서 DoDragDrop 을 호출합니다.

애플리케이션은 GetMessageExtraInfo 함수를 호출하여 합성된 메시지를 식별할 수 있습니다. GetMessageExtraInfo를 사용하여 마우스 입력과 Windows Touch 입력을 구분하는 방법에 대한 자세한 내용은 애플리케이션 문제 해결을 참조하세요.

요구 사항

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

추가 정보

IDropSource