MFC OnDropFiles 不响应问题?

gell-lee 2016-08-04 10:42:09

ON_WM_DROPFILES()
.................................
void CMFCApplication1View::OnDropFiles(HDROP hDropInfo)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CFormView::OnDropFiles(hDropInfo);
}

BOOL CMFCApplication1View::PreTranslateMessage(MSG* pMsg)
{
// CDialog d;
if(::TranslateAccelerator(m_hWnd,hAccel,pMsg))
return TRUE;
// return d.PreTranslateMessage(pMsg);
if(pMsg->message == WM_DROPFILES)
{
int i = 0;
}
return CFormView::PreTranslateMessage(pMsg);

}
......................................

Dialog 和 List control 里面的属性 Accepet Files 均设置为 TRUE
当我拖拽文件是OnDropFiles 是不会响应的。在PreTranslateMessage 能捕捉到WM_DROPFILES信号!
小白求助大神!!!
...全文
1054 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiki商 2017-02-23
  • 打赏
  • 举报
回复
还有一种情况:UAC http://blog.csdn.net/learner198461/article/details/42223835
用户 昵称 2016-08-05
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
OnInitialUpdate 中 调用 DragAcceptFiles(TRUE)
Eleven 2016-08-05
  • 打赏
  • 举报
回复
引用 13 楼 u010998860 的回复:
[quote=引用 12 楼 VisualEleven 的回复:] 你基类用了CFormView,只有在对话框资源中设置Accept Files为TRUE,然后对应的View类添加WM_DROPFILES消息处理即可。
我基类是CFormView,在view类中添加的WM_DROPFILES消息, 在View中管理list control :DDX_Control(pDX, IDC_LIST1, m_list); IDC_List1的acccept files属性设为true 然后向IDC_LIST1中拖文件就是不响应;[/quote] 你的FormView如果在资源编辑器上设置了Accept Files属性的话,你往FormView上拖文件,肯定是有响应的。 如果你讲文件往ListControl上拖的话,希望也有响应,那么你应该重载CListCtrl类,在派生类中添加处理WM_DROPFILES属性。
gell-lee 2016-08-05
  • 打赏
  • 举报
回复
引用 12 楼 VisualEleven 的回复:
你基类用了CFormView,只有在对话框资源中设置Accept Files为TRUE,然后对应的View类添加WM_DROPFILES消息处理即可。
我基类是CFormView,在view类中添加的WM_DROPFILES消息, 在View中管理list control :DDX_Control(pDX, IDC_LIST1, m_list); IDC_List1的acccept files属性设为true 然后向IDC_LIST1中拖文件就是不响应;
Eleven 2016-08-05
  • 打赏
  • 举报
回复
你基类用了CFormView,只有在对话框资源中设置Accept Files为TRUE,然后对应的View类添加WM_DROPFILES消息处理即可。
gell-lee 2016-08-05
  • 打赏
  • 举报
回复
引用 10 楼 zgl7903 的回复:
在PreTranslateMessage 能捕捉到WM_DROPFILES信号 那看看此时的 pMsg->hwnd 指向的是View吗? ON_WM_DROPFILES() 是在View下吗? 我建一个默认MDI项目, 可以正常走到 OnDropFiles
感谢你的回答, ON_WM_DROPFILES()确实是在view下面, 但是pMsg->hwnd不是指向view的
zgl7903 2016-08-05
  • 打赏
  • 举报
回复
在PreTranslateMessage 能捕捉到WM_DROPFILES信号 那看看此时的 pMsg->hwnd 指向的是View吗? ON_WM_DROPFILES() 是在View下吗? 我建一个默认MDI项目, 可以正常走到 OnDropFiles
gell-lee 2016-08-05
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
OnInitialUpdate 中 调用 DragAcceptFiles(TRUE)
早就试过了,不行的
gell-lee 2016-08-05
  • 打赏
  • 举报
回复
引用 4 楼 VisualEleven 的回复:
[quote=引用 3 楼 u010998860 的回复:] [quote=引用 2 楼 VisualEleven 的回复:] 你的View类也应该设置WS_EX_ACCEPTFILE属性,比如

BOOL CMFCApplication1View::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.dwExStyle |= WS_EX_ACCEPTFILES;
	return CView::PreCreateWindow(cs);
}
这样加了,还是不会响应[/quote] 你把文件向View窗口上拖不会进入CMFCApplication1View::OnDropFiles()函数??[/quote] 是的,这个函数断点不会进来
赵4老师 2016-08-05
  • 打赏
  • 举报
回复
引用 6 楼 jennyvenus 的回复:
[quote=引用 5 楼 zgl7903 的回复:] OnInitialUpdate 中 调用 DragAcceptFiles(TRUE)
[/quote] 老将出马,一个顶俩。
Eleven 2016-08-04
  • 打赏
  • 举报
回复
你的View类也应该设置WS_EX_ACCEPTFILE属性,比如

BOOL CMFCApplication1View::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.dwExStyle |= WS_EX_ACCEPTFILES;
	return CView::PreCreateWindow(cs);
}
叶恭介叶恭介 2016-08-04
  • 打赏
  • 举报
回复
试下在MainFrm接收这消息
zgl7903 2016-08-04
  • 打赏
  • 举报
回复
OnInitialUpdate 中 调用 DragAcceptFiles(TRUE)
Eleven 2016-08-04
  • 打赏
  • 举报
回复
引用 3 楼 u010998860 的回复:
[quote=引用 2 楼 VisualEleven 的回复:] 你的View类也应该设置WS_EX_ACCEPTFILE属性,比如

BOOL CMFCApplication1View::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.dwExStyle |= WS_EX_ACCEPTFILES;
	return CView::PreCreateWindow(cs);
}
这样加了,还是不会响应[/quote] 你把文件向View窗口上拖不会进入CMFCApplication1View::OnDropFiles()函数??
gell-lee 2016-08-04
  • 打赏
  • 举报
回复
引用 2 楼 VisualEleven 的回复:
你的View类也应该设置WS_EX_ACCEPTFILE属性,比如

BOOL CMFCApplication1View::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.dwExStyle |= WS_EX_ACCEPTFILES;
	return CView::PreCreateWindow(cs);
}
这样加了,还是不会响应

15,980

社区成员

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

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