1.设置列表属性
#define Dim(arr) (sizeof(arr) / sizeof(arr[0])) const CString g_ListColumnText[] = { _T("DeviceID"), _T("BTName"), _T("BTAddress"), _T("PhoneBook"), _T("Connect"), }; int g_ListColumnLen[] = {20, 40, 40, 20, 20,}; void CBTDemoDlg::InitDeviceInfoList(void) { DWORD dwStyle = m_DeviceInfoList.GetExtendedStyle(); dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES; m_DeviceInfoList.SetExtendedStyle(dwStyle); for (int index = 0; index < Dim(g_ListColumnLen); ++index) { m_DeviceInfoList.InsertColumn(index, g_ListColumnText[index], LVCFMT_LEFT, g_ListColumnLen[index] * 3); } }
2.获取选择项中的某个字段
BOOL CBTDemoDlg::GetSelectItemAddress(wstring& strAddress) { for (int index = 0; index < m_DeviceInfoList.GetItemCount(); ++index) { if (m_DeviceInfoList.GetItemState(index, LVIS_SELECTED) == LVIS_SELECTED) { CString strBtAddr = m_DeviceInfoList.GetItemText(index, 2); strAddress = strBtAddr.GetBuffer(0); m_DeviceInfoList.SetItemState(index, 0, LVIS_SELECTED); return TRUE; } } return FALSE; }
3.修改列表的某项中的某些字段
BOOL CBTDemoDlg::ChangeItemStatus(const CString& strAddress, int nStatus, BOOL bConnect) { for (int index = 0; index < m_DeviceInfoList.GetItemCount(); ++index) { if (m_DeviceInfoList.GetItemText(index, 2) == strAddress) { TCHAR szStatus[4] = {0}; _stprintf(szStatus, _T("%d"), nStatus); m_DeviceInfoList.SetItemText(index, 3, szStatus); m_DeviceInfoList.SetItemText(index, 4, bConnect ? _T("Connect") : _T("Disconnect")); return TRUE; } } return FALSE; }
4.删除列表中的某项
BOOL CBTDemoDlg::DeleteItem(const CString& strAddress) { for (int index = 0; index < m_DeviceInfoList.GetItemCount(); ++index) { if (m_DeviceInfoList.GetItemText(index, 2) == strAddress) { m_DeviceInfoList.DeleteItem(index); return TRUE; } } return FALSE; }
5.增加一选项
{ _stprintf(szStatus, _T("%d"), pInfo->nStatus); int nIndex = m_DeviceInfoList.GetItemCount(); m_DeviceInfoList.InsertItem(nIndex, _T("0")); m_DeviceInfoList.SetItemText(nIndex, 1, pInfo->deviceName.c_str()); m_DeviceInfoList.SetItemText(nIndex, 2, pInfo->deviceAddr); m_DeviceInfoList.SetItemText(nIndex, 3, szStatus); m_DeviceInfoList.SetItemText(nIndex, 4, FALSE ? _T("Connect") : _T("Disconnect")); }