我想在对话框中拖动文件并获取文件的路径。 所以我搜索了网页并试了一下。
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方法中检查了断点。 但即使我丢弃了一个文件,也没有发生任何事情。
你有什么想法吗?等着你的教学。 谢谢。
答案 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)
时,必须调用它