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)
因此,您在关闭对话框时获取文本的想法是正确的.请更新您的答案,以便我将其标记为解决方案.
CMFCEditBrowseCtrl 是从 CEdit 扩展的,您可以使用GetWindowText/SetWindowText访问当前显示的文件名。
更新
做就是了:
CString strText;
dlg.inFileCtrl.GetWindowText(strText);
Run Code Online (Sandbox Code Playgroud)
失败的断言可能是由于多种原因造成的(跟踪它以查看原因)。您可能必须在对话框关闭之前获取对话框代码中的文本。
| 归档时间: |
|
| 查看次数: |
6189 次 |
| 最近记录: |