C++ 使用带有拖放功能的CListCtrl不起作用

C++ 使用带有拖放功能的CListCtrl不起作用,c++,mfc,clistctrl,C++,Mfc,Clistctrl,使用Visual Studio 2017,我试图在CListCtrl上启用拖放功能,为此我添加了如下代码: ON_WM_DROPFILES() DragAcceptFiles(); m_listctrl.DragAcceptFiles(); void ProgramNameHere::OnDropFiles(HDROP hDropInfo) { CString sFile; DWORD nBuffer = 0; // Get the number of files dropped i

使用Visual Studio 2017,我试图在
CListCtrl
上启用拖放功能,为此我添加了如下代码:

ON_WM_DROPFILES()

DragAcceptFiles();
m_listctrl.DragAcceptFiles();


void ProgramNameHere::OnDropFiles(HDROP hDropInfo)
{
CString sFile;
DWORD   nBuffer = 0;

// Get the number of files dropped
int nFilesDropped = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);

for (int i = 0; i<nFilesDropped; i++)
{
    // Get the buffer size of the file.
    nBuffer = DragQueryFile(hDropInfo, i, NULL, 0);

    // Get path and name of the file
    DragQueryFile(hDropInfo, i, sFile.GetBuffer(nBuffer + 1), nBuffer + 1);
    sFile.ReleaseBuffer();

    MessageBox(PathFindFileName(sFile), PathFindFileName(sFile));
}

    // Free the memory block containing the dropped-file information
    DragFinish(hDropInfo);

    CDialogEx::OnDropFiles(hDropInfo);
}
_WM_DROPFILES()上的

DragAcceptFiles();
m_listctrl.DragAcceptFiles();
void ProgramName here::OnDropFiles(HDROP hDropInfo)
{
CString-sFile;
德沃德·恩布费尔=0;
//获取删除的文件数
int nfilesdroped=DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);

for(int i=0;iIt看起来您已经为对话框启用了拖放功能,但没有为控件本身启用拖放功能。如何实现此功能?您可以从CListCtrl派生自己的类并处理拖放消息。DragAcceptFiles();//将拖放添加到整个对话框m_listctrl.DragAcceptFiles();//将DnD添加到特定的控件中。当您拖动文件并试图将其放到控件上时,消息也会在对话框而不是控件中传递。请删除第一行,即“DragAcceptFiles();”。