使用CMFCEditBrowseCtrl选择文件?

时间:2016-01-14 17:45:38

标签: mfc

我不确定CMFCEditBrowseCtrl是否真的是为此而设计的,但是我想用它来让用户从对话框中选择一个文件,而不是手动拥有一个按钮,其处理程序创建一个{{ 1}}。

我遇到的问题是我想在选择文件时调用事件处理程序,但我不知道要捕获哪个事件。我尝试使用CFileDialog但是这使我的程序崩溃了 - 我点击了按钮,在打开文件窗口出现之前,我得到了一个奇怪的弹出窗口"无效的文件选择??????? ???" (或类似的,我没有这里的代码)当我点击确定应用程序结束。

这是对控件的有效使用吗?如果是,那么最小样本会是什么样的?

1 个答案:

答案 0 :(得分:3)

回答你的最小样本"问题:

  • 使用MFC应用程序向导生成对话框应用程序。

  • 在资源编辑器中,将MFC EditBrowse Control拖到对话框上。

  • 右键单击该控件,选择Add Event Handler...;在EN_CHANGE列表中选择Message type:,然后(可选)更改Function handler name:

  • (可选)再次右键单击控件并选择Add Variable...;如果未选中,请选中Control variable复选框;输入Variable name:,例如m_browser

这将添加

DDX_Control(pDX, IDC_MFCEDITBROWSE1, m_browser);

void CMFCDlgDlg::DoDataExchange(CDataExchange* pDX)

ON_EN_CHANGE(IDC_MFCEDITBROWSE1, &CMFCDlgDlg::OnEnChangeMfceditbrowse1)

到消息地图,这个方法:

void CMFCDlgDlg::OnEnChangeMfceditbrowse1()
{
}

我已将此代码添加到演示中,以确保其有效:

void CMFCDlgDlg::OnEnChangeMfceditbrowse1()
{
    CString str;
    m_browser.GetWindowTextW(str);
}