303 BOOL bDefaultBkColor;
341#define DEBUG_BUFFERS 20
343#define DEBUG_BUFFER_SIZE 256
346#define SB_INTERNAL -1
349#define DISP_TEXT_SIZE 260
352#define WIDTH_PADDING 12
355#define HEIGHT_PADDING 1
358#define REPORT_MARGINX 2
372#define ICON_TOP_PADDING_NOTHITABLE 2
373#define ICON_TOP_PADDING_HITABLE 2
374#define ICON_TOP_PADDING (ICON_TOP_PADDING_NOTHITABLE + ICON_TOP_PADDING_HITABLE)
375#define ICON_BOTTOM_PADDING 4
376#define LABEL_HOR_PADDING 5
377#define LABEL_VERT_PADDING 7
378#define ICON_LR_PADDING 16
379#define ICON_LR_HALF (ICON_LR_PADDING/2)
382#define DEFAULT_LABEL_WIDTH 40
384#define MAX_EMPTYTEXT_SELECT_WIDTH 80
387#define DEFAULT_COLUMN_WIDTH 128
390#define LISTVIEW_SCROLL_ICON_LINE_SIZE 37
393#define IMAGE_PADDING 2
396#define TRAILING_LABEL_PADDING 12
397#define TRAILING_HEADER_PADDING 11
400#define CAPTION_BORDER 2
403#define LV_ML_DT_FLAGS (DT_TOP | DT_NOPREFIX | DT_EDITCONTROL | DT_CENTER | DT_WORDBREAK | DT_WORD_ELLIPSIS | DT_END_ELLIPSIS)
404#define LV_FL_DT_FLAGS (DT_TOP | DT_NOPREFIX | DT_EDITCONTROL | DT_CENTER | DT_WORDBREAK | DT_NOCLIP)
405#define LV_SL_DT_FLAGS (DT_VCENTER | DT_NOPREFIX | DT_EDITCONTROL | DT_SINGLELINE | DT_WORD_ELLIPSIS | DT_END_ELLIPSIS)
408#define STATEIMAGEINDEX(x) (((x) & LVIS_STATEIMAGEMASK) >> 12)
414#define LISTVIEW_DUMP(iP) do { \
415 TRACE("hwndSelf=%p, clrBk=0x%06x, clrText=0x%06x, clrTextBk=0x%06x, ItemHeight=%d, ItemWidth=%d, Style=0x%08x\n", \
416 iP->hwndSelf, iP->clrBk, iP->clrText, iP->clrTextBk, \
417 iP->nItemHeight, iP->nItemWidth, iP->dwStyle); \
418 TRACE("hwndSelf=%p, himlNor=%p, himlSml=%p, himlState=%p, Focused=%d, Hot=%d, exStyle=0x%08x, Focus=%d\n", \
419 iP->hwndSelf, iP->himlNormal, iP->himlSmall, iP->himlState, \
420 iP->nFocusedItem, iP->nHotItem, iP->dwLvExStyle, iP->bFocus ); \
421 TRACE("hwndSelf=%p, ntmH=%d, icSz.cx=%d, icSz.cy=%d, icSp.cx=%d, icSp.cy=%d, notifyFmt=%d\n", \
422 iP->hwndSelf, iP->ntmHeight, iP->iconSize.cx, iP->iconSize.cy, \
423 iP->iconSpacing.cx, iP->iconSpacing.cy, iP->notifyFormat); \
424 TRACE("hwndSelf=%p, rcList=%s\n", iP->hwndSelf, wine_dbgstr_rect(&iP->rcList)); \
538 if (!aw)
return bt ? -1 : 0;
570 static int index = 0;
577 if (!lprng)
return "(null)";
586 if (pScrollInfo ==
NULL)
return "(null)";
620 if (!plvnm)
return "(null)";
622 " uOldState=0x%x, uChanged=0x%x, ptAction=%s, lParam=%ld",
632 if (lpLVItem ==
NULL)
return "(null)";
674 if (lpColumn ==
NULL)
return "(null)";
718 if (!lpht)
return "(null)";
737 default:
return "unknown";
746 switch (unicodeNotificationCode)
777 FIXME(
"unknown notification %x\n", unicodeNotificationCode);
778 return unicodeNotificationCode;
954 ret_length =
pdi->item.cchTextMax;
955 ret_text =
pdi->item.pszText;
957 if (return_unicode || return_ansi)
968 *
pdi->item.pszText = 0;
990 TRACE(
" resulting code=%d\n",
pdi->hdr.code);
992 if (return_ansi || return_unicode)
996 strcpy((
char*)ret_text, (
char*)
pdi->item.pszText);
1002 else if (return_ansi)
1009 ret_text, ret_length);
1011 pdi->item.pszText = ret_text;
1012 pdi->item.cchTextMax = ret_length;
1041 lpnmlvcd->
nmcd.
rc = *rcBounds;
1044 if (!lplvItem)
return;
1090 textcolor = lpnmlvcd->
clrText;
1219 i->nItem =
i->nSpecial;
1220 if (
i->nItem != -1)
return TRUE;
1222 if (
i->nItem ==
i->nSpecial)
1224 if (
i->ranges)
i->index = 0;
1230 if (
i->nItem ==
i->nSpecial)
i->nItem++;
1231 if (
i->nItem <
i->range.upper)
return TRUE;
1240 else if (
i->nItem >=
i->range.upper)
goto end;
1242 i->nItem =
i->range.lower;
1243 if (
i->nItem >= 0)
goto testitem;
1265 if (
i->nItem ==
i->nSpecial)
1273 if (
i->nItem ==
i->nSpecial)
i->nItem--;
1274 if (
i->nItem >=
i->range.lower)
return TRUE;
1283 else if (!
start &&
i->nItem <
i->range.lower)
goto end;
1285 i->nItem =
i->range.upper;
1286 if (
i->nItem > 0)
goto testitem;
1288 return (
i->nItem =
i->nSpecial) != -1;
1295 if (!
i->ranges)
return i->range;
1321 i->nItem =
i->nSpecial =
i->range.lower =
i->range.upper = -1;
1350 RECT rcItem, rcTemp;
1374 TRACE(
"building icon ranges:\n");
1375 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
1417 nFirstCol =
max(frame->
left, 0);
1421 lower = nFirstCol * nPerCol + nFirstRow;
1423 TRACE(
"nPerCol=%d, nFirstRow=%d, nLastRow=%d, nFirstCol=%d, nLastCol=%d, lower=%d\n",
1424 nPerCol, nFirstRow, nLastRow, nFirstCol, nLastCol, lower);
1426 if (nLastCol < nFirstCol || nLastRow < nFirstRow)
return TRUE;
1430 TRACE(
"building list ranges:\n");
1431 for (nCol = nFirstCol; nCol <= nLastCol; nCol++)
1433 item_range.lower = nCol * nPerCol + nFirstRow;
1434 if(item_range.lower >= infoPtr->
nItemCount)
break;
1435 item_range.upper =
min(nCol * nPerCol + nLastRow + 1, infoPtr->
nItemCount);
1466 RECT rcItem, rcClip;
1479 if (
i->nSpecial != -1)
1487 TRACE(
"building visible range:\n");
1488 if (!
i->ranges &&
i->range.lower <
i->range.upper)
1526 ERR(
"result is not a one range iterator\n");
1536 if(lower < iter2->
range.lower)
1561 int delete = iter1->
nItem;
1636 return lpID->
id + 1;
1710 infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS) &&
1727 DWORD dwOldBkColor, dwOldTextColor;
1886 if (!charCode || !keyData || infoPtr->
nItemCount == 0)
return 0;
1890 charCode !=
'.' && charCode !=
'`' && charCode !=
'!' &&
1891 charCode !=
'@' && charCode !=
'#' && charCode !=
'$' &&
1892 charCode !=
'%' && charCode !=
'^' && charCode !=
'&' &&
1893 charCode !=
'*' && charCode !=
'(' && charCode !=
')' &&
1894 charCode !=
'-' && charCode !=
'_' && charCode !=
'+' &&
1895 charCode !=
'=' && charCode !=
'\\'&& charCode !=
']' &&
1896 charCode !=
'}' && charCode !=
'[' && charCode !=
'{' &&
1897 charCode !=
'/' && charCode !=
'?' && charCode !=
'>' &&
1898 charCode !=
'<' && charCode !=
',' && charCode !=
'~')
1929 if (startidx == infoPtr->
nItemCount) startidx = 0;
1950 int i = startidx, endidx;
1966 for (
i = startidx;
i < endidx;
i++)
1993 (startidx == 0 && endidx == infoPtr->
nItemCount) )
2021 TRACE(
"nNewScrollPos=%d\n", nNewScrollPos);
2032 point[0].
x = -nNewScrollPos;
2033 point[1].
x += nNewScrollPos;
2086 TRACE(
"horzInfo.nMax=%d\n", horzInfo.
nMax);
2127 if (vertInfo.
nPage != 0)
2190 if (
dx != 0 ||
dy != 0)
2193 listRect = infoPtr->
rcList;
2306 assert(nItem >= 0 && nItem < infoPtr->nItemCount);
2316 lpptPosition->
x = nItem / nCountPerColumn * infoPtr->
nItemWidth;
2317 lpptPosition->
y = nItem % nCountPerColumn * infoPtr->
nItemHeight;
2378 SIZE labelSize = { 0, 0 };
2389 if (lprcSelectBox) doSelectBox =
TRUE;
2390 if (lprcLabel) doLabel =
TRUE;
2391 if (doLabel || lprcIcon || lprcStateIcon) doIcon =
TRUE;
2421 LONG state_width = 0;
2428 Icon.left = Box.
left + state_width;
2442 Icon.left = Box.
left + state_width;
2454 (!lpColumnInfo || lpLVItem->
iSubItem == 0 ||
2459 if(lprcIcon) *lprcIcon =
Icon;
2465 lprcStateIcon->
left =
Icon.left - state_width;
2467 lprcStateIcon->
top =
Icon.top;
2472 else Icon.right = 0;
2540 if (!oversizedBox && labelSize.
cy > infoPtr->
ntmHeight)
2544 labelSize.
cy =
max(labelSize.
cy, 1);
2565 if (lprcLabel) *lprcLabel =
Label;
2589 if (lprcSelectBox) *lprcSelectBox = SelectBox;
2597 else *lprcBox = Box;
2626 lvItem.
iItem = nItem;
2654 if (id1->
id == id2->
id)
return 0;
2656 return (id1->
id < id2->
id) ? -1 : 1;
2675 TRACE(
"iID=%d\n", iID);
2708 TRACE(
"iItem=%d\n", iItem);
2711 if (iItem < 0 || iItem >= infoPtr->
nItemCount)
return -1;
2716 return lpItem->
id->
id;
2813 if ((*lpPos).x > nListWidth) (*lpPos).x = nMaxColumns * infoPtr->
nItemWidth;
2814 if ((*lpPos).y > nListHeight) (*lpPos).y = nMaxRows * infoPtr->
nItemHeight;
2843 if (lppt->
x == old.
x && lppt->
y == old.
y)
return TRUE;
2881 TRACE(
"nAlignCode=%d\n", nAlignCode);
2898 default:
return FALSE;
2905 next_pos(infoPtr, &
pos,
i);
2907 next_pos(infoPtr, &
pos);
2934 switch (infoPtr->
uView)
2978 TRACE(
"(lprcView=%p)\n", lprcView);
2980 if (!lprcView)
return FALSE;
3016 if (lpSubItem->
iSubItem == nSubItem)
3053 nItemWidth = rcHeader.
right;
3114 return max(nItemHeight, 1);
3184 if (((
RANGE*)range1)->upper <= ((
RANGE*)range2)->lower)
3186 else if (((
RANGE*)range2)->upper <= ((
RANGE*)range1)->lower)
3196#define ranges_check(ranges, desc) if (TRACE_ON(listview)) ranges_assert(ranges, desc, __FILE__, __LINE__)
3210 assert (prev->lower >= 0 && prev->lower < prev->upper);
3214 assert (prev->upper <= curr->lower);
3215 assert (curr->lower < curr->upper);
3219 TRACE(
"--- Done checking---\n");
3225 if (!ranges)
return NULL;
3227 if (ranges->
hdpa)
return ranges;
3244 if (!ranges)
return;
3256 if (!ranges || !ranges->
hdpa)
3271 if (!newrng)
goto fail;
3282 TRACE (
"clone failed\n");
3307 RANGE srchrng = { nItem, nItem + 1 };
3309 TRACE(
"(nItem=%d)\n", nItem);
3321 count += sel->upper - sel->lower;
3329 RANGE srchrng = { nItem, nItem + 1 }, *chkrng;
3338 if (chkrng->lower >= nItem)
3339 chkrng->lower =
max(
min(chkrng->lower + delta, nUpper - 1), 0);
3340 if (chkrng->upper > nItem)
3341 chkrng->upper =
max(
min(chkrng->upper + delta, nUpper), 0);
3355 srchrgn.lower =
range.lower - 1;
3356 srchrgn.upper =
range.upper + 1;
3363 TRACE(
"Adding new range\n");
3367 if(!newrgn)
goto fail;
3384 RANGE *chkrgn, *mrgrgn;
3385 INT fromindex, mergeindex;
3390 chkrgn->lower =
min(
range.lower, chkrgn->lower);
3391 chkrgn->upper =
max(
range.upper, chkrgn->upper);
3397 srchrgn.lower = chkrgn->lower - 1;
3398 srchrgn.upper = chkrgn->upper + 1;
3403 if (mergeindex == -1)
break;
3404 if (mergeindex ==
index)
3406 fromindex =
index + 1;
3410 TRACE(
"Merge with index %i\n", mergeindex);
3413 chkrgn->lower =
min(chkrgn->lower, mrgrgn->lower);
3414 chkrgn->upper =
max(chkrgn->upper, mrgrgn->upper);
3447 if ( (chkrgn->upper ==
range.upper) &&
3448 (chkrgn->lower ==
range.lower) )
3455 else if ( (chkrgn->upper <=
range.upper) &&
3456 (chkrgn->lower >=
range.lower) )
3462 else if ( (chkrgn->upper <=
range.upper) &&
3463 (chkrgn->lower <
range.lower) )
3465 chkrgn->upper =
range.lower;
3468 else if ( (chkrgn->upper >
range.upper) &&
3469 (chkrgn->lower >=
range.lower) )
3471 chkrgn->lower =
range.upper;
3479 if (!(newrgn =
Alloc(
sizeof(
RANGE))))
goto fail;
3480 newrgn->lower = chkrgn->lower;
3481 newrgn->upper =
range.lower;
3482 chkrgn->lower =
range.upper;
3564 INT nSelectedCount = 0;
3578 TRACE(
"nSelectedCount=%d\n", nSelectedCount);
3579 return nSelectedCount;
3610 if (nShiftItem < nItem)
return nShiftItem;
3612 if (nShiftItem > nItem)
return nShiftItem +
direction;
3690 if (nFirst == -1) nFirst = nItem;
3695 for (
i = nFirst;
i <= nLast;
i++)
3699 nmlv.
iFrom = nFirst;
3756 RECT rcItem, rcSel, rcSelMark;
3814 TRACE(
"nItem=%d\n", nItem);
3832 TRACE(
"nItem=%d, wShift=%d, wCtrl=%d\n", nItem, wShift, wCtrl);
3833 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
3868 ZeroMemory(&lvHitTestInfo,
sizeof(lvHitTestInfo));
3869 lvHitTestInfo.
pt.
x =
pt.x;
3870 lvHitTestInfo.
pt.
y =
pt.y;
3929#define SCROLL_LEFT 0x1
3930#define SCROLL_RIGHT 0x2
3931#define SCROLL_UP 0x4
3932#define SCROLL_DOWN 0x8
3971 rect.right = coords_offs.
x;
3975 rect.left = coords_offs.
x;
3982 rect.bottom = coords_offs.
y;
3986 rect.top = coords_offs.
y;
4002 if ((scroll &
SCROLL_UP) && (coords_orig->
y <= 0))
4020 if (old_elems.
nItem > -1)
4041 if (new_elems.
nItem > -1)
4095 if (scrollInfo.
nPos != scrollInfo.
nMin)
4098 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4104 if (scrollInfo.
nPos != scrollInfo.
nMin)
4107 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4315 if (lpLVItem->
mask == 0)
return TRUE;
4341 TRACE(
"oldState=%x, newState=%x\n",
item.state, lpLVItem->
state);
4358 TRACE(
"change mask=0x%x\n", uChanged);
4393 if (!uChanged)
return TRUE;
4413 lpItem->
state &= ~stateMask;
4414 lpItem->
state |= (lpLVItem->
state & stateMask);
4463 if (isNew)
return TRUE;
4517 if (!lpSubItem)
return FALSE;
4644 nItem = scrollInfo.
nPos;
4652 TRACE(
"nItem=%d\n", nItem);
4683 RECT rcSelect, rcLabel, rcBox, rcStateIcon, rcIcon;
4684 const RECT *background;
4691 if (!focus)
item->state &= ~LVIS_FOCUSED;
4699 TRACE(
"%d: box=%s, select=%s, icon=%s. label=%s\n",
item->iSubItem,
4723 background = &rcLabel;
4725 background = &rcSelect;
4766 TRACE(
"stateimage=%d\n", stateimage);
4801 else if (
item->iSubItem)
4823 DrawShadowText(nmlvcd->
nmcd.
hdc,
item->pszText, -1, &rcLabel,
format,
RGB(255, 255, 255),
RGB(0, 0, 0), 2, 2);
4848 static WCHAR callbackW[] = {
'(',
'c',
'a',
'l',
'l',
'b',
'a',
'c',
'k',
')', 0 };
4860 lvItem.
iItem = nItem;
4872 if (!focus) lvItem.
state &= ~LVIS_FOCUSED;
4906 if (subitems->
nItem)
4910 lvItem.
iItem = nItem;
4935 temp_nmlvcd = nmlvcd;
4991 item.iItem =
i->nItem;
5049 RECT rcClip, rcItem;
5135 RECT rcClip, rcItem = {0};
5179 if (rcItem.
left == 0)
continue;
5180 rcItem.
left += Origin.
x;
5181 rcItem.
right += Origin.
x;
5196 rcItem.
right += Origin.
x;
5206 for(
y = Origin.
y > 1 ? Origin.
y - 1 : itemheight - 1 + Origin.
y % itemheight;
y<=infoPtr->rcList.bottom;
y+=itemheight)
5266 COLORREF oldTextColor = 0, oldBkColor = 0;
5280 TRACE(
"double buffering\n");
5284 ERR(
"Failed to create DC for backbuffer\n");
5290 ERR(
"Failed to create bitmap for backbuffer\n");
5418 DWORD dwViewRect = 0;
5420 if (nItemCount == -1)
5425 INT nItemCountPerColumn = 1;
5426 INT nColumnCount = 0;
5428 if (wHeight == 0xFFFF)
5434 if (wHeight < infoPtr->nItemHeight)
5441 nItemCountPerColumn = wHeight / infoPtr->
nItemHeight;
5442 if (nItemCountPerColumn == 0)
5443 nItemCountPerColumn = 1;
5445 if (nItemCount % nItemCountPerColumn != 0)
5446 nColumnCount = nItemCount / nItemCountPerColumn;
5448 nColumnCount = nItemCount / nItemCountPerColumn + 1;
5453 wHeight = nItemCountPerColumn * infoPtr->
nItemHeight + 2;
5454 wWidth = nColumnCount * infoPtr->
nItemWidth + 2;
5456 dwViewRect =
MAKELONG(wWidth, wHeight);
5466 wHeight = (rcBox.
bottom - rcBox.
top) * nItemCount;
5471 if (wHeight == 0xffff)
5473 if (wWidth == 0xffff)
5477 dwViewRect =
MAKELONG(wWidth, wHeight);
5488 if (wWidth == 0xffff)
5491 if (wWidth < nItemWidth)
5492 wWidth = nItemWidth;
5494 cols = wWidth / nItemWidth;
5495 if (cols > nItemCount)
5502 rows = nItemCount / cols;
5503 if (nItemCount % cols)
5509 wHeight = (nItemHeight * rows)+2;
5510 wWidth = (nItemWidth * cols)+2;
5512 dwViewRect =
MAKELONG(wWidth, wHeight);
5515 FIXME(
"uView == LV_VIEW_SMALLICON: not implemented\n");
5567 if (iItem < 0 || iItem >= infoPtr->
nItemCount || !lppt)
5574 lppt->
x = rcItem.
left;
5575 lppt->
y = rcItem.
top;
5604 TRACE(
"ret=%p\n", dragList);
5723 if (hdi.iOrder >= nOrder) {
5762 TRACE(
"nColumn=%d\n", nColumn);
5784 INT nItem, nSubItem,
i;
5786 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
5794 if (lpSubItem->
iSubItem == nColumn)
5797 lpDelItem = lpSubItem;
5799 else if (lpSubItem->
iSubItem > nColumn)
5845 INT nPerCol, nItemCol, nItemRow;
5874 nItemCol = nItem / nPerCol;
5875 nItemRow = nItem % nPerCol;
5921 TRACE(
"(nItem=%d)\n", nItem);
6047 infoPtr->
notify_mask &= ~NOTIFY_MASK_END_LABEL_EDIT;
6064 if (!pszText)
return TRUE;
6116 TRACE(
"(hwnd=%p, uMsg=%x, wParam=%lx, lParam=%lx, isW=%d)\n",
6209 hedit =
CreateWindowW(
WC_EDITW,
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6211 hedit =
CreateWindowA(
WC_EDITA, (
LPCSTR)
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6213 if (!hedit)
return 0;
6249 TRACE(
"(nItem=%d, isW=%d)\n", nItem,
isW);
6260 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
6310 sz.
cx +=
tm.tmMaxCharWidth * 2;
6344 INT nScrollPosHeight = 0;
6345 INT nScrollPosWidth = 0;
6346 INT nHorzAdjust = 0;
6347 INT nVertAdjust = 0;
6350 RECT rcItem, rcTemp;
6363 nScrollPosWidth = 1;
6383 nScrollPosHeight = 1;
6397 if (!nScrollPosWidth && !nScrollPosHeight)
return TRUE;
6399 if (nScrollPosWidth)
6401 INT diff = nHorzDiff / nScrollPosWidth;
6402 if (nHorzDiff % nScrollPosWidth) diff += nHorzAdjust;
6406 if (nScrollPosHeight)
6408 INT diff = nVertDiff / nScrollPosHeight;
6409 if (nVertDiff % nScrollPosHeight) diff += nVertAdjust;
6434 INT nItem = nStart + 1, nLast = infoPtr->
nItemCount, nNearestItem = -1;
6435 ULONG xdist, ydist, dist, mindist = 0x7fffffff;
6446 nmlv.
lvfi = *lpFindInfo;
6450 if (!lpFindInfo || nItem < 0)
return -1;
6486 default:
ERR(
"Unknown vkDirection=%d\n", lpFindInfo->
vkDirection);
6497 lvItem.
mask &= ~LVIF_TEXT;
6500 nItem = bNearest ? -1 : nStart + 1;
6503 for (; nItem < nLast; nItem++)
6505 lvItem.
iItem = nItem;
6523 if (!
p ||
p != lvItem.
pszText)
continue;
6531 if (!bNearest)
return nItem;
6540 dist = xdist * xdist + ydist * ydist;
6546 nNearestItem = nItem;
6558 return nNearestItem;
6581 memcpy(&fiw, lpFindInfo,
sizeof(fiw));
6634 lpColumn->
fmt = lpColumnInfo->
fmt;
6648 if (lpColumn->
mask & LVCF_MINWIDTH)
6649 lpColumn->cxMin = lpColumnInfo->
cxMin;
6674 INT nColumnWidth = 0;
6677 TRACE(
"nColumn=%d\n", nColumn);
6680 switch(infoPtr->
uView)
6693 WARN(
"(%p): HDM_GETITEMW failed for item %d\n", infoPtr->
hwndSelf, nColumn);
6696 nColumnWidth = hdItem.cxy;
6700 TRACE(
"nColumnWidth=%d\n", nColumnWidth);
6701 return nColumnWidth;
6718 switch (infoPtr->
uView)
6752 FIXME(
"LVSIL_GROUPHEADER not supported\n");
6755 WARN(
"got unknown imagelist index - %d\n", nImageList);
6803 if (lpLVItem->
mask == 0)
return TRUE;
6807 lpLVItem->
state = 0;
6815 lpLVItem->
state = 0;
6860 *lpLVItem = dispInfo.
item;
6890 lpLVItem->
state &= ~LVIS_FOCUSED;
6898 lpLVItem->
state &= ~LVIS_SELECTED;
6915 pItemHdr = &lpSubItem->
hdr;
6918 pItemHdr = &callbackHdr;
6919 is_subitem_invalid =
TRUE;
6923 pItemHdr = &lpItem->
hdr;
7020 lpLVItem->
state &= ~dispInfo.item.stateMask;
7025 lpLVItem->
state &= ~LVIS_FOCUSED;
7031 lpLVItem->
state &= ~LVIS_SELECTED;
7112 TRACE(
"(nItem=%d, lpptPosition=%p)\n", nItem, lpptPosition);
7114 if (!lpptPosition || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
7124 lpptPosition->
x += Origin.
x;
7125 lpptPosition->
y += Origin.
y;
7213 oversizedBox =
TRUE;
7221 lvItem.
iItem = nItem;
7403 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7405 lvItem.
iItem = nItem;
7411 return lvItem.
state & uMask;
7430 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7433 lpLVItem->
iItem = nItem;
7456 INT nCountPerColumn;
7463 if (nItem < -1 || nItem >= infoPtr->
nItemCount)
return -1;
7505 while (nItem - nCountPerRow >= 0)
7507 nItem -= nCountPerRow;
7528 while (nItem < infoPtr->nItemCount)
7542 while (nItem + nCountPerRow < infoPtr->nItemCount )
7544 nItem += nCountPerRow;
7566 while (nItem - nCountPerColumn >= 0)
7568 nItem -= nCountPerColumn;
7580 while (nItem % nCountPerRow > 0)
7604 while (nItem + nCountPerColumn < infoPtr->nItemCount)
7606 nItem += nCountPerColumn;
7618 while (nItem % nCountPerRow < nCountPerRow - 1 )
7667 INT nHorzPos = 0, nVertPos = 0;
7674 nHorzPos = scrollInfo.
nPos;
7676 nVertPos = scrollInfo.
nPos;
7678 TRACE(
"nHorzPos=%d, nVertPos=%d\n", nHorzPos, nVertPos);
7687 lpptOrigin->
x -= nHorzPos;
7688 lpptOrigin->
y -= nVertPos;
7724 return stringSize.
cx;
7749 RECT rcBox, rcBounds, rcState, rcIcon, rcLabel, rcSearch;
7798 opt.
x = lpht->
pt.
x - Origin.
x;
7805 if ((opt.
x >= pRect->
left) && (opt.
x < pRect->
right))
7823 if (lpht->
flags)
return -1;
7829 rcSearch.
top = lpht->
pt.
y;
7838 TRACE(
"lpht->iItem=%d\n", iItem);
7839 if (iItem == -1)
return -1;
7845 lvItem.
iItem = iItem;
7850 if (!infoPtr->
bFocus) lvItem.
state &= ~LVIS_FOCUSED;
7865 opt.
x = lpht->
pt.
x - Origin.
x;
7869 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7870 UnionRect(&rcBounds, &rcBounds, &rcState);
7873 if (!
PtInRect(&rcBounds, opt))
return -1;
7890 lpht->
flags &= ~LVHT_NOWHERE;
7893 if (
select && !is_fullrow)
7900 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7901 UnionRect(&rcBounds, &rcBounds, &rcState);
7903 if (!
PtInRect(&rcBounds, opt)) iItem = -1;
7905 return lpht->
iItem = iItem;
7937 if (!lpLVItem || lpLVItem->
iSubItem)
return -1;
7944 if ( !(hdpaSubItems =
DPA_Create(8)) )
goto fail;
7950 lpID->
item = hdpaSubItems;
7969 while (i < infoPtr->nItemCount)
7977 if (cmpv >= 0)
break;
7990 if (nItem == -1)
goto fail;
8018 item.state &= ~LVIS_STATEIMAGEMASK;
8106 TRACE(
"nItem=%d\n", nItem);
8170 switch(infoPtr->
uView) {
8205 infoPtr->bDefaultBkColor =
FALSE;
8250 if (lpColumn->
fmt & LVCFMT_FIXED_WIDTH)
8251 lphdi->
fmt |= HDF_FIXEDWIDTH;
8263 for(item_index = 0; item_index < (nColumn - 1); item_index++)
8276 lphdi->
cxy = lpColumn->
cx;
8324 if (!lpColumn || nColumn < 0)
return -1;
8361 if (nNewColumn == -1)
return -1;
8362 if (nNewColumn != nColumn)
ERR(
"nColumn=%d, nNewColumn=%d\n", nColumn, nNewColumn);
8369 if (lpColumn->
mask & LVCF_MINWIDTH) lpColumnInfo->
cxMin = lpColumn->cxMin;
8382 item.iSubItem = nNewColumn;
8387 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
8393 if (lpSubItem->
iSubItem >= nNewColumn)
8455 if (!bResult)
return FALSE;
8460 INT oldFmt = lpColumnInfo->
fmt;
8462 lpColumnInfo->
fmt = lpColumn->
fmt;
8469 if (lpColumn->
mask & LVCF_MINWIDTH)
8514 TRACE(
"(nColumn=%d, cx=%d)\n", nColumn,
cx);
8548 if (max_cx < nLabelWidth) max_cx = nLabelWidth;
8596 INT bitmap_margin = 0;
8607 INT icon_cx, icon_cy;
8610 cx += icon_cx + 2*bitmap_margin;
8617 cx +=
bmp.bmWidth + 2*bitmap_margin;
8643 HBITMAP hbm_im, hbm_mask, hbm_orig;
8697 TRACE(
"mask=0x%08x, ex_style=0x%08x\n",
mask, ex_style);
8740 style &= ~HDS_DRAGDROP;
8756 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_TRANSPARENTBKGND)
8758 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
8762 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_HEADERINALLVIEWS)
8764 if (infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS)
8780 return old_ex_style;
8843 return oldHoverTime;
8860 INT iconWidth = 0, iconHeight = 0;
8866 if (
cx == -1 &&
cy == -1)
8885 TRACE(
"old=(%d,%d), new=(%d,%d), iconSize=(%d,%d), ntmH=%d\n",
8930 TRACE(
"(nType=%d, himl=%p)\n", nType,
himl);
8958 ERR(
"Unknown icon type=%d\n", nType);
9061 WARN(
"for non-ownerdata performance option not implemented.\n");
9086 if (!
pt || nItem < 0 || nItem >= infoPtr->
nItemCount ||
9101 if ((Pt.
x == -1) && (Pt.
y == -1))
9143 lvItem.
iItem = nItem;
9220 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
9223 lvItem.
iItem = nItem;
9249 TRACE(
"(nIndex=%d)\n", nIndex);
9251 if (nIndex >= -1 && nIndex < infoPtr->nItemCount)
9312 return hwndOldToolTip;
9347 if (infoPtr->
uView == nView)
return 1;
9352 FIXME(
"View LV_VIEW_TILE unimplemented\n");
9356 infoPtr->
uView = nView;
9396 TRACE(
"nView=%d\n", nView);
9474 TRACE(
"(pfnCompare=%p, lParamSort=%lx)\n", pfnCompare, lParamSort);
9478 if (!pfnCompare)
return FALSE;
9553 TRACE(
"(nItem=%d)\n", nItem);
9637 TRACE(
"(lpcs=%p)\n", lpcs);
9641 if (!infoPtr)
return FALSE;
9658 infoPtr->bDefaultBkColor =
TRUE;
9726 TRACE(
"(lpcs=%p, style=0x%08x)\n", lpcs, lpcs->
style);
9830 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
9887 INT nOldScrollPos, nNewScrollPos;
9891 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
9903 nOldScrollPos = scrollInfo.
nPos;
9904 switch (nScrollCode)
9918 nScrollDiff = -scrollInfo.
nPage;
9922 nScrollDiff = scrollInfo.
nPage;
9935 if (nScrollDiff == 0)
return 0;
9938 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
9939 if (nScrollDiff > 0) {
9940 if (nNewScrollPos < nOldScrollPos ||
9941 nNewScrollPos > scrollInfo.
nMax)
9942 nNewScrollPos = scrollInfo.
nMax;
9944 if (nNewScrollPos > nOldScrollPos ||
9945 nNewScrollPos < scrollInfo.
nMin)
9946 nNewScrollPos = scrollInfo.
nMin;
9951 scrollInfo.
nPos = nNewScrollPos;
9955 if (nNewScrollPos == nOldScrollPos)
return 0;
9958 nScrollDiff = nOldScrollPos - nNewScrollPos;
9991 INT nOldScrollPos, nNewScrollPos;
9995 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
10007 nOldScrollPos = scrollInfo.
nPos;
10009 switch (nScrollCode)
10023 nScrollDiff = -scrollInfo.
nPage;
10027 nScrollDiff = scrollInfo.
nPage;
10040 if (nScrollDiff == 0)
return 0;
10043 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
10044 if (nScrollDiff > 0) {
10045 if (nNewScrollPos < nOldScrollPos ||
10046 nNewScrollPos > scrollInfo.
nMax)
10047 nNewScrollPos = scrollInfo.
nMax;
10049 if (nNewScrollPos > nOldScrollPos ||
10050 nNewScrollPos < scrollInfo.
nMin)
10051 nNewScrollPos = scrollInfo.
nMin;
10056 scrollInfo.
nPos = nNewScrollPos;
10060 if (nNewScrollPos == nOldScrollPos)
return 0;
10065 nScrollDiff = nOldScrollPos - nNewScrollPos;
10076 INT pulScrollLines = 3;
10078 TRACE(
"(wheelDelta=%d)\n", wheelDelta);
10080 switch(infoPtr->
uView)
10096 if ((wheelDelta < 0 && infoPtr->cWheelRemainder < 0) ||
10136 TRACE(
"(nVirtualKey=%d, lKeyData=%d)\n", nVirtualKey, lKeyData);
10139 nmKeyDown.
wVKey = nVirtualKey;
10140 nmKeyDown.
flags = 0;
10145 switch (nVirtualKey)
10199 if(nItem < 0) nItem = 0;
10210 nItem = topidx +
cnt - 1;
10254 if (!infoPtr->
bFocus)
return 0;
10301 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10331 r.top =
r.bottom =
pt.y;
10332 r.left =
r.right =
pt.x;
10391 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10403 lvHitTestInfo.
pt.
x =
x;
10404 lvHitTestInfo.
pt.
y =
y;
10408 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
10512 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10516 lvHitTestInfo.
pt.
x =
x;
10517 lvHitTestInfo.
pt.
y =
y;
10607 infoPtr->
hFont = 0;
10634 TRACE(
"(lpnmhdr=%p)\n", lpnmhdr);
10644 switch (lpnmhdr->
code)
10714 hdi.iOrder + 1, 0);
10817 r.right - cxEdge,
r.bottom - cyEdge);
10818 if (region != (HRGN)1)
10826 r.right - cxEdge,
r.bottom -cyEdge);
10858 TRACE(
"(hwndFrom=%p, nCommand=%d)\n", hwndFrom, nCommand);
10899 if (!
hdc)
return 1;
10974 TRACE(
"(key=%hu,X=%u,Y=%u)\n", wKey,
x,
y);
10980 lvHitTestInfo.
pt.
x =
x;
10981 lvHitTestInfo.
pt.
y =
y;
11005 TRACE(
"(key=%hu, x=%d, y=%d)\n", wKey,
x,
y);
11018 if ((
item >= 0) && (item < infoPtr->nItemCount))
11030 if (
ht.iItem != -1)
11034 memset(&nmlv, 0,
sizeof(nmlv));
11107 TRACE(
"(hwndLoseFocus=%p)\n", hwndLoseFocus);
11110 if (infoPtr->
bFocus)
return 0;
11144 TRACE(
"(hfont=%p,redraw=%hu)\n",
hFont, fRedraw);
11147 if (infoPtr->
hFont == oldFont)
return 0;
11285 TRACE(
" wp.flags=0x%08x, wp=%d,%d (%dx%d)\n", wp.
flags, wp.
x, wp.
y, wp.
cx, wp.
cy);
11296 TRACE(
" after SWP wp=%d,%d (%dx%d)\n", wp.
x, wp.
y, wp.
cx, wp.
cy);
11322 UINT uNewView, uOldView;
11325 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11343 if (uNewView != uOldView)
11385 TRACE(
"Hide header control, was 0x%08x\n",
style);
11391 TRACE(
"Show header control, was 0x%08x\n",
style);
11428 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11505 TRACE(
"new version %d\n", iVersion);
11507 return iOldVersion;
11564 return infoPtr->
clrBk;
11618 FIXME(
"LVM_GETISEARCHSTRING: unimplemented\n");
11649 FIXME(
"LVM_GETNUMBEROFWORKAREAS: unimplemented\n");
11699 return infoPtr->
uView;
11705 FIXME(
"LVM_GETWORKAREAS: unimplemented\n");
11940 case WM_NOTIFYFORMAT:
11970 case WM_STYLECHANGED:
11973 case WM_STYLECHANGING:
11979 if (infoPtr->bDefaultBkColor)
11982 infoPtr->bDefaultBkColor =
TRUE;
11989 case WM_THEMECHANGED:
12016 if (
wParam == SPI_SETICONMETRICS ||
12018 wParam == SPI_SETNONCLIENTMETRICS ||
12033 if (bDefaultOrNullFont)
_STLP_MOVE_TO_STD_NAMESPACE bool is_sorted(_ForwardIter __first, _ForwardIter __last)
void destroy(_Tp *__pointer)
ACPI_SIZE strlen(const char *String)
static const char * wine_dbgstr_point(const POINT *ppt)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
BOOL Str_SetPtrWtoA(LPSTR *lppDest, LPCWSTR lpSrc) DECLSPEC_HIDDEN
HWND COMCTL32_CreateToolTip(HWND) DECLSPEC_HIDDEN
VOID COMCTL32_RefreshSysColors(void) DECLSPEC_HIDDEN
COMCTL32_SysColor comctl32_color
BOOL WINAPI _TrackMouseEvent(TRACKMOUSEEVENT *ptme)
int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT *prc, DWORD dwFlags, COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset)
BOOL WINAPI DPA_Sort(HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam)
INT WINAPI DPA_Search(HDPA hdpa, LPVOID pFind, INT nStart, PFNDPACOMPARE pfnCompare, LPARAM lParam, UINT uOptions)
BOOL WINAPI DPA_SetPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa)
INT WINAPI DPA_GetPtrIndex(HDPA hdpa, LPCVOID p)
LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, INT i)
BOOL WINAPI DPA_Destroy(HDPA hdpa)
HDPA WINAPI DPA_Create(INT nGrow)
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI ImageList_Draw(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, UINT fStyle)
COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk)
INT WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, INT dx, INT dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, INT *cx, INT *cy)
static LRESULT LISTVIEW_Notify(LISTVIEW_INFO *infoPtr, NMHDR *lpnmhdr)
static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *infoPtr)
static void LISTVIEW_SetSelection(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_SaveTextMetrics(LISTVIEW_INFO *infoPtr)
#define MAX_EMPTYTEXT_SELECT_WIDTH
static void LISTVIEW_InvalidateSelectedItems(const LISTVIEW_INFO *infoPtr)
@ NOTIFY_MASK_ITEM_CHANGE
@ NOTIFY_MASK_END_LABEL_EDIT
static LRESULT LISTVIEW_LButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static BOOL is_text(LPCWSTR text)
static INT LISTVIEW_FindItemW(const LISTVIEW_INFO *infoPtr, INT nStart, const LVFINDINFOW *lpFindInfo)
static int textcmpWT(LPCWSTR aw, LPCWSTR bt, BOOL isW)
static LRESULT LISTVIEW_PrintClient(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD options)
static DWORD LISTVIEW_MapIndexToId(const LISTVIEW_INFO *infoPtr, INT iItem)
static void map_style_view(LISTVIEW_INFO *infoPtr)
static INT LISTVIEW_GetSelectedCount(const LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERATOR *subitems, POINT pos, DWORD cdmode)
static BOOL LISTVIEW_Enable(const LISTVIEW_INFO *infoPtr)
#define LISTVIEW_SCROLL_ICON_LINE_SIZE
static void LISTVIEW_GetHeaderRect(const LISTVIEW_INFO *infoPtr, INT nSubItem, LPRECT lprc)
static BOOL LISTVIEW_DeleteItem(LISTVIEW_INFO *infoPtr, INT nItem)
struct tagRANGES * RANGES
static DWORD LISTVIEW_SetExtendedListViewStyle(LISTVIEW_INFO *infoPtr, DWORD mask, DWORD ex_style)
#define ICON_BOTTOM_PADDING
static void iterator_rangeitems(ITERATOR *i, RANGE range)
static LRESULT LISTVIEW_SetFocus(LISTVIEW_INFO *infoPtr, HWND hwndLoseFocus)
static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT item, LPRECT lprc)
static VOID CALLBACK LISTVIEW_ScrollTimer(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
static BOOL LISTVIEW_SetCursor(const LISTVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static VOID CALLBACK LISTVIEW_DelayedEditItem(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
static void textcpynT(LPWSTR dest, BOOL isDestW, LPCWSTR src, BOOL isSrcW, INT max)
struct tagITEM_INFO ITEM_INFO
static INT LISTVIEW_MapIdToIndex(const LISTVIEW_INFO *infoPtr, UINT iID)
static DWORD notify_customdraw(const LISTVIEW_INFO *infoPtr, DWORD dwDrawStage, NMLVCUSTOMDRAW *lpnmlvcd)
void LISTVIEW_Unregister(void)
static RANGES ranges_diff(RANGES ranges, RANGES sub)
static LRESULT CallWindowProcT(WNDPROC proc, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL isW)
static LRESULT LISTVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
static HWND CreateEditLabelT(LISTVIEW_INFO *infoPtr, LPCWSTR text, BOOL isW)
static BOOL LISTVIEW_NCPaint(const LISTVIEW_INFO *infoPtr, HRGN region)
static BOOL LISTVIEW_GetColumnOrderArray(const LISTVIEW_INFO *infoPtr, INT iCount, LPINT lpiArray)
void LISTVIEW_Register(void)
static INT LISTVIEW_ProcessLetterKeys(LISTVIEW_INFO *infoPtr, WPARAM charCode, LPARAM keyData)
static INT LISTVIEW_HitTest(const LISTVIEW_INFO *, LPLVHITTESTINFO, BOOL, BOOL)
#define ICON_TOP_PADDING_HITABLE
static LPWSTR textdupTtoW(LPCWSTR text, BOOL isW)
static LPCSTR debugtext_tn(LPCWSTR text, BOOL isW, INT n)
static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *infoPtr, PFNLVCOMPARE pfnCompare, LPARAM lParamSort, BOOL IsEx)
static void iterator_destroy(const ITERATOR *i)
static void LISTVIEW_NextIconPosLeft(LISTVIEW_INFO *infoPtr, LPPOINT lpPos)
static INT LISTVIEW_GetItemTextT(const LISTVIEW_INFO *infoPtr, INT nItem, LPLVITEMW lpLVItem, BOOL isW)
static void prepaint_setup(const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRAW *lpnmlvcd, BOOL SubItem)
static INT LISTVIEW_GetColumnWidth(const LISTVIEW_INFO *infoPtr, INT nColumn)
static LRESULT notify_hdr(const LISTVIEW_INFO *infoPtr, INT code, LPNMHDR pnmh)
static void LISTVIEW_InvalidateColumn(const LISTVIEW_INFO *infoPtr, INT nColumn)
static LRESULT LISTVIEW_VScroll(LISTVIEW_INFO *, INT, INT)
static LRESULT LISTVIEW_SetRedraw(LISTVIEW_INFO *infoPtr, BOOL redraw)
static BOOL LISTVIEW_SetItemCount(LISTVIEW_INFO *infoPtr, INT nItems, DWORD dwFlags)
static char * debug_getbuf(void)
static BOOL LISTVIEW_SetBkColor(LISTVIEW_INFO *infoPtr, COLORREF color)
static LPCSTR debugtext_t(LPCWSTR text, BOOL isW)
static BOOL is_autoarrange(const LISTVIEW_INFO *infoPtr)
static HIMAGELIST LISTVIEW_CreateDragImage(LISTVIEW_INFO *infoPtr, INT iItem, LPPOINT lppt)
#define ranges_check(ranges, desc)
static LRESULT CALLBACK EditLblWndProcW(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static int textlenT(LPCWSTR text, BOOL isW)
static LRESULT LISTVIEW_ThemeChanged(const LISTVIEW_INFO *infoPtr)
static BOOL set_sub_item(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isW, BOOL *bChanged)
static BOOL LISTVIEW_SetItemFocus(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_UpdateHeaderSize(const LISTVIEW_INFO *infoPtr, INT nNewScrollPos)
static BOOL LISTVIEW_MoveIconTo(const LISTVIEW_INFO *infoPtr, INT nItem, const POINT *lppt, BOOL isNew)
static INT LISTVIEW_GetNextItem(const LISTVIEW_INFO *infoPtr, INT nItem, UINT uFlags)
static BOOL ranges_contain(RANGES ranges, INT nItem)
static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *prcErase)
static BOOL LISTVIEW_IsHeaderEnabled(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Size(LISTVIEW_INFO *infoPtr, int Width, int Height)
static DWORD LISTVIEW_SetHoverTime(LISTVIEW_INFO *infoPtr, DWORD dwHoverTime)
static BOOL LISTVIEW_SetTextBkColor(LISTVIEW_INFO *infoPtr, COLORREF color)
static LRESULT LISTVIEW_MouseWheel(LISTVIEW_INFO *infoPtr, INT wheelDelta)
static HIMAGELIST LISTVIEW_GetImageList(const LISTVIEW_INFO *infoPtr, INT nImageList)
#define LABEL_HOR_PADDING
static BOOL ranges_del(RANGES ranges, RANGE range)
static INT LISTVIEW_UpdateVScroll(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_ShowWindow(LISTVIEW_INFO *infoPtr, WPARAM bShown, LPARAM iStatus)
static INT LISTVIEW_StyleChanged(LISTVIEW_INFO *infoPtr, WPARAM wStyleType, const STYLESTRUCT *lpss)
static BOOL LISTVIEW_DrawTrackLine(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_DrawItemPart(LISTVIEW_INFO *infoPtr, LVITEMW *item, const NMLVCUSTOMDRAW *nmlvcd, const POINT *pos)
static DWORD LISTVIEW_ApproximateViewRect(const LISTVIEW_INFO *infoPtr, INT nItemCount, WORD wWidth, WORD wHeight)
static BOOL LISTVIEW_FillBkgnd(const LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *lprcBox)
static RANGES ranges_create(int count)
#define LISTVIEW_DUMP(iP)
static BOOL ranges_add(RANGES ranges, RANGE range)
static void ranges_dump(RANGES ranges)
static BOOL LISTVIEW_GetItemW(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem)
static BOOL LISTVIEW_EraseBkgnd(const LISTVIEW_INFO *infoPtr, HDC hdc)
static BOOL LISTVIEW_IsItemVisible(const LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL LISTVIEW_Update(LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL ranges_additem(RANGES ranges, INT nItem)
static BOOL LISTVIEW_GetItemExtT(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL isW)
static INT LISTVIEW_InsertItemT(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isW)
static RANGE iterator_range(const ITERATOR *i)
static LRESULT LISTVIEW_NotifyFormat(LISTVIEW_INFO *infoPtr, HWND hwndFrom, INT nCommand)
static LRESULT LISTVIEW_NCDestroy(LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_GetItemAtPt(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, POINT pt)
static void ranges_clear(RANGES ranges)
static BOOL LISTVIEW_GetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn, LPLVCOLUMNW lpColumn, BOOL isW)
static BOOL LISTVIEW_DeleteColumn(LISTVIEW_INFO *infoPtr, INT nColumn)
static LRESULT LISTVIEW_CancelEditLabel(LISTVIEW_INFO *infoPtr)
static LRESULT notify_listview(const LISTVIEW_INFO *infoPtr, INT code, LPNMLISTVIEW plvnm)
static LRESULT EditLblWndProcT(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL isW)
static int get_ansi_notification(UINT unicodeNotificationCode)
static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *, INT, DWORD)
static LRESULT notify_forward_header(const LISTVIEW_INFO *infoPtr, NMHEADERW *lpnmhW)
static void scroll_list(LISTVIEW_INFO *infoPtr, INT dx, INT dy)
static void LISTVIEW_RefreshReport(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
static HIMAGELIST LISTVIEW_CreateCheckBoxIL(const LISTVIEW_INFO *infoPtr)
static const char * debugnmlistview(const NMLISTVIEW *plvnm)
static void column_fill_hditem(const LISTVIEW_INFO *infoPtr, HDITEMW *lphdi, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW)
static HIMAGELIST LISTVIEW_SetImageList(LISTVIEW_INFO *, INT, HIMAGELIST)
static BOOL LISTVIEW_Arrange(LISTVIEW_INFO *infoPtr, INT nAlignCode)
static BOOL is_redrawing(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_GetItemMetrics(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, LPRECT lprcBox, LPRECT lprcSelectBox, LPRECT lprcIcon, LPRECT lprcStateIcon, LPRECT lprcLabel)
static INT LISTVIEW_SetView(LISTVIEW_INFO *infoPtr, DWORD nView)
static HCURSOR LISTVIEW_SetHotCursor(LISTVIEW_INFO *infoPtr, HCURSOR hCursor)
static BOOL ranges_shift(RANGES ranges, INT nItem, INT delta, INT nUpper)
static void textfreeT(LPWSTR wstr, BOOL isW)
static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *infoPtr, LVITEMW *lpLVItem, BOOL isW)
static void iterator_empty(ITERATOR *i)
static LRESULT LISTVIEW_GetVersion(const LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_DrawFocusRect(const LISTVIEW_INFO *infoPtr, HDC hdc)
static void iterator_rangesitems(ITERATOR *i, RANGES ranges)
static LPCSTR debugscrollcode(int nScrollCode)
static void LISTVIEW_ShowFocusRect(const LISTVIEW_INFO *infoPtr, BOOL fShow)
static INT LISTVIEW_CalculateItemWidth(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_WMPaint(LISTVIEW_INFO *infoPtr, HDC hdc)
static INT CALLBACK ranges_cmp(LPVOID range1, LPVOID range2, LPARAM flags)
static void ranges_destroy(RANGES ranges)
static BOOL notify_deleteitem(const LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL LISTVIEW_EndEditLabelT(LISTVIEW_INFO *, BOOL, BOOL)
static LRESULT LISTVIEW_RButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static BOOL LISTVIEW_DeselectAllSkipItems(LISTVIEW_INFO *infoPtr, RANGES toSkip)
static BOOL LISTVIEW_DeselectAll(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Paint(LISTVIEW_INFO *infoPtr, HDC hdc)
static BOOL notify_measureitem(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Destroy(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static COLUMN_INFO * LISTVIEW_GetColumnInfo(const LISTVIEW_INFO *infoPtr, INT nSubItem)
static void LISTVIEW_InvalidateItem(const LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL textsetptrT(LPWSTR *dest, LPCWSTR src, BOOL isW)
static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, INT y)
static BOOL notify_click(const LISTVIEW_INFO *infoPtr, INT code, const LVHITTESTINFO *lvht)
static LRESULT LISTVIEW_MouseHover(LISTVIEW_INFO *infoPtr, INT x, INT y)
static DWORD LISTVIEW_SetIconSpacing(LISTVIEW_INFO *infoPtr, INT cx, INT cy)
static void LISTVIEW_MarqueeHighlight(LISTVIEW_INFO *infoPtr, const POINT *coords_orig, INT scroll)
static void LISTVIEW_RefreshOwnerDraw(const LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
static const WCHAR themeClass[]
static const char * debugrange(const RANGE *lprng)
#define TRAILING_HEADER_PADDING
static BOOL iterator_frameditems(ITERATOR *i, const LISTVIEW_INFO *infoPtr, const RECT *lprc)
static const char * debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW)
static BOOL LISTVIEW_SetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW)
static const char * debugscrollinfo(const SCROLLINFO *pScrollInfo)
static BOOL iterator_next(ITERATOR *i)
static LRESULT LISTVIEW_KillFocus(LISTVIEW_INFO *infoPtr)
static BOOL set_main_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isNew, BOOL isW, BOOL *bChanged)
static void LISTVIEW_NextIconPosTop(LISTVIEW_INFO *infoPtr, LPPOINT lpPos)
static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *, INT, LPRECT)
static BOOL LISTVIEW_SetItemState(LISTVIEW_INFO *, INT, const LVITEMW *)
static INT WINAPI LISTVIEW_CallBackCompare(LPVOID first, LPVOID second, LPARAM lParam)
static BOOL LISTVIEW_RedrawItems(const LISTVIEW_INFO *infoPtr, INT nFirst, INT nLast)
static const char * debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW)
static RANGES ranges_clone(RANGES ranges)
static DWORD notify_postpaint(const LISTVIEW_INFO *infoPtr, NMLVCUSTOMDRAW *lpnmlvcd)
static BOOL LISTVIEW_SetColumnOrderArray(LISTVIEW_INFO *infoPtr, INT iCount, const INT *lpiArray)
static INT LISTVIEW_SetSelectionMark(LISTVIEW_INFO *infoPtr, INT nIndex)
static BOOL LISTVIEW_SetUnicodeFormat(LISTVIEW_INFO *infoPtr, BOOL unicode)
static INT LISTVIEW_SetHotItem(LISTVIEW_INFO *infoPtr, INT iIndex)
static BOOL LISTVIEW_GetViewRect(const LISTVIEW_INFO *, LPRECT)
static BOOL LISTVIEW_SetItemPosition(LISTVIEW_INFO *infoPtr, INT nItem, const POINT *pt)
static void LISTVIEW_ShiftFocus(LISTVIEW_INFO *infoPtr, INT focus, INT item, INT direction)
static LRESULT LISTVIEW_KeyDown(LISTVIEW_INFO *infoPtr, INT nVirtualKey, LONG lKeyData)
static BOOL iterator_remove_common_items(ITERATOR *iter1, ITERATOR *iter2)
static BOOL LISTVIEW_SetItemTextT(LISTVIEW_INFO *infoPtr, INT nItem, const LVITEMW *lpLVItem, BOOL isW)
#define DEFAULT_COLUMN_WIDTH
static LRESULT LISTVIEW_TrackMouse(const LISTVIEW_INFO *infoPtr, POINT pt)
static BOOL LISTVIEW_DeselectAllSkipItem(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_GetOrigin(const LISTVIEW_INFO *, LPPOINT)
static BOOL notify_dispinfoT(const LISTVIEW_INFO *infoPtr, UINT code, LPNMLVDISPINFOW pdi, BOOL isW)
struct tagITEMHDR ITEMHDR
static INT LISTVIEW_InsertColumnT(LISTVIEW_INFO *infoPtr, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW)
static UINT LISTVIEW_GetItemState(const LISTVIEW_INFO *, INT, UINT)
static INT LISTVIEW_GetStringWidthT(const LISTVIEW_INFO *, LPCWSTR, BOOL)
static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, INT)
static void LISTVIEW_InvalidateSubItem(const LISTVIEW_INFO *infoPtr, INT nItem, INT nSubItem)
static INT WINAPI LISTVIEW_CallBackCompareEx(LPVOID first, LPVOID second, LPARAM lParam)
static INT LISTVIEW_GetCountPerColumn(const LISTVIEW_INFO *infoPtr)
static void set_icon_size(SIZE *size, HIMAGELIST himl, BOOL is_small)
static BOOL LISTVIEW_GetItemT(const LISTVIEW_INFO *, LPLVITEMW, BOOL)
static BOOL LISTVIEW_IsHotTracking(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_GetAreaRect(const LISTVIEW_INFO *infoPtr, LPRECT lprcView)
static void LISTVIEW_RefreshReportGrid(LISTVIEW_INFO *infoPtr, HDC hdc)
struct tagDELAYED_ITEM_EDIT DELAYED_ITEM_EDIT
static void LISTVIEW_SetGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
static LONG LISTVIEW_GetItemSpacing(const LISTVIEW_INFO *infoPtr, BOOL bSmall)
static BOOL LISTVIEW_GetItemPosition(const LISTVIEW_INFO *, INT, LPPOINT)
struct tagITERATOR ITERATOR
static INT CALLBACK MapIdSearchCompare(LPVOID p1, LPVOID p2, LPARAM lParam)
static void LISTVIEW_UpdateItemSize(LISTVIEW_INFO *infoPtr)
static INT LISTVIEW_GetTopIndex(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_SetVersion(LISTVIEW_INFO *infoPtr, DWORD iVersion)
static BOOL iterator_frameditems_absolute(ITERATOR *i, const LISTVIEW_INFO *infoPtr, const RECT *frame)
static DWORD get_next_itemid(const LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_Scroll(LISTVIEW_INFO *, INT, INT)
static BOOL ranges_delitem(RANGES ranges, INT nItem)
#define TRAILING_LABEL_PADDING
static void notify_itemactivate(const LISTVIEW_INFO *infoPtr, const LVHITTESTINFO *htInfo)
static void LISTVIEW_ShiftIndices(LISTVIEW_INFO *infoPtr, INT nItem, INT direction)
static BOOL is_assignable_item(const LVITEMW *lpLVItem, LONG lStyle)
static void toggle_checkbox_state(LISTVIEW_INFO *infoPtr, INT nItem)
static INT LISTVIEW_GetCountPerRow(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_GetItemOrigin(const LISTVIEW_INFO *, INT, LPPOINT)
static LRESULT LISTVIEW_SetFont(LISTVIEW_INFO *infoPtr, HFONT hFont, WORD fRedraw)
static INT LISTVIEW_CreateHeader(LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_SetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn, INT cx)
static INT LISTVIEW_StyleChanging(WPARAM wStyleType, STYLESTRUCT *lpss)
static HWND LISTVIEW_SetToolTips(LISTVIEW_INFO *infoPtr, HWND hwndNewToolTip)
static void LISTVIEW_RefreshList(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
static void LISTVIEW_InvalidateList(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Command(LISTVIEW_INFO *, WPARAM, LPARAM)
static BOOL LISTVIEW_SetTextColor(LISTVIEW_INFO *infoPtr, COLORREF color)
#define DEBUG_BUFFER_SIZE
static void LISTVIEW_ScrollColumns(LISTVIEW_INFO *infoPtr, INT nColumn, INT dx)
static void LISTVIEW_InvalidateRect(const LISTVIEW_INFO *infoPtr, const RECT *rect)
static LRESULT WINAPI LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
struct tagITEMHDR * LPITEMHDR
static HWND LISTVIEW_EditLabelT(LISTVIEW_INFO *infoPtr, INT nItem, BOOL isW)
static INT LISTVIEW_FindItemA(const LISTVIEW_INFO *infoPtr, INT nStart, const LVFINDINFOA *lpFindInfo)
struct tagLISTVIEW_INFO LISTVIEW_INFO
static INT LISTVIEW_GetCountPerPage(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_RButtonDblClk(const LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static void ranges_assert(RANGES ranges, LPCSTR desc, const char *file, int line)
static BOOL LISTVIEW_AddGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_GetItemBox(const LISTVIEW_INFO *, INT, LPRECT)
static BOOL iterator_visibleitems(ITERATOR *i, const LISTVIEW_INFO *infoPtr, HDC hdc)
static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL)
static INT ranges_itemcount(RANGES ranges)
static void LISTVIEW_UpdateSize(LISTVIEW_INFO *)
static LRESULT LISTVIEW_LButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static BOOL iterator_prev(ITERATOR *i)
static void customdraw_fill(NMLVCUSTOMDRAW *lpnmlvcd, const LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *rcBounds, const LVITEMW *lplvItem)
static void LISTVIEW_ScrollOnInsert(LISTVIEW_INFO *infoPtr, INT nItem, INT dir)
static INT shift_item(const LISTVIEW_INFO *infoPtr, INT nShiftItem, INT nItem, INT direction)
static const char * debuglvhittestinfo(const LVHITTESTINFO *lpht)
static INT LISTVIEW_CalculateItemHeight(const LISTVIEW_INFO *infoPtr)
static INT LISTVIEW_UpdateHScroll(LISTVIEW_INFO *infoPtr)
#define STATEIMAGEINDEX(x)
struct tagCOLUMN_INFO COLUMN_INFO
static LRESULT LISTVIEW_NCCreate(HWND hwnd, WPARAM wParam, const CREATESTRUCTW *lpcs)
static BOOL LISTVIEW_DeleteAllItems(LISTVIEW_INFO *infoPtr, BOOL destroy)
static LRESULT CALLBACK EditLblWndProcA(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
struct tagSUBITEM_INFO SUBITEM_INFO
static SUBITEM_INFO * LISTVIEW_GetSubItemPtr(HDPA hdpaSubItems, INT nSubItem)
BOOL WINAPI Str_SetPtrW(LPWSTR *lppDest, LPCWSTR lpSrc)
const char * wine_dbg_sprintf(const char *format,...)
static __inline const char * debugstr_an(const char *s, int n)
#define WideCharToMultiByte
#define MultiByteToWideChar
static void cleanup(void)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME hTheme, int iPartId, int iStateId)
HRESULT WINAPI DrawThemeParentBackground(HWND hwnd, HDC hdc, RECT *prc)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR pszClassList)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
INT WSAAPI select(IN INT s, IN OUT LPFD_SET readfds, IN OUT LPFD_SET writefds, IN OUT LPFD_SET exceptfds, IN CONST struct timeval *timeout)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const struct newhuff ht[]
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
static const WCHAR textW[]
D3D11_SHADER_VARIABLE_DESC desc
static BOOL CALLBACK callbackW(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA data, LPVOID context)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define cmp(status, error)
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
unsigned __int3264 UINT_PTR
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
#define NM_RELEASEDCAPTURE
#define CDDS_ITEMPOSTPAINT
#define LVM_GETCALLBACKMASK
#define LVM_DELETEALLITEMS
#define LVM_CREATEDRAGIMAGE
_Out_opt_ int _Out_opt_ int * cy
#define HDM_SETORDERARRAY
#define LVS_EX_ONECLICKACTIVATE
#define LVCFMT_COL_HAS_IMAGES
#define LVS_SHAREIMAGELISTS
#define LVM_INSERTCOLUMNA
#define CDDS_ITEMPREPAINT
#define LVS_NOCOLUMNHEADER
#define LVM_GETCOLUMNORDERARRAY
#define LVM_GETITEMSPACING
#define LPSTR_TEXTCALLBACKW
#define HDM_GETBITMAPMARGIN
#define LVM_SETCOLUMNWIDTH
#define LVS_EX_SNAPTOGRID
#define HDM_SETUNICODEFORMAT
#define CDRF_NOTIFYSUBITEMDRAW
#define LVS_EX_TWOCLICKACTIVATE
#define LVS_OWNERDRAWFIXED
#define LVM_GETITEMPOSITION
#define LVS_EX_HEADERDRAGDROP
#define LVN_ODSTATECHANGED
#define CDRF_NOTIFYITEMDRAW
#define LVS_SHOWSELALWAYS
#define LVM_SETITEMPOSITION
#define LVN_DELETEALLITEMS
#define LVM_SETCALLBACKMASK
#define LVM_SETUNICODEFORMAT
#define LVM_GETEDITCONTROL
#define LVM_GETNUMBEROFWORKAREAS
struct _IMAGELIST * HIMAGELIST
#define LVM_APPROXIMATEVIEWRECT
#define LVM_GETSTRINGWIDTHA
#define LVCFMT_BITMAP_ON_RIGHT
#define CDRF_NOTIFYPOSTPAINT
#define LVS_EX_CHECKBOXES
#define LVS_EX_FULLROWSELECT
#define LVS_SORTASCENDING
#define LVM_GETSUBITEMRECT
#define LVM_ENSUREVISIBLE
#define LVS_EX_TRACKSELECT
#define LVS_SORTDESCENDING
#define HDN_ITEMCHANGINGA
#define HDF_BITMAP_ON_RIGHT
#define LVN_BEGINLABELEDITA
#define LVM_SETSELECTIONMARK
#define LVM_CANCELEDITLABEL
#define LVN_ENDLABELEDITW
#define LVM_ISITEMVISIBLE
#define LVM_GETCOUNTPERPAGE
#define LVN_BEGINLABELEDITW
#define LVSIL_GROUPHEADER
#define HDN_ITEMCHANGINGW
#define LVCFMT_JUSTIFYMASK
#define HDM_GETORDERARRAY
#define LVM_SUBITEMHITTEST
#define LVN_ENDLABELEDITA
#define LVM_INSERTCOLUMNW
#define LVM_GETISEARCHSTRINGA
#define LVIR_SELECTBOUNDS
#define LVM_GETEXTENDEDLISTVIEWSTYLE
#define HDN_DIVIDERDBLCLICKW
struct tagTRACKMOUSEEVENT TRACKMOUSEEVENT
#define LVM_GETSELECTIONMARK
#define LVS_EX_SUBITEMIMAGES
#define LVM_SETICONSPACING
#define INDEXTOSTATEIMAGEMASK(i)
#define DPA_GetPtrCount(hdpa)
#define LVM_GETSELECTEDCOUNT
#define LVS_EX_DOUBLEBUFFER
#define LVM_GETUNICODEFORMAT
#define LVM_SETITEMPOSITION32
#define LVM_SETTEXTBKCOLOR
#define LVM_SETCOLUMNORDERARRAY
#define LV_VIEW_SMALLICON
#define LVHT_ONITEMSTATEICON
#define LVSCW_AUTOSIZE_USEHEADER
#define LVIS_STATEIMAGEMASK
#define HDN_DIVIDERDBLCLICKA
#define LVM_GETCOLUMNWIDTH
int(CALLBACK * PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM)
#define LVM_GETTEXTBKCOLOR
#define LVM_GETISEARCHSTRINGW
#define LVSICF_NOINVALIDATEALL
#define LVM_GETSTRINGWIDTHW
#define LVM_SETEXTENDEDLISTVIEWSTYLE
void redraw(int x, int y, int cx, int cy)
#define offsetof(TYPE, MEMBER)
COLORREF clrHighlightText
WCHAR szSearchParam[MAX_PATH]
DWORD lastKeyPressTimestamp
DELAYED_ITEM_EDIT itemEdit
TW_UINT32 TW_UINT16 TW_UINT16 MSG
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
FORCEINLINE BOOL is_icon(PCURICON_OBJECT object)
int WINAPI GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO * pdi
#define GetWindowFont(hwnd)
int WINAPI GetBkMode(_In_ HDC)
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
HRGN WINAPI CreateRectRgn(_In_ int, _In_ int, _In_ int, _In_ int)
COLORREF WINAPI GetTextColor(_In_ HDC)
BOOL WINAPI RectVisible(_In_ HDC, _In_ LPCRECT)
int WINAPI IntersectClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
int WINAPI ExcludeClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI GetTextExtentPointW(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI CombineRgn(_In_opt_ HRGN hrgnDest, _In_opt_ HRGN hrgnSrc1, _In_opt_ HRGN hrgnSrc2, _In_ int fnCombineMode)
COLORREF WINAPI GetBkColor(_In_ HDC)
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
BOOL WINAPI PatBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI GetTextExtentPointA(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
BOOL WINAPI GetTextExtentPoint32A(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define SetWindowLongPtrA
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrW
HDC WINAPI GetWindowDC(_In_opt_ HWND)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI ReleaseCapture(void)
DWORD WINAPI GetMessagePos(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct tagSCROLLINFO SCROLLINFO
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DrawFrameControl(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
int WINAPI GetWindowTextLengthA(_In_ HWND)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
HWND WINAPI GetCapture(void)
#define SPI_GETICONTITLELOGFONT
#define WM_SYSCOLORCHANGE
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
UINT WINAPI GetDoubleClickTime(void)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define SPI_SETICONTITLELOGFONT
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
_In_ int _Inout_ LPRECT lprc
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI UnionRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
#define GCLP_HBRBACKGROUND
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free