이미지 목록에서 이미지 끌기
CImageList 에는 화면에서 이미지를 끌기 위한 함수가 포함되어 있습니다. 끌기 함수는 커서 깜박임 없이 이미지를 컬러로 부드럽게 이동합니다. 마스킹된 이미지와 마스킹되지 않은 이미지를 모두 끌 수 있습니다.
BeginDrag 멤버 함수는 끌기 작업을 시작합니다. 매개 변수에는 끌 이미지의 인덱스 및 이미지 내의 핫 스폿 위치가 포함됩니다. 핫 스폿은 끌기 함수가 이미지의 정확한 화면 위치로 인식하는 단일 픽셀입니다. 일반적으로 애플리케이션은 마우스 커서의 핫 스폿과 일치하도록 핫 스폿을 설정합니다. DragMove 멤버 함수는 이미지를 새 위치로 이동합니다.
DragEnter 멤버 함수는 창 내에서 끌기 이미지의 초기 위치를 설정하고 위치에 이미지를 그립니다. 매개 변수에는 이미지를 그릴 창에 대한 포인터와 창 내에서 초기 위치의 좌표를 지정하는 점이 포함됩니다. 좌표는 클라이언트 영역이 아닌, 창의 왼쪽 상단 모서리를 기준으로 합니다. 좌표를 매개 변수로 사용하는 모든 이미지 끌기 함수도 마찬가지입니다. 즉, 좌표를 지정할 때 테두리, 제목 표시줄 및 메뉴 모음과 같은 창 요소의 너비를 보정해야 합니다. 호출DragEnter
할 때 NULL 창 핸들을 지정하는 경우 끌기 함수는 바탕 화면 창과 연결된 디바이스 컨텍스트에서 이미지를 그리고 좌표는 화면의 왼쪽 위 모서리를 기준으로 합니다.
DragEnter
는 끌기 작업 중에 지정된 창에 대한 다른 모든 업데이트를 잠깁니다. 끌어서 놓기 작업의 대상을 강조 표시하는 등 끌기 작업 중에 그리기를 수행해야 하는 경우 DragLeave 멤버 함수를 사용하여 끌어온 이미지를 일시적으로 숨길 수 있습니다. DragShowNoLock 멤버 함수를 사용할 수도 있습니다.
이미지 끌기가 완료되면 EndDrag를 호출합니다.
SetDragCursorImage 멤버 함수는 지정된 이미지(일반적으로 마우스 커서 이미지)를 현재 끌기 이미지와 결합하여 새 끌기 이미지를 만듭니다. 끌기 함수는 끌기 작업 중에 새 이미지를 사용하므로 Windows ShowCursor 함수를 사용하여 호출 SetDragCursorImage
후 실제 마우스 커서를 숨겨야 합니다. 그렇지 않으면 끌기 작업을 하는 동안 시스템에 마우스 커서가 두 개 있는 것처럼 보일 수 있습니다.
애플리케이션이 호출 BeginDrag
될 때 시스템은 임시 내부 이미지 목록을 만들고 지정된 끌기 이미지를 내부 목록에 복사합니다. GetDragImage 멤버 함수를 사용하여 임시 끌기 이미지 목록에 대한 포인터를 검색할 수 있습니다. 또한 이 함수는 현재 끌기 위치와 끌기 위치를 기준으로 끌어 온 이미지의 오프셋을 검색합니다.