gpt4 book ai didi

c++ - 使用 MFC 在对话框中拖动文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:07 33 4
gpt4 key购买 nike

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

MyDlg.cpp

KmCdmMakeMultiProjectDlg::KmCdmMakeMultiProjectDlg(CWnd* pParent)
: CDialog (KmCdmMakeMultiProjectDlg::IDD, pParent)
{
}

void KmCdmMakeMultiProjectDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_MULTIPART, lst_AddList);
DDX_Control(pDX, IDC_BTN_ADD_PROJECT, btn_AddList);
DDX_Control(pDX, IDC_BTN_ADDLIST_CSV, btn_AddList_CSV);
DDX_Control(pDX, IDC_BTN_DEL_PROJECT, btn_DelList);
DDX_Control(pDX, IDC_BTN_TARGET_SELECT, btn_ReferFolder);
DDX_Control(pDX, IDC_BTN_FILE_SELECT, btn_ReferCSV);
DDX_Control(pDX, IDC_BTN_EXECUTE, btn_Execute);
DDX_Control(pDX, IDC_BTN_EDIT_NAME, btn_EditName);
DDX_Control(pDX, IDC_BTN_EDIT_DESCRIPTION, btn_EditDescription);
DDX_Control(pDX, ID_CLOSE, btn_Close);
}

BEGIN_MESSAGE_MAP(KmCdmMakeMultiProjectDlg, CDialog)
ON_BN_CLICKED(IDC_BTN_ADD_PROJECT, &KmCdmMakeMultiProjectDlg::AddList)
ON_BN_CLICKED(IDC_BTN_ADDLIST_CSV, &KmCdmMakeMultiProjectDlg::AddListCSV)
ON_BN_CLICKED(IDC_BTN_DEL_PROJECT, &KmCdmMakeMultiProjectDlg::DelList)
ON_BN_CLICKED(IDC_BTN_TARGET_SELECT, &KmCdmMakeMultiProjectDlg::SelectPath)
ON_BN_CLICKED(IDC_BTN_FILE_SELECT, &KmCdmMakeMultiProjectDlg::SelectCSV)
ON_BN_CLICKED(IDC_BTN_EXECUTE, &KmCdmMakeMultiProjectDlg::MakeExecute)
ON_BN_CLICKED(IDC_BTN_EDIT_NAME, &KmCdmMakeMultiProjectDlg::EditName)
ON_BN_CLICKED(IDC_BTN_EDIT_DESCRIPTION, &KmCdmMakeMultiProjectDlg::EditDescription)
ON_BN_CLICKED(ID_CLOSE, &KmCdmMakeMultiProjectDlg::CloseDialog)
ON_WM_DROPFILES()
END_MESSAGE_MAP()

BOOL KmCdmMakeMultiProjectDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CDialog::DragAcceptFiles();
}

void KmCdmMakeMultiProjectDlg::OnDropFiles(HDROP hDropInfo)
{
CString csfile = "Why don't come this break point!";
CDialog::OnDropFiles(hDropInfo);
}

我觉得不难。只需在对话框中设置消息 ON_WM_DROPFILES(),并在对话框的 OnInitDialog() 方法中设置 CDialog::DragAcceptFiles();

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

你有什么想法吗,等你教。谢谢。

最佳答案

如果应用程序以管理员身份运行,必须在 DragAcceptFiles() 之前包含这两行;

例如。

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

点是ChangeWindowMessageFilter。

谢谢。

关于c++ - 使用 MFC 在对话框中拖动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755952/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com