我有一個CListCtrl有足夠的空間用於所有的項目,並且它們都能正確顯示---直到選中!正如任何條目選擇不久,即進入年底被截斷並添加省略號:儘管有足夠的空間,但我的CListCtrl中的選定項顯示省略號!
我不知道爲什麼會這樣。您無法在此圖片中看到它,但即使非常短的條目也會顯示此行爲,即使上面或下面的條目長得多並且顯示完整。下面是創建控件(和對話)的.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);
這一個是讓我真的瘋。任何提示將非常感謝!謝謝你看看。
冰冰冰!我們有一個贏家!那就是訣竅。現在---這不是一個錯誤嗎?!爲什麼我會想要這種奇怪的默認行爲?啊。 – rfeague 2009-08-21 06:17:16
P.S.我在我的InitDialog()中添加了這行作爲最後一行,但它工作正常。 – rfeague 2009-08-21 06:18:55
實際上你應該使用'myListCtrl.SetExtendedStyle(myListCtrl.GetExtendedStyle()| LVS_EX_FULLROWSELECT);'以防萬一其他LVS_EX_ *樣式被設置在某個點上。這一次可能並不重要,但這是一個很好的習慣,可以防止將來的錯誤。 – TheUndeadFish 2009-08-22 00:15:12