여기
내가
void yourclass::OnDropFiles(HDROP hDropInfo)
{
TCHAR lpszFile[MAX_PATH] = { 0 };
UINT uFile = 0;
uFile = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, NULL);
if (uFile != 0)
{
for (int i = 0; i < uFile; i++)
{
lpszFile[0] = '\0';
if (DragQueryFile(hDropInfo, i, lpszFile, MAX_PATH))
{
std::wstring directory;
std::wstring filename;
LVITEM lvi = { 0 };
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
SplitPath(lpszFile, directory, filename);
lvi.iSubItem = 0;
lvi.pszText = LPSTR_TEXTCALLBACK;
lvi.cchTextMax = MAX_PATH;
int n = m_wndFileList.InsertItem(&lvi);
m_wndFileList.SetItemText(n, 0, filename.c_str());
m_wndFileList.SetItemText(n, 1, directory.c_str());
}
}
}
DragFinish(hDropInfo);
return;
CDialogEx::OnDropFiles(hDropInfo);
}
'DragQueryFile'은 단지 텍스트 표현을 가진 파일/경로를 지원하는 데이터 형식'CF_HDROP'와 함께 작동합니다 (예를 들어 실제 파일 시스템을 사용하는 방법입니다 파일). 자신 만의 네임 스페이스 확장을 쓰고 있다면 아마도 네이티브 COM 드래그/드롭 (DoDragDrop, IDataObject, IDropSource, IDropTarget 등)을 사용해야 할 것입니다. –
안녕하세요, 조나단, 업데이트 해 주셔서 감사합니다. COM 드래그 앤 드롭을 프로젝트에서만 사용하고 있습니다. 하지만 확장 사이에 파일을 드래그 앤 드롭해야합니다. 여러 파일을 선택하면 하나의 파일에 대해 드래그 앤 드롭을 구현할 수 있습니다. 이제 PIDL 데이터를 반복하고 다른 요소를 찾으려고합니다. pidl을 반복하고 다음 항목을 찾는 방법에 관한 몇 가지 빛을 제공해 주시겠습니까? – user2612741