使用MFC在对话框上拖动文件

时间:2017-03-13 02:54:39

标签: c++ mfc

我想在对话框中拖动文件并获取文件的路径。 所以我搜索了网页并试了一下。

MyDlg.cpp

26        |                |                                                      25        |                |                                                      24        |                |                                                      23        |                |

26        |                |                                                      25        |                |                                                      24        |                |                                                      23        |                |                                                      22        |                |                                                      21

26        |                |                                                      25        |                |                                                      24        |                |                                                      23        |                |

26        |                |                                                      25        |                |                                                      24        |                |                                                      23        |                |                                                      22        |                |                                                      21        |                |                                                      20        |                |

26        |                |                                                      25        |                |                                                      24        |                |                                                      23        |                |                                                      22        |                |                                                      21        |                |                                                      20

26        |                |                                                      25        |                |                                                      24

我认为这并不困难。 只需设置消息" ON_WM_DROPFILES()"在对话框中 并设置" CDialog :: DragAcceptFiles();"在对话框的OnInitDialog()方法中。

如果我在对话框上拖动文件,我预计OnDropFiles(HDROP hDropInfo)是道路。 我已经使用调试模式进行了测试,并在OnDropFiles方法中检查了断点。 但即使我丢弃了一个文件,也没有发生任何事情。

你有什么想法吗?等着你的教学。 谢谢。

2 个答案:

答案 0 :(得分:0)

如果应用程序以管理员身份运行,则必须在DragAcceptFiles();

之前包含此第2行

例如。

BOOL KmCdmMakeMultiProjectDlg::OnInitDialog() 
{   
    CDialog::OnInitDialog();
    ChangeWindowMessageFilter(0x0049, MSGFLT_ADD);
    ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
    CDialog::DragAcceptFiles();
}

分数是ChangeWindowMessageFilter。

谢谢。

答案 1 :(得分:0)

在C ++和C的名称中,不要使用ChangeWindowMessageFilter。 这涉及权限隔离(UIPI)消息过滤器,与拖放支持无关。

您必须通过处理WM_DROPFILES消息为任何将要接受拖放的Windows对象调用 DragAcceptFiles 。 当对象附加到窗口(有效的m_hWnd)

时,必须调用它