c++ - 我的 CListCtrl 中的选定项目显示省略号,尽管有足够的空间!

标签 c++ user-interface winapi mfc

我有一个 CListCtrl,它有足够的空间容纳所有项目,并且它们都正确显示 --- 直到被选中!一旦选择了任何条目,该条目的末尾就会被截断并添加一个省略号:

Click for Image

我不知道为什么会这样。您无法在此图像中看到它,但即使非常短的条目也会显示此行为,即使上方或下方的条目更长并且显示完整。这是创建控件(和对话框)的 .rc 代码:

IDD_COMBOBOX_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | 
    WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "ComboBox"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,263,7,50,16
    PUSHBUTTON      "Cancel",IDCANCEL,263,25,50,16
    CONTROL         "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL | 
                    LVS_SORTASCENDING | LVS_ALIGNLEFT | LVS_NOSORTHEADER | WS_BORDER | 
                    WS_TABSTOP,7,78,306,85
END

下面是 InitDialog() 中设置和填充 CListCtrl 的代码:

myListCtrl.InsertColumn(0,_T("Allergies"));
FILE *f = fopen("c:\\allergies.txt", "r");
char sz[100];
if (f)
    while (fgets(sz,100,f))
        myListCtrl.InsertItem(0, sz);
if (f)
    fclose(f);
myListCtrl.SetColumnWidth(0,LVSCW_AUTOSIZE);
LVFINDINFO FI;
FI.flags = LVFI_PARTIAL|LVFI_STRING;
FI.psz = _T("A");
int i = myListCtrl.FindItem(&FI);
myListCtrl.SetItemState(i, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
myListCtrl.EnsureVisible(i, FALSE);

这个让我真的很疯狂。任何提示将不胜感激!感谢您的观看。

最佳答案

我会尝试添加

myListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);

在 InsertColumn 行之前看看是否有帮助。

关于c++ - 我的 CListCtrl 中的选定项目显示省略号,尽管有足够的空间!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1309432/

相关文章:

c++ - 带4K显示屏的QT布局输出

java - Exoplayer ui分屏添加双击前进/后退循环效果

winapi - 如何使用 Rust 和 winapi crate 在 Windows 中创建事件订阅?

c++ - 可用的 Visual Studio 2008 c++ 项目平台的优缺点?

c++ - CoInitializeSecurity() 和媒体基础编码器之间的奇怪连接

c++ - C++ 或 C99 理论上可以编译成同样可移植的 C90 吗?

c++ - 解析自定义结构化查询语言?

c++ - Windows 和 Linux 的 C++ 中 64 位整数的跨平台定义

jquery - 子 div 的宽度应为 100%

c - 客户端不可预测的异常关闭