C++ 使用带有拖放功能的CListCtrl不起作用
使用Visual Studio 2017,我试图在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
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();”。