gpt4 book ai didi

c++ - Edit Control 或 MessageBox() 中的表格字符串格式

转载 作者:行者123 更新时间:2023-11-30 02:36:17 25 4
gpt4 key购买 nike

我需要在只读的多行编辑控件中以表格格式显示一些数据。由于编辑控件的字体不是所有文本的宽度,我不能使用这种格式 "%-20s",所以我选择使用 \t 格式(见下面的代码)。但这并不能完全帮助我,因为它显示在图像中。

enter image description here

我尝试使用 GetTextExtentPoint32() API 但无法找到 \t 的确切宽度。那么,如何正确对齐文本呢?

CString szMsg;
szMsg.Format(_T("%s\t%s\t%s\r\n\r\n%s\t%s\t%s\r\n%s\t%s\t%s\r\n%s\t%s\t%s"),
_T("ITEM"), _T("VALUE"), _T("STATUS"),
_T("XXXXXXXX"), _T("1.0001"), _T("PASSED"),
_T("YYYYYYYYYYYYYYYY"), _T("-0.0001"), _T("FAILED"),
_T("ZZZ"), _T("0.0101"), _T("PASSED")
);
this->GetDlgItem(IDC_EDIT1)->SetWindowText(szMsg);

注意:
1.字符串将在运行时生成,因此它可以是任意长度。
2.我不想使用 ListCtrl 或 ListView,因为我应该允许用户复制/粘贴结果。

最佳答案

我认为您在这里使用了错误的工具。

由于您需要向用户显示一些表格数据,我更喜欢使用专门为此设计的控件,例如 ListView 控件(在报告模式)。您可以只拥有一个内部带有 ListView 控件的对话框,并使用它向用户展示您的数据。

由于您使用 MFC 标记标记了此问题,因此您可以考虑 CListCtrl class (或 CodeProject 上免费提供的其他几个增强的 ListView 控件类)。

如果您真的想以“控制台模式”样式格式化表格数据中的某些文本,您可能需要创建一个带有静态文本控件(或只读编辑器)的对话框control) 里面,并将其字体设置为固定宽度(非比例)的东西;但我认为以前的 ListView 控制方法质量更高。

关于c++ - Edit Control 或 MessageBox() 中的表格字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32988000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com