如何从CMFCEditBrowseCtrl获取路径文本?

M.Y*_*.Y. 5 c++ winapi mfc visual-studio-2010

我正在研究MFC win32项目.我有2个CMFCEditBrowseCtrl控件的对话框.用户在这些控件上指定文件后,如何从这些控件中获取文件路径?

更新:这是我的代码

SpecifyInputDialog dlg; // this is my dialog inherited from CDialogEx
dlg.DoModal();
CString strText;
dlg.inFileCtrl.GetWindowTextA(strText.GetBuffer(), 500); // inFileCtrl is CMFCEditBrowseCtrl object
Run Code Online (Sandbox Code Playgroud)

结果在最后一行"Debug Assertion Failed"错误...

更新2:

CString strText;
dlg.inFileCtrl.GetWindowText(strText);
Run Code Online (Sandbox Code Playgroud)

相同的"Debug Assertion Failed"错误.我将尝试在对话未被解除时获取文本.

更新3(已解决):

我设法通过实现回调来获取路径文本

BEGIN_MESSAGE_MAP(SpecifyInputDialog, CDialogEx)
  ON_EN_CHANGE(IDC_MFCEDITBROWSE1, &SpecifyInputDialog::OnEnChangeMfceditbrowse1)
END_MESSAGE_MAP()  
Run Code Online (Sandbox Code Playgroud)

并在处理程序方法中:

void SpecifyInputDialog::OnEnChangeMfceditbrowse1()
{
    this->inFileCtrl.GetWindowText(this->inFileString);
}
Run Code Online (Sandbox Code Playgroud)

因此,您在关闭对话框时获取文本的想法是正确的.请更新您的答案,以便我将其标记为解决方案.

ues*_*esp 4

CMFCEditBrowseCtrl 是从 CEdit 扩展的,您可以使用GetWindowText/SetWindowText访问当前显示的文件名。

更新

做就是了:

 CString strText;
 dlg.inFileCtrl.GetWindowText(strText);
Run Code Online (Sandbox Code Playgroud)

失败的断言可能是由于多种原因造成的(跟踪它以查看原因)。您可能必须在对话框关闭之前获取对话框代码中的文本。