我不确定CMFCEditBrowseCtrl
是否真的是为此而设计的,但是我想用它来让用户从对话框中选择一个文件,而不是手动拥有一个按钮,其处理程序创建一个{{ 1}}。
我遇到的问题是我想在选择文件时调用事件处理程序,但我不知道要捕获哪个事件。我尝试使用CFileDialog
但是这使我的程序崩溃了 - 我点击了按钮,在打开文件窗口出现之前,我得到了一个奇怪的弹出窗口"无效的文件选择??????? ???" (或类似的,我没有这里的代码)当我点击确定应用程序结束。
这是对控件的有效使用吗?如果是,那么最小样本会是什么样的?
答案 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);
}