我有一个 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 行之前看看是否有帮助。
我是一名优秀的程序员,十分优秀!