Re: Struggling to select an item in a CListCtrl
Hi Hamish,
I think this is just a function that David must have elsewhere since there
is no built in function to do that. You could get it by checking the item
attributes or by keeping track of the focus as users click different items.
David may have something that loops through the items and checks with code
like:
UINT uState = m_ListCtrl.GetItemState(iIndex, LVIS_SELECTED | LVIS_FOCUSED);
if (uState & LVIS_SELECTED)
// Item is selected
if (uState & LVIS_FOCUSED)
// Item has the focus
Or you could also use:
int iItem = m_ListCtrl.GetNextItem(-1, LVNI_FOCUSED);
Tom
"hamishd" <Hamish.Dean@gmail.com> wrote in message
news:23722273-2b15-478e-a28a-bc5267eb4025@m42g2000yqb.googlegroups.com...
On Feb 13, 3:45 am, "David Ching" <d...@remove-this.dcsoft.com> wrote:
"hamishd" <Hamish.D...@gmail.com> wrote in message
news:04fd6f75-1be9-4eca-b8fb-94d4ba431325@z28g2000prd.googlegroups.com...
It doesn't seem to work. I have set:
ListView_SetExtendedListViewStyle(MyList.m_hWnd, LVS_EX_GRIDLINES |
LVS_EX_FULLROWSELECT);
and it is the report style.
Hmm, it should work. Here's the code I use all the time:
BOOL CMyListCtrl::SetFocusToItem (int i)
{
int n = GetItemCount();
if (n < 0) // no items in list
return TRUE;
// Remove selections
POSITION pos = GetFirstSelectedItemPosition();
while (pos)
{
int iItem = GetNextSelectedItem(pos);
SetItemState (iItem, 0, LVIS_SELECTED);
}
// Remove existing focus;
int iFocus = GetItemWithFocus ();
if (iFocus >= 0)
SetItemState (iFocus, 0, LVIS_FOCUSED);
// Set focus/selection
if (i < n) // valid item
SetItemState (i, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED |
LVIS_SELECTED);
return TRUE;
}
You can try to call SetFocusToItem(2) or something to see if it works and
then go from there.
-- David
Thanks David,
I'm getting a syntax error (MSVC 6) on line: int iFocus =
GetItemWithFocus();
Compiler says GetItemWithFocus is an undeclared identifier.