【发布时间】:2012-07-19 16:21:47
【问题描述】:
我在 MFC 对话框中创建了一个只读编辑框。我试图让用户点击编辑框,它是只读的,它打开一个文件对话框,然后使用 UpdateData 将此值放入文本框中。我收到了 ON_EN_SETFOCUS 消息,但在文件对话框上按 OK 会重新生成它,所以我陷入了无限循环。
UpdateData(TRUE);
CFileDialog fileDialog(TRUE,NULL, NULL,OFN_HIDEREADONLY|OFN_FILEMUSTEXIST, _T("Text Files(*.txt)|*.txt||"));
if( fileDialog.DoModal() == IDOK )
{
configFile=fileDialog.GetPathName(); //Note to self, this includes filename, getPathName includes filename and path.
}
else
{
return;
}
UpdateData(FALSE);
如果您对如何完成此操作有任何想法,我将不胜感激。
【问题讨论】:
-
为什么不使用按钮?一个名为
...的小CButton用于通过文件对话框进行浏览非常常见。 -
如果您希望对话有一些可用性,请使用 AJG85 的建议。没有用户会点击只读的 CEdit 框。
-
完成了,它工作了,只是有两个控件似乎无关紧要,想知道是否有更有效的方法?
-
这取决于您所说的高效。这将需要更多的消息处理程序和一些 if 语句检查,并且对 GUI 用户来说不太直观来实现您当前的设计。
-
@James - Windows 应用程序的用户希望看到那个“...”按钮,他们知道如何处理它(之前已经看过很多次了)。他们不会期望单击该框会弹出文件打开对话框。