【问题标题】:How to set mfc c++ editbox repeatedly?如何重复设置 mfc c++ 编辑框?
【发布时间】:2016-04-07 20:02:18
【问题描述】:

我从桌面选择了多个文件。

CFileDialog fileDlg(TRUE, 
                    _T("*.txt"), 
                    NULL, 
                    OFN_ALLOWMULTISELECT, 
                    _T(" (*.txt)|*.txt|"));

fileDlg.DoModal();
POSITION pos(fileDlg.GetStartPosition());

while (pos)
{
    CString pathName1(fileDlg.GetNextPathName(pos));
    SetDlgItemText(IDC_EDITReference, pathName1);
    Sleep(2.0 * 1000);
}

这是非常简单的代码,它应该每 2 秒显示一次文件路径。如果我选择 10 个文件,它会等待 20 秒,然后只显示最后选择的文件的路径。它不会每 2 秒更新一次。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    您的函数正在(缓慢地)更改对话框项中的文本 - 但在您的函数退出之前不会重新绘制对话框。拨打SetDlgItemText后需要拨打UpdateWindow

    【讨论】:

    • 这只是解决了更新窗口的直接问题。它没有解决更大的问题:无响应的 UI。函数执行时,UI 不会响应用户输入。这确实需要围绕 Windows 的基于事件的架构进行建模(例如,通过使用 Timer)。
    • @IInspectable:非常好的观点。你想添加一个单独的答案,还是我应该更新我的? (我下意识地假设 OP 知道这只是一个快速破解。鉴于他在问这个问题,这几乎肯定是错误的 - 以后发现这个问题的任何人都不太可能知道这个。)
    • 由于您已经发布了一个答案,如果您只是将信息添加到您现有的答案中,它将引入更少的噪音并使该网站更加专注。
    • 如果您发布了用户消息以更新界面怎么办?否则,您必须执行循环并查看和抽取消息以使其保持活力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    相关资源
    最近更新 更多