对话框和控件之间的消息如何控制

du51 2009-01-23 01:29:33
各位大侠你们好..我请教一个简单问题.


我建了一个对话框..里面有一个列表控件.
我想实现,一堆文件 拖放 进列表控件..列表控件显示它们.

我不想整个对话框都可以接受文件..只想列表控件接受文件.

问题出在消息上面..好像,只有控件能接受到消息..而拖放文件的处理函数是对话框的..

我如何才能实现我想要的功能.

刚开始学VC,请不吝赐教!
万分感谢.
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanvl 2009-01-23
  • 打赏
  • 举报
回复
OnDropFiles(HDROP hDropInfo)
{
POINT pt;
GetCursorPos(&pt);
CRect rtList;
m_list.GetWindowRect(&rtList);
if(!rtList.PtInRect(pt))//如果放下位置不在列表内
return;
}
du51 2009-01-23
  • 打赏
  • 举报
回复
我自己搞定了..从CListCtrl派生一个类就行了.呵呵..谢谢楼上两位了..
sanvl 2009-01-23
  • 打赏
  • 举报
回复
WS_EX_ACCEPTFILES 接受不到???
fishion 2009-01-23
  • 打赏
  • 举报
回复
同时设置一下列表控件的accept file属性
fishion 2009-01-23
  • 打赏
  • 举报
回复
把文件拖放到一个程序窗口里打开是一种十分普遍的方法。在MFC中可以通过如下方式实现:
1. 在Mainframe里面 响应WM_CREATE消息,也就是OnCreate里面,加入DragAcceptFiles(TRUE),如果是基于对话框的就放到OnPaint里面
2. 在Mainframe里面 添加对WM_DROPFILES消息的响应函数OnDropFiles
3. 在OnDropFiles函数中调用API函数DragQueryFile来检索被拖放文件的名字
具体代码如下:

void CMainFrame::OnDropFiles(HDROP hDropInfo)
{
const int fileCount = DragQueryFile(hDropInfo, (UINT)-1, NULL, 0);
ASSERT(fileCount >= 1);

TCHAR fileName[MAX_PATH] = { 0 };
for (int i = 0; i < fileCount; ++i)
{
DragQueryFile(hDropInfo, i, fileName, MAX_PATH);
//OpenFile(fileName); //使用得到的文件名fileName
}

CFrameWnd::OnDropFiles(hDropInfo); //因为这句,无需使用DragFinish(hDropInfo)释放检索,如果是基于对话框的就用CWnd::OnDropFiles(hDropInfo);
}


自己参考一下吧,再用上其它方法结合一下就可以了
du51 2009-01-23
  • 打赏
  • 举报
回复
首先感谢楼上几位回答的..
可能是我问题说的不清楚..

当一个文件拖到一个可接受文件的窗体上时,,光标是会变化的.
我把对话框设为不可接受文件..而对话框上的列表框是可接受文件的.

我意思是,只有文件拖到列表框时,,才处理这个事件..否则不处理 .
而现在,我接受不到这个消息.

请问如何解决?

先行谢谢了.

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧