2
我在這裏遇到了一些麻煩。看來我無法刪除所有列或(重置)列表視圖。這裏是相關的代碼:不可能刪除ListView中的最後一列嗎?
HWND resultListView = GetDlgItem(hwnd, IDC_RESULTCONTROL);
SendMessage(resultListView, LVM_DELETEALLITEMS, 0, 0); //All items are deleted
//Get numebr of columns
HWND hWndHdr = (HWND)::SendMessage(resultListView, LVM_GETHEADER, 0, 0);
int count = (int)::SendMessage(hWndHdr, HDM_GETITEMCOUNT, 0, 0L);
for (int colIndex = 0; colIndex < count; colIndex++) {
ListView_DeleteColumn(resultListView, colIndex);
}
///... Irrelevant code
HWND listbox = GetDlgItem(hwnd, IDC_SELECTEDLISTBOX);
int numberOfItemsSelected = SendMessage(listbox, LB_GETLISTBOXINFO, 0, 0);
vector<string> selectedItemsStringsVector;
char buf[250];
LVCOLUMN buffer;
//Add Selected Columns
for (int i = 0; i < numberOfItemsSelected; i++) { //In this case always 2 "Date" and "Time" for testing.
SendMessage(listbox, LB_GETTEXT, i, (LPARAM)buf);
selectedItemsStringsVector.push_back(buf);
buffer.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
buffer.fmt = LVCFMT_LEFT;
buffer.cx = 100;
buffer.pszText = buf;
buffer.cchTextMax = lstrlen(buf);
buffer.iSubItem = i;
buffer.iImage = 0;
buffer.iOrder = 0;
ListView_InsertColumn(resultListView, i, &buffer); //Works fine. Maybe I add an extra column here??
}
在調試模式下,我所有的變量都有預期的值。
FirstButtonClick
調試模式下的列數(變量count = 2)都很好。
SecondButtonClick
列數= 3,但它不會刪除它們?
英語不是我的主要語言,我有點難倒現在...
您需要按相反順序刪除它們,或者只是始終索引爲零。一旦刪除了三列中的索引#0,那麼索引#2已成爲#1,並且不再需要在for循環結束時將其刪除。 – doynax
認爲你考慮到每一個'ListView_DeleteColumn'後Colum索引被改變 - 減1。所以你需要每次刪除#0列col – RbMm
哦!生病立即嘗試! –