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)); \
531 if (!aw)
return bt ? -1 : 0;
569 static int index = 0;
576 if (!lprng)
return "(null)";
585 if (pScrollInfo ==
NULL)
return "(null)";
619 if (!plvnm)
return "(null)";
621 " uOldState=0x%x, uChanged=0x%x, ptAction=%s, lParam=%ld",
631 if (lpLVItem ==
NULL)
return "(null)";
673 if (lpColumn ==
NULL)
return "(null)";
717 if (!lpht)
return "(null)";
736 default:
return "unknown";
745 switch (unicodeNotificationCode)
776 FIXME(
"unknown notification %x\n", unicodeNotificationCode);
777 return unicodeNotificationCode;
953 ret_length =
pdi->item.cchTextMax;
954 ret_text =
pdi->item.pszText;
956 if (return_unicode || return_ansi)
967 *
pdi->item.pszText = 0;
989 TRACE(
" resulting code=%d\n",
pdi->hdr.code);
991 if (return_ansi || return_unicode)
995 strcpy((
char*)ret_text, (
char*)
pdi->item.pszText);
1001 else if (return_ansi)
1008 ret_text, ret_length);
1010 pdi->item.pszText = ret_text;
1011 pdi->item.cchTextMax = ret_length;
1040 lpnmlvcd->
nmcd.
rc = *rcBounds;
1043 if (!lplvItem)
return;
1089 textcolor = lpnmlvcd->
clrText;
1218 i->nItem =
i->nSpecial;
1219 if (
i->nItem != -1)
return TRUE;
1221 if (
i->nItem ==
i->nSpecial)
1223 if (
i->ranges)
i->index = 0;
1229 if (
i->nItem ==
i->nSpecial)
i->nItem++;
1230 if (
i->nItem <
i->range.upper)
return TRUE;
1239 else if (
i->nItem >=
i->range.upper)
goto end;
1241 i->nItem =
i->range.lower;
1242 if (
i->nItem >= 0)
goto testitem;
1264 if (
i->nItem ==
i->nSpecial)
1272 if (
i->nItem ==
i->nSpecial)
i->nItem--;
1273 if (
i->nItem >=
i->range.lower)
return TRUE;
1282 else if (!
start &&
i->nItem <
i->range.lower)
goto end;
1284 i->nItem =
i->range.upper;
1285 if (
i->nItem > 0)
goto testitem;
1287 return (
i->nItem =
i->nSpecial) != -1;
1294 if (!
i->ranges)
return i->range;
1320 i->nItem =
i->nSpecial =
i->range.lower =
i->range.upper = -1;
1349 RECT rcItem, rcTemp;
1373 TRACE(
"building icon ranges:\n");
1374 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
1416 nFirstCol =
max(frame->
left, 0);
1420 lower = nFirstCol * nPerCol + nFirstRow;
1422 TRACE(
"nPerCol=%d, nFirstRow=%d, nLastRow=%d, nFirstCol=%d, nLastCol=%d, lower=%d\n",
1423 nPerCol, nFirstRow, nLastRow, nFirstCol, nLastCol, lower);
1425 if (nLastCol < nFirstCol || nLastRow < nFirstRow)
return TRUE;
1429 TRACE(
"building list ranges:\n");
1430 for (nCol = nFirstCol; nCol <= nLastCol; nCol++)
1432 item_range.lower = nCol * nPerCol + nFirstRow;
1433 if(item_range.lower >= infoPtr->
nItemCount)
break;
1434 item_range.upper =
min(nCol * nPerCol + nLastRow + 1, infoPtr->
nItemCount);
1465 RECT rcItem, rcClip;
1478 if (
i->nSpecial != -1)
1486 TRACE(
"building visible range:\n");
1487 if (!
i->ranges &&
i->range.lower <
i->range.upper)
1525 ERR(
"result is not a one range iterator\n");
1535 if(lower < iter2->
range.lower)
1560 int delete = iter1->
nItem;
1635 return lpID->
id + 1;
1709 infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS) &&
1726 DWORD dwOldBkColor, dwOldTextColor;
1885 if (!charCode || !keyData || infoPtr->
nItemCount == 0)
return 0;
1889 charCode !=
'.' && charCode !=
'`' && charCode !=
'!' &&
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 !=
'~')
1928 if (startidx == infoPtr->
nItemCount) startidx = 0;
1949 int i = startidx, endidx;
1965 for (
i = startidx;
i < endidx;
i++)
1992 (startidx == 0 && endidx == infoPtr->
nItemCount) )
2020 TRACE(
"nNewScrollPos=%d\n", nNewScrollPos);
2031 point[0].
x = -nNewScrollPos;
2032 point[1].
x += nNewScrollPos;
2085 TRACE(
"horzInfo.nMax=%d\n", horzInfo.
nMax);
2126 if (vertInfo.
nPage != 0)
2189 if (
dx != 0 ||
dy != 0)
2192 listRect = infoPtr->
rcList;
2309 assert(nItem >= 0 && nItem < infoPtr->nItemCount);
2319 lpptPosition->
x = nItem / nCountPerColumn * infoPtr->
nItemWidth;
2320 lpptPosition->
y = nItem % nCountPerColumn * infoPtr->
nItemHeight;
2381 SIZE labelSize = { 0, 0 };
2392 if (lprcSelectBox) doSelectBox =
TRUE;
2393 if (lprcLabel) doLabel =
TRUE;
2394 if (doLabel || lprcIcon || lprcStateIcon) doIcon =
TRUE;
2424 LONG state_width = 0;
2431 Icon.left = Box.
left + state_width;
2445 Icon.left = Box.
left + state_width;
2457 (!lpColumnInfo || lpLVItem->
iSubItem == 0 ||
2462 if(lprcIcon) *lprcIcon =
Icon;
2468 lprcStateIcon->
left =
Icon.left - state_width;
2470 lprcStateIcon->
top =
Icon.top;
2475 else Icon.right = 0;
2543 if (!oversizedBox && labelSize.
cy > infoPtr->
ntmHeight)
2547 labelSize.
cy =
max(labelSize.
cy, 1);
2568 if (lprcLabel) *lprcLabel =
Label;
2592 if (lprcSelectBox) *lprcSelectBox = SelectBox;
2600 else *lprcBox = Box;
2629 lvItem.
iItem = nItem;
2657 if (id1->
id == id2->
id)
return 0;
2659 return (id1->
id < id2->
id) ? -1 : 1;
2678 TRACE(
"iID=%d\n", iID);
2711 TRACE(
"iItem=%d\n", iItem);
2714 if (iItem < 0 || iItem >= infoPtr->
nItemCount)
return -1;
2719 return lpItem->
id->
id;
2816 if ((*lpPos).x > nListWidth) (*lpPos).x = nMaxColumns * infoPtr->
nItemWidth;
2817 if ((*lpPos).y > nListHeight) (*lpPos).y = nMaxRows * infoPtr->
nItemHeight;
2846 if (lppt->
x == old.
x && lppt->
y == old.
y)
return TRUE;
2884 TRACE(
"nAlignCode=%d\n", nAlignCode);
2901 default:
return FALSE;
2908 next_pos(infoPtr, &
pos,
i);
2910 next_pos(infoPtr, &
pos);
2937 switch (infoPtr->
uView)
2981 TRACE(
"(lprcView=%p)\n", lprcView);
2983 if (!lprcView)
return FALSE;
3019 if (lpSubItem->
iSubItem == nSubItem)
3056 nItemWidth = rcHeader.
right;
3117 return max(nItemHeight, 1);
3187 if (((
RANGE*)range1)->upper <= ((
RANGE*)range2)->lower)
3189 else if (((
RANGE*)range2)->upper <= ((
RANGE*)range1)->lower)
3199#define ranges_check(ranges, desc) if (TRACE_ON(listview)) ranges_assert(ranges, desc, __FILE__, __LINE__)
3213 assert (prev->lower >= 0 && prev->lower < prev->upper);
3217 assert (prev->upper <= curr->lower);
3218 assert (curr->lower < curr->upper);
3222 TRACE(
"--- Done checking---\n");
3228 if (!ranges)
return NULL;
3230 if (ranges->
hdpa)
return ranges;
3247 if (!ranges)
return;
3259 if (!ranges || !ranges->
hdpa)
3274 if (!newrng)
goto fail;
3285 TRACE (
"clone failed\n");
3310 RANGE srchrng = { nItem, nItem + 1 };
3312 TRACE(
"(nItem=%d)\n", nItem);
3324 count += sel->upper - sel->lower;
3332 RANGE srchrng = { nItem, nItem + 1 }, *chkrng;
3341 if (chkrng->lower >= nItem)
3342 chkrng->lower =
max(
min(chkrng->lower + delta, nUpper - 1), 0);
3343 if (chkrng->upper > nItem)
3344 chkrng->upper =
max(
min(chkrng->upper + delta, nUpper), 0);
3358 srchrgn.lower =
range.lower - 1;
3359 srchrgn.upper =
range.upper + 1;
3366 TRACE(
"Adding new range\n");
3370 if(!newrgn)
goto fail;
3387 RANGE *chkrgn, *mrgrgn;
3388 INT fromindex, mergeindex;
3393 chkrgn->lower =
min(
range.lower, chkrgn->lower);
3394 chkrgn->upper =
max(
range.upper, chkrgn->upper);
3400 srchrgn.lower = chkrgn->lower - 1;
3401 srchrgn.upper = chkrgn->upper + 1;
3406 if (mergeindex == -1)
break;
3407 if (mergeindex ==
index)
3409 fromindex =
index + 1;
3413 TRACE(
"Merge with index %i\n", mergeindex);
3416 chkrgn->lower =
min(chkrgn->lower, mrgrgn->lower);
3417 chkrgn->upper =
max(chkrgn->upper, mrgrgn->upper);
3450 if ( (chkrgn->upper ==
range.upper) &&
3451 (chkrgn->lower ==
range.lower) )
3458 else if ( (chkrgn->upper <=
range.upper) &&
3459 (chkrgn->lower >=
range.lower) )
3465 else if ( (chkrgn->upper <=
range.upper) &&
3466 (chkrgn->lower <
range.lower) )
3468 chkrgn->upper =
range.lower;
3471 else if ( (chkrgn->upper >
range.upper) &&
3472 (chkrgn->lower >=
range.lower) )
3474 chkrgn->lower =
range.upper;
3482 if (!(newrgn =
Alloc(
sizeof(
RANGE))))
goto fail;
3483 newrgn->lower = chkrgn->lower;
3484 newrgn->upper =
range.lower;
3485 chkrgn->lower =
range.upper;
3567 INT nSelectedCount = 0;
3581 TRACE(
"nSelectedCount=%d\n", nSelectedCount);
3582 return nSelectedCount;
3613 if (nShiftItem < nItem)
return nShiftItem;
3615 if (nShiftItem > nItem)
return nShiftItem + direction;
3617 if (direction > 0)
return nShiftItem + direction;
3654 TRACE(
"Shifting %i, %i steps\n", nItem, direction);
3693 if (nFirst == -1) nFirst = nItem;
3698 for (
i = nFirst;
i <= nLast;
i++)
3702 nmlv.
iFrom = nFirst;
3756 RECT rcItem, rcSel, rcSelMark;
3813 TRACE(
"nItem=%d\n", nItem);
3844 TRACE(
"nItem=%d, wShift=%d, wCtrl=%d\n", nItem, wShift, wCtrl);
3845 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
3880 ZeroMemory(&lvHitTestInfo,
sizeof(lvHitTestInfo));
3881 lvHitTestInfo.
pt.
x =
pt.x;
3882 lvHitTestInfo.
pt.
y =
pt.y;
3941#define SCROLL_LEFT 0x1
3942#define SCROLL_RIGHT 0x2
3943#define SCROLL_UP 0x4
3944#define SCROLL_DOWN 0x8
3983 rect.right = coords_offs.
x;
3987 rect.left = coords_offs.
x;
3994 rect.bottom = coords_offs.
y;
3998 rect.top = coords_offs.
y;
4014 if ((scroll &
SCROLL_UP) && (coords_orig->
y <= 0))
4032 if (old_elems.
nItem > -1)
4053 if (new_elems.
nItem > -1)
4107 if (scrollInfo.
nPos != scrollInfo.
nMin)
4110 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4116 if (scrollInfo.
nPos != scrollInfo.
nMin)
4119 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4327 if (lpLVItem->
mask == 0)
return TRUE;
4353 TRACE(
"oldState=%x, newState=%x\n",
item.state, lpLVItem->
state);
4370 TRACE(
"change mask=0x%x\n", uChanged);
4405 if (!uChanged)
return TRUE;
4425 lpItem->
state &= ~stateMask;
4426 lpItem->
state |= (lpLVItem->
state & stateMask);
4475 if (isNew)
return TRUE;
4529 if (!lpSubItem)
return FALSE;
4656 nItem = scrollInfo.
nPos;
4664 TRACE(
"nItem=%d\n", nItem);
4695 RECT rcSelect, rcLabel, rcBox, rcStateIcon, rcIcon;
4696 const RECT *background;
4703 if (!focus)
item->state &= ~LVIS_FOCUSED;
4711 TRACE(
"%d: box=%s, select=%s, icon=%s. label=%s\n",
item->iSubItem,
4735 background = &rcLabel;
4737 background = &rcSelect;
4778 TRACE(
"stateimage=%d\n", stateimage);
4809 else if (
item->iSubItem)
4831 DrawShadowText(nmlvcd->
nmcd.
hdc,
item->pszText, -1, &rcLabel,
format,
RGB(255, 255, 255),
RGB(0, 0, 0), 2, 2);
4856 static WCHAR callbackW[] = {
'(',
'c',
'a',
'l',
'l',
'b',
'a',
'c',
'k',
')', 0 };
4868 lvItem.
iItem = nItem;
4880 if (!focus) lvItem.
state &= ~LVIS_FOCUSED;
4914 if (subitems->
nItem)
4918 lvItem.
iItem = nItem;
4943 temp_nmlvcd = nmlvcd;
4999 item.iItem =
i->nItem;
5057 RECT rcClip, rcItem;
5143 RECT rcClip, rcItem = {0};
5187 if (rcItem.
left == 0)
continue;
5188 rcItem.
left += Origin.
x;
5189 rcItem.
right += Origin.
x;
5204 rcItem.
right += Origin.
x;
5214 for(
y = Origin.
y > 1 ? Origin.
y - 1 : itemheight - 1 + Origin.
y % itemheight;
y<=infoPtr->rcList.bottom;
y+=itemheight)
5274 COLORREF oldTextColor = 0, oldBkColor = 0;
5288 TRACE(
"double buffering\n");
5292 ERR(
"Failed to create DC for backbuffer\n");
5298 ERR(
"Failed to create bitmap for backbuffer\n");
5426 DWORD dwViewRect = 0;
5428 if (nItemCount == -1)
5433 INT nItemCountPerColumn = 1;
5434 INT nColumnCount = 0;
5436 if (wHeight == 0xFFFF)
5442 if (wHeight < infoPtr->nItemHeight)
5449 nItemCountPerColumn = wHeight / infoPtr->
nItemHeight;
5450 if (nItemCountPerColumn == 0)
5451 nItemCountPerColumn = 1;
5453 if (nItemCount % nItemCountPerColumn != 0)
5454 nColumnCount = nItemCount / nItemCountPerColumn;
5456 nColumnCount = nItemCount / nItemCountPerColumn + 1;
5461 wHeight = nItemCountPerColumn * infoPtr->
nItemHeight + 2;
5462 wWidth = nColumnCount * infoPtr->
nItemWidth + 2;
5464 dwViewRect =
MAKELONG(wWidth, wHeight);
5474 wHeight = (rcBox.
bottom - rcBox.
top) * nItemCount;
5479 if (wHeight == 0xffff)
5481 if (wWidth == 0xffff)
5485 dwViewRect =
MAKELONG(wWidth, wHeight);
5496 if (wWidth == 0xffff)
5499 if (wWidth < nItemWidth)
5500 wWidth = nItemWidth;
5502 cols = wWidth / nItemWidth;
5503 if (cols > nItemCount)
5510 rows = nItemCount / cols;
5511 if (nItemCount % cols)
5517 wHeight = (nItemHeight * rows)+2;
5518 wWidth = (nItemWidth * cols)+2;
5520 dwViewRect =
MAKELONG(wWidth, wHeight);
5523 FIXME(
"uView == LV_VIEW_SMALLICON: not implemented\n");
5575 if (iItem < 0 || iItem >= infoPtr->
nItemCount || !lppt)
5582 lppt->
x = rcItem.
left;
5583 lppt->
y = rcItem.
top;
5612 TRACE(
"ret=%p\n", dragList);
5731 if (hdi.iOrder >= nOrder) {
5770 TRACE(
"nColumn=%d\n", nColumn);
5792 INT nItem, nSubItem,
i;
5794 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
5802 if (lpSubItem->
iSubItem == nColumn)
5805 lpDelItem = lpSubItem;
5807 else if (lpSubItem->
iSubItem > nColumn)
5853 INT nPerCol, nItemCol, nItemRow;
5882 nItemCol = nItem / nPerCol;
5883 nItemRow = nItem % nPerCol;
5929 TRACE(
"(nItem=%d)\n", nItem);
6055 infoPtr->
notify_mask &= ~NOTIFY_MASK_END_LABEL_EDIT;
6072 if (!pszText)
return TRUE;
6124 TRACE(
"(hwnd=%p, uMsg=%x, wParam=%lx, lParam=%lx, isW=%d)\n",
6217 hedit =
CreateWindowW(
WC_EDITW,
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6219 hedit =
CreateWindowA(
WC_EDITA, (
LPCSTR)
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6221 if (!hedit)
return 0;
6257 TRACE(
"(nItem=%d, isW=%d)\n", nItem,
isW);
6268 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
6318 sz.
cx +=
tm.tmMaxCharWidth * 2;
6352 INT nScrollPosHeight = 0;
6353 INT nScrollPosWidth = 0;
6354 INT nHorzAdjust = 0;
6355 INT nVertAdjust = 0;
6358 RECT rcItem, rcTemp;
6371 nScrollPosWidth = 1;
6391 nScrollPosHeight = 1;
6405 if (!nScrollPosWidth && !nScrollPosHeight)
return TRUE;
6407 if (nScrollPosWidth)
6409 INT diff = nHorzDiff / nScrollPosWidth;
6410 if (nHorzDiff % nScrollPosWidth) diff += nHorzAdjust;
6414 if (nScrollPosHeight)
6416 INT diff = nVertDiff / nScrollPosHeight;
6417 if (nVertDiff % nScrollPosHeight) diff += nVertAdjust;
6442 INT nItem = nStart + 1, nLast = infoPtr->
nItemCount, nNearestItem = -1;
6443 ULONG xdist, ydist, dist, mindist = 0x7fffffff;
6454 nmlv.
lvfi = *lpFindInfo;
6458 if (!lpFindInfo || nItem < 0)
return -1;
6494 default:
ERR(
"Unknown vkDirection=%d\n", lpFindInfo->
vkDirection);
6505 lvItem.
mask &= ~LVIF_TEXT;
6508 nItem = bNearest ? -1 : nStart + 1;
6511 for (; nItem < nLast; nItem++)
6513 lvItem.
iItem = nItem;
6531 if (!
p ||
p != lvItem.
pszText)
continue;
6539 if (!bNearest)
return nItem;
6548 dist = xdist * xdist + ydist * ydist;
6554 nNearestItem = nItem;
6566 return nNearestItem;
6589 memcpy(&fiw, lpFindInfo,
sizeof(fiw));
6642 lpColumn->
fmt = lpColumnInfo->
fmt;
6656 if (lpColumn->
mask & LVCF_MINWIDTH)
6657 lpColumn->cxMin = lpColumnInfo->
cxMin;
6682 INT nColumnWidth = 0;
6685 TRACE(
"nColumn=%d\n", nColumn);
6688 switch(infoPtr->
uView)
6701 WARN(
"(%p): HDM_GETITEMW failed for item %d\n", infoPtr->
hwndSelf, nColumn);
6704 nColumnWidth = hdItem.cxy;
6708 TRACE(
"nColumnWidth=%d\n", nColumnWidth);
6709 return nColumnWidth;
6726 switch (infoPtr->
uView)
6760 FIXME(
"LVSIL_GROUPHEADER not supported\n");
6763 WARN(
"got unknown imagelist index - %d\n", nImageList);
6811 if (lpLVItem->
mask == 0)
return TRUE;
6818 lpLVItem->
state = 0;
6826 lpLVItem->
state = 0;
6871 *lpLVItem = dispInfo.
item;
6901 lpLVItem->
state &= ~LVIS_FOCUSED;
6909 lpLVItem->
state &= ~LVIS_SELECTED;
6925 pItemHdr = lpSubItem ? &lpSubItem->
hdr : &callbackHdr;
6928 WARN(
" iSubItem invalid (%08x), ignored.\n", isubitem);
6933 pItemHdr = &lpItem->
hdr;
6980 if (isubitem) dispInfo.
item.
mask &= ~LVIF_DI_SETITEM;
7023 if (isubitem)
return TRUE;
7031 lpLVItem->
state &= ~dispInfo.item.stateMask;
7036 lpLVItem->
state &= ~LVIS_FOCUSED;
7042 lpLVItem->
state &= ~LVIS_SELECTED;
7123 TRACE(
"(nItem=%d, lpptPosition=%p)\n", nItem, lpptPosition);
7125 if (!lpptPosition || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
7135 lpptPosition->
x += Origin.
x;
7136 lpptPosition->
y += Origin.
y;
7224 oversizedBox =
TRUE;
7232 lvItem.
iItem = nItem;
7414 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7416 lvItem.
iItem = nItem;
7422 return lvItem.
state & uMask;
7441 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7444 lpLVItem->
iItem = nItem;
7467 INT nCountPerColumn;
7474 if (nItem < -1 || nItem >= infoPtr->
nItemCount)
return -1;
7516 while (nItem - nCountPerRow >= 0)
7518 nItem -= nCountPerRow;
7539 while (nItem < infoPtr->nItemCount)
7553 while (nItem + nCountPerRow < infoPtr->nItemCount )
7555 nItem += nCountPerRow;
7577 while (nItem - nCountPerColumn >= 0)
7579 nItem -= nCountPerColumn;
7591 while (nItem % nCountPerRow > 0)
7615 while (nItem + nCountPerColumn < infoPtr->nItemCount)
7617 nItem += nCountPerColumn;
7629 while (nItem % nCountPerRow < nCountPerRow - 1 )
7678 INT nHorzPos = 0, nVertPos = 0;
7685 nHorzPos = scrollInfo.
nPos;
7687 nVertPos = scrollInfo.
nPos;
7689 TRACE(
"nHorzPos=%d, nVertPos=%d\n", nHorzPos, nVertPos);
7698 lpptOrigin->
x -= nHorzPos;
7699 lpptOrigin->
y -= nVertPos;
7735 return stringSize.
cx;
7760 RECT rcBox, rcBounds, rcState, rcIcon, rcLabel, rcSearch;
7809 opt.
x = lpht->
pt.
x - Origin.
x;
7816 if ((opt.
x >= pRect->
left) && (opt.
x < pRect->
right))
7834 if (lpht->
flags)
return -1;
7840 rcSearch.
top = lpht->
pt.
y;
7849 TRACE(
"lpht->iItem=%d\n", iItem);
7850 if (iItem == -1)
return -1;
7856 lvItem.
iItem = iItem;
7861 if (!infoPtr->
bFocus) lvItem.
state &= ~LVIS_FOCUSED;
7876 opt.
x = lpht->
pt.
x - Origin.
x;
7880 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7881 UnionRect(&rcBounds, &rcBounds, &rcState);
7884 if (!
PtInRect(&rcBounds, opt))
return -1;
7901 lpht->
flags &= ~LVHT_NOWHERE;
7904 if (
select && !is_fullrow)
7911 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7912 UnionRect(&rcBounds, &rcBounds, &rcState);
7914 if (!
PtInRect(&rcBounds, opt)) iItem = -1;
7916 return lpht->
iItem = iItem;
7948 if (!lpLVItem || lpLVItem->
iSubItem)
return -1;
7955 if ( !(hdpaSubItems =
DPA_Create(8)) )
goto fail;
7961 lpID->
item = hdpaSubItems;
7980 while (i < infoPtr->nItemCount)
7988 if (cmpv >= 0)
break;
8001 if (nItem == -1)
goto fail;
8029 item.state &= ~LVIS_STATEIMAGEMASK;
8117 TRACE(
"nItem=%d\n", nItem);
8181 switch(infoPtr->
uView) {
8216 infoPtr->bDefaultBkColor =
FALSE;
8261 if (lpColumn->
fmt & LVCFMT_FIXED_WIDTH)
8262 lphdi->
fmt |= HDF_FIXEDWIDTH;
8274 for(item_index = 0; item_index < (nColumn - 1); item_index++)
8287 lphdi->
cxy = lpColumn->
cx;
8335 if (!lpColumn || nColumn < 0)
return -1;
8372 if (nNewColumn == -1)
return -1;
8373 if (nNewColumn != nColumn)
ERR(
"nColumn=%d, nNewColumn=%d\n", nColumn, nNewColumn);
8380 if (lpColumn->
mask & LVCF_MINWIDTH) lpColumnInfo->
cxMin = lpColumn->cxMin;
8393 item.iSubItem = nNewColumn;
8398 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
8404 if (lpSubItem->
iSubItem >= nNewColumn)
8466 if (!bResult)
return FALSE;
8471 INT oldFmt = lpColumnInfo->
fmt;
8473 lpColumnInfo->
fmt = lpColumn->
fmt;
8480 if (lpColumn->
mask & LVCF_MINWIDTH)
8525 TRACE(
"(nColumn=%d, cx=%d)\n", nColumn,
cx);
8559 if (max_cx < nLabelWidth) max_cx = nLabelWidth;
8602 INT bitmap_margin = 0;
8613 INT icon_cx, icon_cy;
8616 cx += icon_cx + 2*bitmap_margin;
8623 cx +=
bmp.bmWidth + 2*bitmap_margin;
8649 HBITMAP hbm_im, hbm_mask, hbm_orig;
8703 TRACE(
"mask=0x%08x, ex_style=0x%08x\n",
mask, ex_style);
8746 style &= ~HDS_DRAGDROP;
8762 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_TRANSPARENTBKGND)
8764 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
8768 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_HEADERINALLVIEWS)
8770 if (infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS)
8786 return old_ex_style;
8849 return oldHoverTime;
8866 INT iconWidth = 0, iconHeight = 0;
8872 if (
cx == -1 &&
cy == -1)
8891 TRACE(
"old=(%d,%d), new=(%d,%d), iconSize=(%d,%d), ntmH=%d\n",
8936 TRACE(
"(nType=%d, himl=%p)\n", nType,
himl);
8964 ERR(
"Unknown icon type=%d\n", nType);
9067 WARN(
"for non-ownerdata performance option not implemented.\n");
9092 if (!
pt || nItem < 0 || nItem >= infoPtr->
nItemCount ||
9107 if ((Pt.
x == -1) && (Pt.
y == -1))
9149 lvItem.
iItem = nItem;
9226 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
9229 lvItem.
iItem = nItem;
9255 TRACE(
"(nIndex=%d)\n", nIndex);
9257 if (nIndex >= -1 && nIndex < infoPtr->nItemCount)
9318 return hwndOldToolTip;
9353 if (infoPtr->
uView == nView)
return 1;
9358 FIXME(
"View LV_VIEW_TILE unimplemented\n");
9362 infoPtr->
uView = nView;
9402 TRACE(
"nView=%d\n", nView);
9480 TRACE(
"(pfnCompare=%p, lParamSort=%lx)\n", pfnCompare, lParamSort);
9484 if (!pfnCompare)
return FALSE;
9559 TRACE(
"(nItem=%d)\n", nItem);
9643 TRACE(
"(lpcs=%p)\n", lpcs);
9647 if (!infoPtr)
return FALSE;
9664 infoPtr->bDefaultBkColor =
TRUE;
9732 TRACE(
"(lpcs=%p, style=0x%08x)\n", lpcs, lpcs->
style);
9836 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
9893 INT nOldScrollPos, nNewScrollPos;
9897 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
9909 nOldScrollPos = scrollInfo.
nPos;
9910 switch (nScrollCode)
9924 nScrollDiff = -scrollInfo.
nPage;
9928 nScrollDiff = scrollInfo.
nPage;
9941 if (nScrollDiff == 0)
return 0;
9944 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
9945 if (nScrollDiff > 0) {
9946 if (nNewScrollPos < nOldScrollPos ||
9947 nNewScrollPos > scrollInfo.
nMax)
9948 nNewScrollPos = scrollInfo.
nMax;
9950 if (nNewScrollPos > nOldScrollPos ||
9951 nNewScrollPos < scrollInfo.
nMin)
9952 nNewScrollPos = scrollInfo.
nMin;
9957 scrollInfo.
nPos = nNewScrollPos;
9961 if (nNewScrollPos == nOldScrollPos)
return 0;
9964 nScrollDiff = nOldScrollPos - nNewScrollPos;
9997 INT nOldScrollPos, nNewScrollPos;
10001 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
10013 nOldScrollPos = scrollInfo.
nPos;
10015 switch (nScrollCode)
10029 nScrollDiff = -scrollInfo.
nPage;
10033 nScrollDiff = scrollInfo.
nPage;
10046 if (nScrollDiff == 0)
return 0;
10049 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
10050 if (nScrollDiff > 0) {
10051 if (nNewScrollPos < nOldScrollPos ||
10052 nNewScrollPos > scrollInfo.
nMax)
10053 nNewScrollPos = scrollInfo.
nMax;
10055 if (nNewScrollPos > nOldScrollPos ||
10056 nNewScrollPos < scrollInfo.
nMin)
10057 nNewScrollPos = scrollInfo.
nMin;
10062 scrollInfo.
nPos = nNewScrollPos;
10066 if (nNewScrollPos == nOldScrollPos)
return 0;
10071 nScrollDiff = nOldScrollPos - nNewScrollPos;
10082 INT pulScrollLines = 3;
10084 TRACE(
"(wheelDelta=%d)\n", wheelDelta);
10086 switch(infoPtr->
uView)
10102 if ((wheelDelta < 0 && infoPtr->cWheelRemainder < 0) ||
10142 TRACE(
"(nVirtualKey=%d, lKeyData=%d)\n", nVirtualKey, lKeyData);
10145 nmKeyDown.
wVKey = nVirtualKey;
10146 nmKeyDown.
flags = 0;
10151 switch (nVirtualKey)
10205 if(nItem < 0) nItem = 0;
10216 nItem = topidx + cnt - 1;
10249 if (!infoPtr->
bFocus)
return 0;
10296 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10326 r.top =
r.bottom =
pt.y;
10327 r.left =
r.right =
pt.x;
10386 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10398 lvHitTestInfo.
pt.
x =
x;
10399 lvHitTestInfo.
pt.
y =
y;
10403 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
10507 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10511 lvHitTestInfo.
pt.
x =
x;
10512 lvHitTestInfo.
pt.
y =
y;
10602 infoPtr->
hFont = 0;
10629 TRACE(
"(lpnmhdr=%p)\n", lpnmhdr);
10639 switch (lpnmhdr->
code)
10709 hdi.iOrder + 1, 0);
10812 r.right - cxEdge,
r.bottom - cyEdge);
10813 if (region != (HRGN)1)
10821 r.right - cxEdge,
r.bottom -cyEdge);
10853 TRACE(
"(hwndFrom=%p, nCommand=%d)\n", hwndFrom, nCommand);
10894 if (!
hdc)
return 1;
10969 TRACE(
"(key=%hu,X=%u,Y=%u)\n", wKey,
x,
y);
10975 lvHitTestInfo.
pt.
x =
x;
10976 lvHitTestInfo.
pt.
y =
y;
11000 TRACE(
"(key=%hu, x=%d, y=%d)\n", wKey,
x,
y);
11013 if ((
item >= 0) && (item < infoPtr->nItemCount))
11025 if (
ht.iItem != -1)
11029 memset(&nmlv, 0,
sizeof(nmlv));
11102 TRACE(
"(hwndLoseFocus=%p)\n", hwndLoseFocus);
11105 if (infoPtr->
bFocus)
return 0;
11139 TRACE(
"(hfont=%p,redraw=%hu)\n",
hFont, fRedraw);
11142 if (infoPtr->
hFont == oldFont)
return 0;
11280 TRACE(
" wp.flags=0x%08x, wp=%d,%d (%dx%d)\n", wp.
flags, wp.
x, wp.
y, wp.
cx, wp.
cy);
11291 TRACE(
" after SWP wp=%d,%d (%dx%d)\n", wp.
x, wp.
y, wp.
cx, wp.
cy);
11317 UINT uNewView, uOldView;
11320 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11338 if (uNewView != uOldView)
11380 TRACE(
"Hide header control, was 0x%08x\n",
style);
11386 TRACE(
"Show header control, was 0x%08x\n",
style);
11423 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11500 TRACE(
"new version %d\n", iVersion);
11502 return iOldVersion;
11559 return infoPtr->
clrBk;
11613 FIXME(
"LVM_GETISEARCHSTRING: unimplemented\n");
11644 FIXME(
"LVM_GETNUMBEROFWORKAREAS: unimplemented\n");
11694 return infoPtr->
uView;
11700 FIXME(
"LVM_GETWORKAREAS: unimplemented\n");
11935 case WM_NOTIFYFORMAT:
11965 case WM_STYLECHANGED:
11968 case WM_STYLECHANGING:
11974 if (infoPtr->bDefaultBkColor)
11977 infoPtr->bDefaultBkColor =
TRUE;
11984 case WM_THEMECHANGED:
_STLP_MOVE_TO_STD_NAMESPACE bool is_sorted(_ForwardIter __first, _ForwardIter __last)
void destroy(_Tp *__pointer)
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
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_KeySelection(LISTVIEW_INFO *, INT, BOOL)
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 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 int lstrncmpiW(LPCWSTR s1, LPCWSTR s2, int n)
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)
DWORD WINAPI GetTickCount(VOID)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
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 OpenThemeData(HWND hwnd, LPCWSTR classlist)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
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
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
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[]
static const WCHAR 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
#define LOCALE_USER_DEFAULT
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_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO * pdi
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)
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