默认情况下,我想突出显示listview项。我的意思是默认情况下,第一项应该突出显示。
实际上,我做了一个示例,但它不起作用:(这是我用来向列表插入项目并设置第一行突出显示的代码片段。
BOOL OnInitDialog()
{
CDialog::OnInitDialog();
LVCOLUMN pColumn;
pColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
pColumn.fmt = LVCFMT_LEFT;
pColumn.pszText = L"Product Name";
pColumn.cx = 150;
pColumn.iSubItem = 1;
m_ListCtrl.InsertColumn(2, &pColumn);
::ZeroMemory(&pColumn, sizeof(LVCOLUMN));
pColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
pColumn.fmt = LVCFMT_LEFT;
pColumn.pszText = L"Country";
pColumn.cx = 150;
pColumn.iSubItem = 2;
m_ListCtrl.InsertColumn(3, &pColumn);
LVITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
lvItem.pszText = L"Himami";
m_ListCtrl.InsertItem(&lvItem);
lvItem.mask = LVIF_TEXT;
lvItem.iItem = 1;
lvItem.iSubItem = 0;
lvItem.pszText = L"Shampoo";
m_ListCtrl.InsertItem(&lvItem);
//Trying highlight first item in the list.
m_ListCtrl.SetItemState(0, LVIS_SELECTED ,LVIS_SELECTED);
m_ListCtrl.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
return TRUE;
}
void CListControlFocusDlg::OnListViewItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if ((pNMListView->uChanged & LVIF_STATE) && (pNMListView->uNewState & LVNI_SELECTED))
{
m_ListCtrl.SetCheck(m_ListCtrl.GetSelectionMark(), TRUE);
m_ListCtrl.SetSelectionMark(0);
}
}
使用SetItemState后,列表控件如下所示:列表项不突出显示。
但我希望该项目突出显示,如下图所示。
在实现Tab键顺序后,我可以突出显示列表中的第一项。
但我无法取消选中第一个项目,除非我按下向下箭头,否则列表的第一个项目将出现矩形选择,现在我可以通过按空格键选中或取消选中突出显示的项目。按下arrow.when后,列表看起来就像bar.This。
谁能让我知道如何通过按空格键而不按向下箭头选择矩形来选中或取消选中第一项。
发布于 2015-02-08 07:38:54
cancel按钮看起来具有焦点。Windows的默认行为是将焦点设置到Tab键顺序中的第一项。我建议您使用资源编辑器来设置Tab键顺序。最简单的方法是设置对话框中项目的制表位顺序,并使列表控制第一个项目。编辑Tab键顺序的标准击键是按Ctrl+D键。
发布于 2015-02-11 15:36:17
使用LVN_ITEMCHANGED通知
void OnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if ((pNMListView->uChanged & LVIF_STATE) && (pNMListView->uNewState & LVNI_SELECTED))
{
m_ListCtrl.SetCheck(m_ListCtrl.GetSelectionMark(), TRUE);
}
}
https://stackoverflow.com/questions/28380237
复制相似问题