智谱
AI 正在加载摘要
源码介绍
C++写的一个拖动类,可以实现绑定List Control 或Edit等控件 实现拖动文件到空间读取路径功能
使用例子
首先将类文件.h .cpp文件添加到项目 然后创建一个List Control控件并为该控件添加一个变量m_List
然后在Dlg.cpp中申明一个全局类实例 DragClass _dr{};
然后需要写一个函数 调整一下list列表的样式代码如下
void SetListToForm(CListCtrl* listPtr, bool isCheck=false)
{
LONG_PTR lStyle;//超级列表框风格
lStyle = GetWindowLongPtr(listPtr->m_hWnd, GWL_STYLE);//获取当前风格
lStyle |= LVS_REPORT;//设置成报表格式;
SetWindowLongPtr(listPtr->m_hWnd, GWL_STYLE, lStyle);//设置样式
DWORD dStyle = listPtr->GetExtendedStyle();
dStyle |= LVS_EX_FULLROWSELECT;//整行选择;
dStyle |= LVS_EX_GRIDLINES;//整列选择;
listPtr->SetExtendedStyle(dStyle);
if (isCheck)listPtr->SetExtendedStyle(LVS_EX_CHECKBOXES);//设置复选框 listptr.getcheck() 可以获取选中状态
}在外部定义一个回调函数用来接收拖放的文件信息
LRESULT CALLBACK Fdrag1(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam)
{
if (uMsg == WM_DROPFILES)
{
char Pbuff[MAX_PATH]{};
int num = ::DragQueryFileA((HDROP)wParam, -1, Pbuff, MAX_PATH);
CString path;
// 获取所有接收到的目录 换行符分割;
for (int i = 0; i < num; i++)
{
::DragQueryFileA((HDROP)wParam, i, Pbuff, MAX_PATH);
if (i > 0)
{
path += "\r\n";
}
path += Pbuff;
}
DragFinish((HDROP)wParam);
AfxMessageBox("得到的路径信息" + path);
return 0;
}
return CallWindowProcA((WNDPROC)_dr.oldPtr, hwnd, uMsg, wParam, lParam);
}然后在OnInitDialog初始化函数中 添加以下两行代码
SetListToForm(&m_List);
_dr.RegControl(m_List.m_hWnd, Fdrag1);//绑定拖放类 fdrag1是一个回调函数 ![图片[1]-让MFC的列表框List Control支持拖放文件导入数据-可达鸭小栈](https://www.ikdya.com/wp-content/uploads/2026/03/image-4-1024x592.png)
上述步骤都操作完之后 运行程序 拖入文件到列表框内松开即可验证是否成功
![图片[2]-让MFC的列表框List Control支持拖放文件导入数据-可达鸭小栈](https://www.ikdya.com/wp-content/uploads/2026/03/image-5.png)
感谢您的来访,获取更多精彩文章请收藏本站。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END

![私有化部署源码[2026-04-13更新]-可达鸭小栈](https://img.ikdya.com/wp-content/uploads/2026/04/20260409080657504.jpg)






暂无评论内容