comctl32/listview: Implement LVM_ISITEMVISIBLE.
This commit is contained in:
parent
9c565342d0
commit
76cb9c0d77
|
@ -6944,6 +6944,44 @@ fail:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* DESCRIPTION:
|
||||||
|
* Checks item visibility.
|
||||||
|
*
|
||||||
|
* PARAMETER(S):
|
||||||
|
* [I] infoPtr : valid pointer to the listview structure
|
||||||
|
* [I] nFirst : item index to check for
|
||||||
|
*
|
||||||
|
* RETURN:
|
||||||
|
* Item visible : TRUE
|
||||||
|
* Item invisible or failure : FALSE
|
||||||
|
*/
|
||||||
|
static BOOL LISTVIEW_IsItemVisible(const LISTVIEW_INFO *infoPtr, INT nItem)
|
||||||
|
{
|
||||||
|
POINT Origin, Position;
|
||||||
|
RECT rcItem;
|
||||||
|
HDC hdc;
|
||||||
|
BOOL ret;
|
||||||
|
|
||||||
|
TRACE("nItem=%d\n", nItem);
|
||||||
|
|
||||||
|
if (nItem < 0 || nItem >= DPA_GetPtrCount(infoPtr->hdpaItems)) return FALSE;
|
||||||
|
|
||||||
|
LISTVIEW_GetOrigin(infoPtr, &Origin);
|
||||||
|
LISTVIEW_GetItemOrigin(infoPtr, nItem, &Position);
|
||||||
|
rcItem.left = Position.x + Origin.x;
|
||||||
|
rcItem.top = Position.y + Origin.y;
|
||||||
|
rcItem.right = rcItem.left + infoPtr->nItemWidth;
|
||||||
|
rcItem.bottom = rcItem.top + infoPtr->nItemHeight;
|
||||||
|
|
||||||
|
hdc = GetDC(infoPtr->hwndSelf);
|
||||||
|
if (!hdc) return FALSE;
|
||||||
|
ret = RectVisible(hdc, &rcItem);
|
||||||
|
ReleaseDC(infoPtr->hwndSelf, hdc);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* DESCRIPTION:
|
* DESCRIPTION:
|
||||||
* Redraws a range of items.
|
* Redraws a range of items.
|
||||||
|
@ -10340,6 +10378,9 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
/* case LVM_ISGROUPVIEWENABLED: */
|
/* case LVM_ISGROUPVIEWENABLED: */
|
||||||
|
|
||||||
|
case LVM_ISITEMVISIBLE:
|
||||||
|
return LISTVIEW_IsItemVisible(infoPtr, (INT)wParam);
|
||||||
|
|
||||||
/* case LVM_MAPIDTOINDEX: */
|
/* case LVM_MAPIDTOINDEX: */
|
||||||
|
|
||||||
/* case LVM_MAPINDEXTOID: */
|
/* case LVM_MAPINDEXTOID: */
|
||||||
|
|
|
@ -3252,6 +3252,7 @@ static const WCHAR WC_LISTVIEWW[] = { 'S','y','s',
|
||||||
#define LVM_CANCELEDITLABEL (LVM_FIRST + 179)
|
#define LVM_CANCELEDITLABEL (LVM_FIRST + 179)
|
||||||
#define LVM_MAPINDEXTOID (LVM_FIRST + 180)
|
#define LVM_MAPINDEXTOID (LVM_FIRST + 180)
|
||||||
#define LVM_MAPIDTOINDEX (LVM_FIRST + 181)
|
#define LVM_MAPIDTOINDEX (LVM_FIRST + 181)
|
||||||
|
#define LVM_ISITEMVISIBLE (LVM_FIRST + 182)
|
||||||
|
|
||||||
#define LVN_FIRST (0U-100U)
|
#define LVN_FIRST (0U-100U)
|
||||||
#define LVN_LAST (0U-199U)
|
#define LVN_LAST (0U-199U)
|
||||||
|
|
Loading…
Reference in New Issue