DoDragDrop 함수(ole2.h)
OLE 끌어서 놓기 작업을 수행합니다.
구문
HRESULT DoDragDrop(
[in] LPDATAOBJECT pDataObj,
[in] LPDROPSOURCE pDropSource,
[in] DWORD dwOKEffects,
[out] LPDWORD pdwEffect
);
매개 변수
[in] pDataObj
끌 데이터를 포함하는 데이터 개체의 IDataObject 인터페이스에 대한 포인터입니다.
[in] pDropSource
끌기 작업 중에 원본과 통신하는 데 사용되는 IDropSource 인터페이스의 구현에 대한 포인터입니다.
[in] dwOKEffects
원본이 OLE 끌어서 놓기 작업에서 허용하는 효과입니다. 가장 중요한 것은 이동을 허용하는지 여부입니다. dwOKEffect 및 pdwEffect 매개 변수는 DROPEFFECT 열거형에서 값을 가져옵니다. 값 목록은 DROPEFFECT를 참조하세요.
[out] pdwEffect
OLE 끌어서 놓기 작업이 원본 데이터에 미치는 영향을 나타내는 값에 대한 포인터입니다. pdwEffect 매개 변수는 작업이 취소되지 않은 경우에만 설정됩니다.
반환 값
이 함수는 성공에 대한 S_OK 반환합니다. 다른 가능한 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
OLE 끌어서 놓기 작업이 성공했습니다. |
|
OLE 끌어서 놓기 작업이 취소되었습니다. |
|
예기치 않은 오류가 발생했습니다. |
설명
OLE 끌어서 놓기 작업의 데이터 원본 역할을 할 수 있는 애플리케이션을 개발하는 경우 사용자가 OLE 끌어서 놓기 작업을 시작한 것을 감지할 때 DoDragDrop 을 호출해야 합니다.
DoDragDrop 함수는 IDropSource 및 IDropTarget 인터페이스에서 다양한 메서드를 호출하는 루프를 입력합니다. (끌어서 놓기 작업을 성공적으로 수행하려면 데이터 원본 역할을 하는 애플리케이션도 IDropSource를 구현해야 하지만 대상 애플리케이션은 IDropTarget을 구현해야 합니다.)
- DoDragDrop 함수는 현재 커서 위치 아래의 창을 결정합니다. 그런 다음 이 창이 유효한 삭제 대상인지 확인합니다.
- 창이 유효한 놓기 대상인 경우 DoDragDrop 은 IDropTarget::D ragEnter를 호출합니다. 이 메서드는 삭제가 실제로 발생한 경우의 결과를 나타내는 효과 코드를 제공합니다. 유효한 드롭 효과 목록은 DROPEFFECT 열거형을 참조하세요.
- DoDragDrop 은 드롭 소스 인터페이스가 사용자에게 적절한 시각적 피드백을 제공할 수 있도록 효과 코드로 IDropSource::GiveFeedback 을 호출합니다. DoDragDrop에 전달된 pDropSource 포인터는 적절한 IDropSource 인터페이스를 지정합니다.
-
DoDragDrop 은 마우스 커서의 움직임과 키보드 또는 마우스 단추 상태의 변화를 추적합니다.
- 사용자가 창 밖으로 이동하면 DoDragDrop 은 IDropTarget::D ragLeave를 호출합니다.
- 마우스가 다른 창에 들어가면 DoDragDrop 은 해당 창이 유효한 놓기 대상인지 확인한 다음 해당 창에 대해 IDropTarget::D ragEnter 를 호출합니다.
- 마우스가 이동하지만 동일한 창 내에 있으면 DoDragDrop 은 IDropTarget::D ragOver를 호출합니다.
-
키보드 또는 마우스 단추 상태가 변경된 경우 DoDragDrop 은 IDropSource::QueryContinueDrag 를 호출하고 끌기를 계속할지, 데이터를 삭제할지, 반환 값에 따라 작업을 취소할지를 결정합니다.
- 반환 값이 S_OK 경우 DoDragDrop 은 먼저 IDropTarget::D ragOver 를 호출하여 작업을 계속합니다. 이 메서드는 새 효과 값을 반환하고 DoDragDrop 은 적절한 시각적 피드백을 설정할 수 있도록 새 효과로 IDropSource::GiveFeedback 을 호출합니다. 유효한 드롭 효과 목록은 DROPEFFECT 열거형을 참조하세요. IDropTarget::D ragOver 및 IDropSource::GiveFeedback 이 페어링되므로 마우스가 놓기 대상을 가로질러 이동하면 사용자에게 마우스 위치에 대한 최신 피드백이 제공됩니다.
- 반환 값이 DRAGDROP_S_DROP 경우 DoDragDrop 은 IDropTarget::D rop을 호출합니다. DoDragDrop 함수는 소스에 마지막 효과 코드를 반환하므로 원본 애플리케이션은 원본 데이터에 대해 적절한 작업을 수행할 수 있습니다(예: 작업이 이동인 경우 데이터 잘라내기).
- 반환 값이 DRAGDROP_S_CANCEL 경우 DoDragDrop 함수는 IDropTarget::D ragLeave를 호출합니다.
터치 또는 펜 입력을 지원하려면 터치 처리기에서 DoDragDrop 을 호출하지 마세요. 대신 시스템이 터치 입력 시 합성하는 마우스 메시지에 대해 처리기에서 DoDragDrop 을 호출합니다.
애플리케이션은 GetMessageExtraInfo 함수를 호출하여 합성된 메시지를 식별할 수 있습니다. GetMessageExtraInfo를 사용하여 마우스 입력과 Windows Touch 입력을 구분하는 방법에 대한 자세한 내용은 애플리케이션 문제 해결을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | ole2.h |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |