如何从CMFCEditBrowseCtrl获取路径文本
how to get path text from CMFCEditBrowseCtrl?
我正在做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
导致最后一行出现"调试断言失败"错误...
更新 2:
CString strText;
dlg.inFileCtrl.GetWindowText(strText);
相同的"调试断言失败"错误。我将尝试在对话框未关闭时获取文本。
更新 3(已解决):
我设法通过实现回调来获取路径文本
BEGIN_MESSAGE_MAP(SpecifyInputDialog, CDialogEx)
ON_EN_CHANGE(IDC_MFCEDITBROWSE1, &SpecifyInputDialog::OnEnChangeMfceditbrowse1)
END_MESSAGE_MAP()
在处理程序方法中:
void SpecifyInputDialog::OnEnChangeMfceditbrowse1()
{
this->inFileCtrl.GetWindowText(this->inFileString);
}
因此,您关于在对话框尚未关闭时获取文本的想法是正确的。请更新您的答案,以便我可以将其标记为解决方案。
CMFCEditBrowseCtrl是从CEdit扩展而来的,您可以使用GetWindowText
/SetWindowText
来访问当前显示的文件名。
更新
只需做:
CString strText;
dlg.inFileCtrl.GetWindowText(strText);
断言失败可能是由于多种原因造成的(跟踪它以查看原因)。在对话框关闭之前,您可能需要抓取对话框代码中的文本。
你不能调用 dlg.(任何控件)。GetWindowTextA AFTER DoModal - 此时对话框窗口(以及所有子控件)不再存在。请尝试使用 MFC 的 DDX(将所需的控件绑定到 CString)或在对话框中重写 OnOk 方法 - 在此方法中可以访问控件。
您会收到一个错误,因为在 DoModal() 返回后窗口关闭,并且 GetWindowTextA 是一个从窗口句柄获取文本的泛型函数。相反,您希望在 MFC 的 DDX 交换期间将此值放在字符串中。使用"类向导",选择 SpecifyInputDialog 类,然后选择"成员变量"选项卡(默认为"命令"选项卡),然后在该选项卡下选择浏览编辑控件的控件 ID,然后选择"添加变量"。在"类别"下,将"控件"更改为"值"。这会将变量类型从 CMFCEditBrowseCtrl 更改为 CString。给你的CString起一个名字,(比如inFileText),其余的都是自动的。你得到这个字符串,就像这样:
SpecifyInputDialog dlg; // this is my dialog inherited from CDialogEx
dlg.DoModal();
CString strText;
strText = dlg.inFileText; // after the data exchange, this has what you need
代码向导生成的 DDX 如下所示:
void SpecifyInputDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_BROWSE, inFileText);
}
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 为Catch2中的外部文本文件指定路径的最佳方式
- 为什么我不能将 Windows 环境路径与 ofstream 一起使用来编写文本文件?
- 崇高文本 3 - 在终端中编译并运行 C++ 程序(路径包含空格)
- 使用“从根路径”打开文本文件
- 使用 C++ 获取默认的 Windows 文本编辑器.exe路径
- Direct2D:将文本转换为路径
- 在C++中,如何提取文本文件的路径
- 通过文本迷宫打印到屏幕路径的算法
- 如何从CMFCEditBrowseCtrl获取路径文本
- 使用相对路径读取文本文件
- 在实现 OpenFileDialog 时,"System.IO.FileStream"显示在生成的编辑文本框中,而不是文件名和路径上。如何?
- 如何将文件的路径(或任何文本)显示/附加到编辑框中?(C++ Win32 API)