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;
563 static int index = 0;
570 if (!lprng)
return "(null)";
579 if (pScrollInfo ==
NULL)
return "(null)";
613 if (!plvnm)
return "(null)";
615 " uOldState=0x%x, uChanged=0x%x, ptAction=%s, lParam=%ld",
625 if (lpLVItem ==
NULL)
return "(null)";
667 if (lpColumn ==
NULL)
return "(null)";
711 if (!lpht)
return "(null)";
730 default:
return "unknown";
739 switch (unicodeNotificationCode)
770 FIXME(
"unknown notification %x\n", unicodeNotificationCode);
771 return unicodeNotificationCode;
947 ret_length =
pdi->item.cchTextMax;
948 ret_text =
pdi->item.pszText;
950 if (return_unicode || return_ansi)
961 *
pdi->item.pszText = 0;
983 TRACE(
" resulting code=%d\n",
pdi->hdr.code);
985 if (return_ansi || return_unicode)
989 strcpy((
char*)ret_text, (
char*)
pdi->item.pszText);
995 else if (return_ansi)
1002 ret_text, ret_length);
1004 pdi->item.pszText = ret_text;
1005 pdi->item.cchTextMax = ret_length;
1034 lpnmlvcd->
nmcd.
rc = *rcBounds;
1037 if (!lplvItem)
return;
1083 textcolor = lpnmlvcd->
clrText;
1212 i->nItem =
i->nSpecial;
1213 if (
i->nItem != -1)
return TRUE;
1215 if (
i->nItem ==
i->nSpecial)
1217 if (
i->ranges)
i->index = 0;
1223 if (
i->nItem ==
i->nSpecial)
i->nItem++;
1224 if (
i->nItem <
i->range.upper)
return TRUE;
1233 else if (
i->nItem >=
i->range.upper)
goto end;
1235 i->nItem =
i->range.lower;
1236 if (
i->nItem >= 0)
goto testitem;
1258 if (
i->nItem ==
i->nSpecial)
1266 if (
i->nItem ==
i->nSpecial)
i->nItem--;
1267 if (
i->nItem >=
i->range.lower)
return TRUE;
1276 else if (!
start &&
i->nItem <
i->range.lower)
goto end;
1278 i->nItem =
i->range.upper;
1279 if (
i->nItem > 0)
goto testitem;
1281 return (
i->nItem =
i->nSpecial) != -1;
1288 if (!
i->ranges)
return i->range;
1314 i->nItem =
i->nSpecial =
i->range.lower =
i->range.upper = -1;
1343 RECT rcItem, rcTemp;
1367 TRACE(
"building icon ranges:\n");
1368 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
1410 nFirstCol =
max(frame->
left, 0);
1414 lower = nFirstCol * nPerCol + nFirstRow;
1416 TRACE(
"nPerCol=%d, nFirstRow=%d, nLastRow=%d, nFirstCol=%d, nLastCol=%d, lower=%d\n",
1417 nPerCol, nFirstRow, nLastRow, nFirstCol, nLastCol, lower);
1419 if (nLastCol < nFirstCol || nLastRow < nFirstRow)
return TRUE;
1423 TRACE(
"building list ranges:\n");
1424 for (nCol = nFirstCol; nCol <= nLastCol; nCol++)
1426 item_range.lower = nCol * nPerCol + nFirstRow;
1427 if(item_range.lower >= infoPtr->
nItemCount)
break;
1428 item_range.upper =
min(nCol * nPerCol + nLastRow + 1, infoPtr->
nItemCount);
1459 RECT rcItem, rcClip;
1472 if (
i->nSpecial != -1)
1480 TRACE(
"building visible range:\n");
1481 if (!
i->ranges &&
i->range.lower <
i->range.upper)
1519 ERR(
"result is not a one range iterator\n");
1529 if(lower < iter2->
range.lower)
1554 int delete = iter1->
nItem;
1629 return lpID->
id + 1;
1703 infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS) &&
1720 DWORD dwOldBkColor, dwOldTextColor;
1879 if (!charCode || !keyData || infoPtr->
nItemCount == 0)
return 0;
1883 charCode !=
'.' && charCode !=
'`' && charCode !=
'!' &&
1884 charCode !=
'@' && charCode !=
'#' && charCode !=
'$' &&
1885 charCode !=
'%' && charCode !=
'^' && charCode !=
'&' &&
1886 charCode !=
'*' && charCode !=
'(' && charCode !=
')' &&
1887 charCode !=
'-' && charCode !=
'_' && charCode !=
'+' &&
1888 charCode !=
'=' && charCode !=
'\\'&& charCode !=
']' &&
1889 charCode !=
'}' && charCode !=
'[' && charCode !=
'{' &&
1890 charCode !=
'/' && charCode !=
'?' && charCode !=
'>' &&
1891 charCode !=
'<' && charCode !=
',' && charCode !=
'~')
1922 if (startidx == infoPtr->
nItemCount) startidx = 0;
1943 int i = startidx, endidx;
1959 for (
i = startidx;
i < endidx;
i++)
1986 (startidx == 0 && endidx == infoPtr->
nItemCount) )
2014 TRACE(
"nNewScrollPos=%d\n", nNewScrollPos);
2025 point[0].
x = -nNewScrollPos;
2026 point[1].
x += nNewScrollPos;
2079 TRACE(
"horzInfo.nMax=%d\n", horzInfo.
nMax);
2120 if (vertInfo.
nPage != 0)
2183 if (
dx != 0 ||
dy != 0)
2186 listRect = infoPtr->
rcList;
2303 assert(nItem >= 0 && nItem < infoPtr->nItemCount);
2313 lpptPosition->
x = nItem / nCountPerColumn * infoPtr->
nItemWidth;
2314 lpptPosition->
y = nItem % nCountPerColumn * infoPtr->
nItemHeight;
2375 SIZE labelSize = { 0, 0 };
2386 if (lprcSelectBox) doSelectBox =
TRUE;
2387 if (lprcLabel) doLabel =
TRUE;
2388 if (doLabel || lprcIcon || lprcStateIcon) doIcon =
TRUE;
2418 LONG state_width = 0;
2425 Icon.left = Box.
left + state_width;
2439 Icon.left = Box.
left + state_width;
2451 (!lpColumnInfo || lpLVItem->
iSubItem == 0 ||
2456 if(lprcIcon) *lprcIcon =
Icon;
2462 lprcStateIcon->
left =
Icon.left - state_width;
2464 lprcStateIcon->
top =
Icon.top;
2469 else Icon.right = 0;
2537 if (!oversizedBox && labelSize.
cy > infoPtr->
ntmHeight)
2541 labelSize.
cy =
max(labelSize.
cy, 1);
2562 if (lprcLabel) *lprcLabel =
Label;
2586 if (lprcSelectBox) *lprcSelectBox = SelectBox;
2594 else *lprcBox = Box;
2623 lvItem.
iItem = nItem;
2651 if (id1->
id == id2->
id)
return 0;
2653 return (id1->
id < id2->
id) ? -1 : 1;
2672 TRACE(
"iID=%d\n", iID);
2705 TRACE(
"iItem=%d\n", iItem);
2708 if (iItem < 0 || iItem >= infoPtr->
nItemCount)
return -1;
2713 return lpItem->
id->
id;
2810 if ((*lpPos).x > nListWidth) (*lpPos).x = nMaxColumns * infoPtr->
nItemWidth;
2811 if ((*lpPos).y > nListHeight) (*lpPos).y = nMaxRows * infoPtr->
nItemHeight;
2840 if (lppt->
x == old.
x && lppt->
y == old.
y)
return TRUE;
2878 TRACE(
"nAlignCode=%d\n", nAlignCode);
2895 default:
return FALSE;
2902 next_pos(infoPtr, &
pos,
i);
2904 next_pos(infoPtr, &
pos);
2931 switch (infoPtr->
uView)
2975 TRACE(
"(lprcView=%p)\n", lprcView);
2977 if (!lprcView)
return FALSE;
3013 if (lpSubItem->
iSubItem == nSubItem)
3050 nItemWidth = rcHeader.
right;
3111 return max(nItemHeight, 1);
3181 if (((
RANGE*)range1)->upper <= ((
RANGE*)range2)->lower)
3183 else if (((
RANGE*)range2)->upper <= ((
RANGE*)range1)->lower)
3193#define ranges_check(ranges, desc) if (TRACE_ON(listview)) ranges_assert(ranges, desc, __FILE__, __LINE__)
3207 assert (prev->lower >= 0 && prev->lower < prev->upper);
3211 assert (prev->upper <= curr->lower);
3212 assert (curr->lower < curr->upper);
3216 TRACE(
"--- Done checking---\n");
3222 if (!ranges)
return NULL;
3224 if (ranges->
hdpa)
return ranges;
3241 if (!ranges)
return;
3253 if (!ranges || !ranges->
hdpa)
3268 if (!newrng)
goto fail;
3279 TRACE (
"clone failed\n");
3304 RANGE srchrng = { nItem, nItem + 1 };
3306 TRACE(
"(nItem=%d)\n", nItem);
3318 count += sel->upper - sel->lower;
3326 RANGE srchrng = { nItem, nItem + 1 }, *chkrng;
3335 if (chkrng->lower >= nItem)
3336 chkrng->lower =
max(
min(chkrng->lower + delta, nUpper - 1), 0);
3337 if (chkrng->upper > nItem)
3338 chkrng->upper =
max(
min(chkrng->upper + delta, nUpper), 0);
3352 srchrgn.lower =
range.lower - 1;
3353 srchrgn.upper =
range.upper + 1;
3360 TRACE(
"Adding new range\n");
3364 if(!newrgn)
goto fail;
3381 RANGE *chkrgn, *mrgrgn;
3382 INT fromindex, mergeindex;
3387 chkrgn->lower =
min(
range.lower, chkrgn->lower);
3388 chkrgn->upper =
max(
range.upper, chkrgn->upper);
3394 srchrgn.lower = chkrgn->lower - 1;
3395 srchrgn.upper = chkrgn->upper + 1;
3400 if (mergeindex == -1)
break;
3401 if (mergeindex ==
index)
3403 fromindex =
index + 1;
3407 TRACE(
"Merge with index %i\n", mergeindex);
3410 chkrgn->lower =
min(chkrgn->lower, mrgrgn->lower);
3411 chkrgn->upper =
max(chkrgn->upper, mrgrgn->upper);
3444 if ( (chkrgn->upper ==
range.upper) &&
3445 (chkrgn->lower ==
range.lower) )
3452 else if ( (chkrgn->upper <=
range.upper) &&
3453 (chkrgn->lower >=
range.lower) )
3459 else if ( (chkrgn->upper <=
range.upper) &&
3460 (chkrgn->lower <
range.lower) )
3462 chkrgn->upper =
range.lower;
3465 else if ( (chkrgn->upper >
range.upper) &&
3466 (chkrgn->lower >=
range.lower) )
3468 chkrgn->lower =
range.upper;
3476 if (!(newrgn =
Alloc(
sizeof(
RANGE))))
goto fail;
3477 newrgn->lower = chkrgn->lower;
3478 newrgn->upper =
range.lower;
3479 chkrgn->lower =
range.upper;
3561 INT nSelectedCount = 0;
3575 TRACE(
"nSelectedCount=%d\n", nSelectedCount);
3576 return nSelectedCount;
3607 if (nShiftItem < nItem)
return nShiftItem;
3609 if (nShiftItem > nItem)
return nShiftItem + direction;
3611 if (direction > 0)
return nShiftItem + direction;
3648 TRACE(
"Shifting %i, %i steps\n", nItem, direction);
3687 if (nFirst == -1) nFirst = nItem;
3692 for (
i = nFirst;
i <= nLast;
i++)
3696 nmlv.
iFrom = nFirst;
3750 RECT rcItem, rcSel, rcSelMark;
3807 TRACE(
"nItem=%d\n", nItem);
3838 TRACE(
"nItem=%d, wShift=%d, wCtrl=%d\n", nItem, wShift, wCtrl);
3839 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
3874 ZeroMemory(&lvHitTestInfo,
sizeof(lvHitTestInfo));
3875 lvHitTestInfo.
pt.
x =
pt.x;
3876 lvHitTestInfo.
pt.
y =
pt.y;
3935#define SCROLL_LEFT 0x1
3936#define SCROLL_RIGHT 0x2
3937#define SCROLL_UP 0x4
3938#define SCROLL_DOWN 0x8
3977 rect.right = coords_offs.
x;
3981 rect.left = coords_offs.
x;
3988 rect.bottom = coords_offs.
y;
3992 rect.top = coords_offs.
y;
4008 if ((scroll &
SCROLL_UP) && (coords_orig->
y <= 0))
4026 if (old_elems.
nItem > -1)
4047 if (new_elems.
nItem > -1)
4101 if (scrollInfo.
nPos != scrollInfo.
nMin)
4104 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4110 if (scrollInfo.
nPos != scrollInfo.
nMin)
4113 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4321 if (lpLVItem->
mask == 0)
return TRUE;
4347 TRACE(
"oldState=%x, newState=%x\n",
item.state, lpLVItem->
state);
4364 TRACE(
"change mask=0x%x\n", uChanged);
4399 if (!uChanged)
return TRUE;
4419 lpItem->
state &= ~stateMask;
4420 lpItem->
state |= (lpLVItem->
state & stateMask);
4469 if (isNew)
return TRUE;
4523 if (!lpSubItem)
return FALSE;
4650 nItem = scrollInfo.
nPos;
4658 TRACE(
"nItem=%d\n", nItem);
4689 RECT rcSelect, rcLabel, rcBox, rcStateIcon, rcIcon;
4690 const RECT *background;
4697 if (!focus)
item->state &= ~LVIS_FOCUSED;
4705 TRACE(
"%d: box=%s, select=%s, icon=%s. label=%s\n",
item->iSubItem,
4729 background = &rcLabel;
4731 background = &rcSelect;
4772 TRACE(
"stateimage=%d\n", stateimage);
4803 else if (
item->iSubItem)
4825 DrawShadowText(nmlvcd->
nmcd.
hdc,
item->pszText, -1, &rcLabel,
format,
RGB(255, 255, 255),
RGB(0, 0, 0), 2, 2);
4850 static WCHAR callbackW[] = {
'(',
'c',
'a',
'l',
'l',
'b',
'a',
'c',
'k',
')', 0 };
4862 lvItem.
iItem = nItem;
4874 if (!focus) lvItem.
state &= ~LVIS_FOCUSED;
4908 if (subitems->
nItem)
4912 lvItem.
iItem = nItem;
4937 temp_nmlvcd = nmlvcd;
4993 item.iItem =
i->nItem;
5051 RECT rcClip, rcItem;
5137 RECT rcClip, rcItem = {0};
5181 if (rcItem.
left == 0)
continue;
5182 rcItem.
left += Origin.
x;
5183 rcItem.
right += Origin.
x;
5198 rcItem.
right += Origin.
x;
5208 for(
y = Origin.
y > 1 ? Origin.
y - 1 : itemheight - 1 + Origin.
y % itemheight;
y<=infoPtr->rcList.bottom;
y+=itemheight)
5268 COLORREF oldTextColor = 0, oldBkColor = 0;
5282 TRACE(
"double buffering\n");
5286 ERR(
"Failed to create DC for backbuffer\n");
5292 ERR(
"Failed to create bitmap for backbuffer\n");
5420 DWORD dwViewRect = 0;
5422 if (nItemCount == -1)
5427 INT nItemCountPerColumn = 1;
5428 INT nColumnCount = 0;
5430 if (wHeight == 0xFFFF)
5436 if (wHeight < infoPtr->nItemHeight)
5443 nItemCountPerColumn = wHeight / infoPtr->
nItemHeight;
5444 if (nItemCountPerColumn == 0)
5445 nItemCountPerColumn = 1;
5447 if (nItemCount % nItemCountPerColumn != 0)
5448 nColumnCount = nItemCount / nItemCountPerColumn;
5450 nColumnCount = nItemCount / nItemCountPerColumn + 1;
5455 wHeight = nItemCountPerColumn * infoPtr->
nItemHeight + 2;
5456 wWidth = nColumnCount * infoPtr->
nItemWidth + 2;
5458 dwViewRect =
MAKELONG(wWidth, wHeight);
5468 wHeight = (rcBox.
bottom - rcBox.
top) * nItemCount;
5473 if (wHeight == 0xffff)
5475 if (wWidth == 0xffff)
5479 dwViewRect =
MAKELONG(wWidth, wHeight);
5490 if (wWidth == 0xffff)
5493 if (wWidth < nItemWidth)
5494 wWidth = nItemWidth;
5496 cols = wWidth / nItemWidth;
5497 if (cols > nItemCount)
5504 rows = nItemCount / cols;
5505 if (nItemCount % cols)
5511 wHeight = (nItemHeight * rows)+2;
5512 wWidth = (nItemWidth * cols)+2;
5514 dwViewRect =
MAKELONG(wWidth, wHeight);
5517 FIXME(
"uView == LV_VIEW_SMALLICON: not implemented\n");
5569 if (iItem < 0 || iItem >= infoPtr->
nItemCount || !lppt)
5576 lppt->
x = rcItem.
left;
5577 lppt->
y = rcItem.
top;
5606 TRACE(
"ret=%p\n", dragList);
5725 if (hdi.iOrder >= nOrder) {
5764 TRACE(
"nColumn=%d\n", nColumn);
5786 INT nItem, nSubItem,
i;
5788 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
5796 if (lpSubItem->
iSubItem == nColumn)
5799 lpDelItem = lpSubItem;
5801 else if (lpSubItem->
iSubItem > nColumn)
5847 INT nPerCol, nItemCol, nItemRow;
5876 nItemCol = nItem / nPerCol;
5877 nItemRow = nItem % nPerCol;
5923 TRACE(
"(nItem=%d)\n", nItem);
6049 infoPtr->
notify_mask &= ~NOTIFY_MASK_END_LABEL_EDIT;
6066 if (!pszText)
return TRUE;
6118 TRACE(
"(hwnd=%p, uMsg=%x, wParam=%lx, lParam=%lx, isW=%d)\n",
6211 hedit =
CreateWindowW(
WC_EDITW,
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6213 hedit =
CreateWindowA(
WC_EDITA, (
LPCSTR)
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6215 if (!hedit)
return 0;
6251 TRACE(
"(nItem=%d, isW=%d)\n", nItem,
isW);
6262 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
6312 sz.
cx +=
tm.tmMaxCharWidth * 2;
6346 INT nScrollPosHeight = 0;
6347 INT nScrollPosWidth = 0;
6348 INT nHorzAdjust = 0;
6349 INT nVertAdjust = 0;
6352 RECT rcItem, rcTemp;
6365 nScrollPosWidth = 1;
6385 nScrollPosHeight = 1;
6399 if (!nScrollPosWidth && !nScrollPosHeight)
return TRUE;
6401 if (nScrollPosWidth)
6403 INT diff = nHorzDiff / nScrollPosWidth;
6404 if (nHorzDiff % nScrollPosWidth) diff += nHorzAdjust;
6408 if (nScrollPosHeight)
6410 INT diff = nVertDiff / nScrollPosHeight;
6411 if (nVertDiff % nScrollPosHeight) diff += nVertAdjust;
6436 INT nItem = nStart + 1, nLast = infoPtr->
nItemCount, nNearestItem = -1;
6437 ULONG xdist, ydist, dist, mindist = 0x7fffffff;
6448 nmlv.
lvfi = *lpFindInfo;
6452 if (!lpFindInfo || nItem < 0)
return -1;
6488 default:
ERR(
"Unknown vkDirection=%d\n", lpFindInfo->
vkDirection);
6499 lvItem.
mask &= ~LVIF_TEXT;
6502 nItem = bNearest ? -1 : nStart + 1;
6505 for (; nItem < nLast; nItem++)
6507 lvItem.
iItem = nItem;
6525 if (!
p ||
p != lvItem.
pszText)
continue;
6533 if (!bNearest)
return nItem;
6542 dist = xdist * xdist + ydist * ydist;
6548 nNearestItem = nItem;
6560 return nNearestItem;
6583 memcpy(&fiw, lpFindInfo,
sizeof(fiw));
6636 lpColumn->
fmt = lpColumnInfo->
fmt;
6650 if (lpColumn->
mask & LVCF_MINWIDTH)
6651 lpColumn->cxMin = lpColumnInfo->
cxMin;
6676 INT nColumnWidth = 0;
6679 TRACE(
"nColumn=%d\n", nColumn);
6682 switch(infoPtr->
uView)
6695 WARN(
"(%p): HDM_GETITEMW failed for item %d\n", infoPtr->
hwndSelf, nColumn);
6698 nColumnWidth = hdItem.cxy;
6702 TRACE(
"nColumnWidth=%d\n", nColumnWidth);
6703 return nColumnWidth;
6720 switch (infoPtr->
uView)
6754 FIXME(
"LVSIL_GROUPHEADER not supported\n");
6757 WARN(
"got unknown imagelist index - %d\n", nImageList);
6805 if (lpLVItem->
mask == 0)
return TRUE;
6809 lpLVItem->
state = 0;
6817 lpLVItem->
state = 0;
6862 *lpLVItem = dispInfo.
item;
6892 lpLVItem->
state &= ~LVIS_FOCUSED;
6900 lpLVItem->
state &= ~LVIS_SELECTED;
6917 pItemHdr = &lpSubItem->
hdr;
6920 pItemHdr = &callbackHdr;
6921 is_subitem_invalid =
TRUE;
6925 pItemHdr = &lpItem->
hdr;
7022 lpLVItem->
state &= ~dispInfo.item.stateMask;
7027 lpLVItem->
state &= ~LVIS_FOCUSED;
7033 lpLVItem->
state &= ~LVIS_SELECTED;
7114 TRACE(
"(nItem=%d, lpptPosition=%p)\n", nItem, lpptPosition);
7116 if (!lpptPosition || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
7126 lpptPosition->
x += Origin.
x;
7127 lpptPosition->
y += Origin.
y;
7215 oversizedBox =
TRUE;
7223 lvItem.
iItem = nItem;
7405 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7407 lvItem.
iItem = nItem;
7413 return lvItem.
state & uMask;
7432 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7435 lpLVItem->
iItem = nItem;
7458 INT nCountPerColumn;
7465 if (nItem < -1 || nItem >= infoPtr->
nItemCount)
return -1;
7507 while (nItem - nCountPerRow >= 0)
7509 nItem -= nCountPerRow;
7530 while (nItem < infoPtr->nItemCount)
7544 while (nItem + nCountPerRow < infoPtr->nItemCount )
7546 nItem += nCountPerRow;
7568 while (nItem - nCountPerColumn >= 0)
7570 nItem -= nCountPerColumn;
7582 while (nItem % nCountPerRow > 0)
7606 while (nItem + nCountPerColumn < infoPtr->nItemCount)
7608 nItem += nCountPerColumn;
7620 while (nItem % nCountPerRow < nCountPerRow - 1 )
7669 INT nHorzPos = 0, nVertPos = 0;
7676 nHorzPos = scrollInfo.
nPos;
7678 nVertPos = scrollInfo.
nPos;
7680 TRACE(
"nHorzPos=%d, nVertPos=%d\n", nHorzPos, nVertPos);
7689 lpptOrigin->
x -= nHorzPos;
7690 lpptOrigin->
y -= nVertPos;
7726 return stringSize.
cx;
7751 RECT rcBox, rcBounds, rcState, rcIcon, rcLabel, rcSearch;
7800 opt.
x = lpht->
pt.
x - Origin.
x;
7807 if ((opt.
x >= pRect->
left) && (opt.
x < pRect->
right))
7825 if (lpht->
flags)
return -1;
7831 rcSearch.
top = lpht->
pt.
y;
7840 TRACE(
"lpht->iItem=%d\n", iItem);
7841 if (iItem == -1)
return -1;
7847 lvItem.
iItem = iItem;
7852 if (!infoPtr->
bFocus) lvItem.
state &= ~LVIS_FOCUSED;
7867 opt.
x = lpht->
pt.
x - Origin.
x;
7871 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7872 UnionRect(&rcBounds, &rcBounds, &rcState);
7875 if (!
PtInRect(&rcBounds, opt))
return -1;
7892 lpht->
flags &= ~LVHT_NOWHERE;
7895 if (
select && !is_fullrow)
7902 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7903 UnionRect(&rcBounds, &rcBounds, &rcState);
7905 if (!
PtInRect(&rcBounds, opt)) iItem = -1;
7907 return lpht->
iItem = iItem;
7939 if (!lpLVItem || lpLVItem->
iSubItem)
return -1;
7946 if ( !(hdpaSubItems =
DPA_Create(8)) )
goto fail;
7952 lpID->
item = hdpaSubItems;
7971 while (i < infoPtr->nItemCount)
7979 if (cmpv >= 0)
break;
7992 if (nItem == -1)
goto fail;
8020 item.state &= ~LVIS_STATEIMAGEMASK;
8108 TRACE(
"nItem=%d\n", nItem);
8172 switch(infoPtr->
uView) {
8207 infoPtr->bDefaultBkColor =
FALSE;
8252 if (lpColumn->
fmt & LVCFMT_FIXED_WIDTH)
8253 lphdi->
fmt |= HDF_FIXEDWIDTH;
8265 for(item_index = 0; item_index < (nColumn - 1); item_index++)
8278 lphdi->
cxy = lpColumn->
cx;
8326 if (!lpColumn || nColumn < 0)
return -1;
8363 if (nNewColumn == -1)
return -1;
8364 if (nNewColumn != nColumn)
ERR(
"nColumn=%d, nNewColumn=%d\n", nColumn, nNewColumn);
8371 if (lpColumn->
mask & LVCF_MINWIDTH) lpColumnInfo->
cxMin = lpColumn->cxMin;
8384 item.iSubItem = nNewColumn;
8389 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
8395 if (lpSubItem->
iSubItem >= nNewColumn)
8457 if (!bResult)
return FALSE;
8462 INT oldFmt = lpColumnInfo->
fmt;
8464 lpColumnInfo->
fmt = lpColumn->
fmt;
8471 if (lpColumn->
mask & LVCF_MINWIDTH)
8516 TRACE(
"(nColumn=%d, cx=%d)\n", nColumn,
cx);
8550 if (max_cx < nLabelWidth) max_cx = nLabelWidth;
8593 INT bitmap_margin = 0;
8604 INT icon_cx, icon_cy;
8607 cx += icon_cx + 2*bitmap_margin;
8614 cx +=
bmp.bmWidth + 2*bitmap_margin;
8640 HBITMAP hbm_im, hbm_mask, hbm_orig;
8694 TRACE(
"mask=0x%08x, ex_style=0x%08x\n",
mask, ex_style);
8737 style &= ~HDS_DRAGDROP;
8753 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_TRANSPARENTBKGND)
8755 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
8759 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_HEADERINALLVIEWS)
8761 if (infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS)
8777 return old_ex_style;
8840 return oldHoverTime;
8857 INT iconWidth = 0, iconHeight = 0;
8863 if (
cx == -1 &&
cy == -1)
8882 TRACE(
"old=(%d,%d), new=(%d,%d), iconSize=(%d,%d), ntmH=%d\n",
8927 TRACE(
"(nType=%d, himl=%p)\n", nType,
himl);
8955 ERR(
"Unknown icon type=%d\n", nType);
9058 WARN(
"for non-ownerdata performance option not implemented.\n");
9083 if (!
pt || nItem < 0 || nItem >= infoPtr->
nItemCount ||
9098 if ((Pt.
x == -1) && (Pt.
y == -1))
9140 lvItem.
iItem = nItem;
9217 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
9220 lvItem.
iItem = nItem;
9246 TRACE(
"(nIndex=%d)\n", nIndex);
9248 if (nIndex >= -1 && nIndex < infoPtr->nItemCount)
9309 return hwndOldToolTip;
9344 if (infoPtr->
uView == nView)
return 1;
9349 FIXME(
"View LV_VIEW_TILE unimplemented\n");
9353 infoPtr->
uView = nView;
9393 TRACE(
"nView=%d\n", nView);
9471 TRACE(
"(pfnCompare=%p, lParamSort=%lx)\n", pfnCompare, lParamSort);
9475 if (!pfnCompare)
return FALSE;
9550 TRACE(
"(nItem=%d)\n", nItem);
9634 TRACE(
"(lpcs=%p)\n", lpcs);
9638 if (!infoPtr)
return FALSE;
9655 infoPtr->bDefaultBkColor =
TRUE;
9723 TRACE(
"(lpcs=%p, style=0x%08x)\n", lpcs, lpcs->
style);
9827 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
9884 INT nOldScrollPos, nNewScrollPos;
9888 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
9900 nOldScrollPos = scrollInfo.
nPos;
9901 switch (nScrollCode)
9915 nScrollDiff = -scrollInfo.
nPage;
9919 nScrollDiff = scrollInfo.
nPage;
9932 if (nScrollDiff == 0)
return 0;
9935 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
9936 if (nScrollDiff > 0) {
9937 if (nNewScrollPos < nOldScrollPos ||
9938 nNewScrollPos > scrollInfo.
nMax)
9939 nNewScrollPos = scrollInfo.
nMax;
9941 if (nNewScrollPos > nOldScrollPos ||
9942 nNewScrollPos < scrollInfo.
nMin)
9943 nNewScrollPos = scrollInfo.
nMin;
9948 scrollInfo.
nPos = nNewScrollPos;
9952 if (nNewScrollPos == nOldScrollPos)
return 0;
9955 nScrollDiff = nOldScrollPos - nNewScrollPos;
9988 INT nOldScrollPos, nNewScrollPos;
9992 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
10004 nOldScrollPos = scrollInfo.
nPos;
10006 switch (nScrollCode)
10020 nScrollDiff = -scrollInfo.
nPage;
10024 nScrollDiff = scrollInfo.
nPage;
10037 if (nScrollDiff == 0)
return 0;
10040 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
10041 if (nScrollDiff > 0) {
10042 if (nNewScrollPos < nOldScrollPos ||
10043 nNewScrollPos > scrollInfo.
nMax)
10044 nNewScrollPos = scrollInfo.
nMax;
10046 if (nNewScrollPos > nOldScrollPos ||
10047 nNewScrollPos < scrollInfo.
nMin)
10048 nNewScrollPos = scrollInfo.
nMin;
10053 scrollInfo.
nPos = nNewScrollPos;
10057 if (nNewScrollPos == nOldScrollPos)
return 0;
10062 nScrollDiff = nOldScrollPos - nNewScrollPos;
10073 INT pulScrollLines = 3;
10075 TRACE(
"(wheelDelta=%d)\n", wheelDelta);
10077 switch(infoPtr->
uView)
10093 if ((wheelDelta < 0 && infoPtr->cWheelRemainder < 0) ||
10133 TRACE(
"(nVirtualKey=%d, lKeyData=%d)\n", nVirtualKey, lKeyData);
10136 nmKeyDown.
wVKey = nVirtualKey;
10137 nmKeyDown.
flags = 0;
10142 switch (nVirtualKey)
10196 if(nItem < 0) nItem = 0;
10207 nItem = topidx + cnt - 1;
10240 if (!infoPtr->
bFocus)
return 0;
10287 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10317 r.top =
r.bottom =
pt.y;
10318 r.left =
r.right =
pt.x;
10377 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10389 lvHitTestInfo.
pt.
x =
x;
10390 lvHitTestInfo.
pt.
y =
y;
10394 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
10498 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10502 lvHitTestInfo.
pt.
x =
x;
10503 lvHitTestInfo.
pt.
y =
y;
10593 infoPtr->
hFont = 0;
10620 TRACE(
"(lpnmhdr=%p)\n", lpnmhdr);
10630 switch (lpnmhdr->
code)
10700 hdi.iOrder + 1, 0);
10803 r.right - cxEdge,
r.bottom - cyEdge);
10804 if (region != (HRGN)1)
10812 r.right - cxEdge,
r.bottom -cyEdge);
10844 TRACE(
"(hwndFrom=%p, nCommand=%d)\n", hwndFrom, nCommand);
10885 if (!
hdc)
return 1;
10960 TRACE(
"(key=%hu,X=%u,Y=%u)\n", wKey,
x,
y);
10966 lvHitTestInfo.
pt.
x =
x;
10967 lvHitTestInfo.
pt.
y =
y;
10991 TRACE(
"(key=%hu, x=%d, y=%d)\n", wKey,
x,
y);
11004 if ((
item >= 0) && (item < infoPtr->nItemCount))
11016 if (
ht.iItem != -1)
11020 memset(&nmlv, 0,
sizeof(nmlv));
11093 TRACE(
"(hwndLoseFocus=%p)\n", hwndLoseFocus);
11096 if (infoPtr->
bFocus)
return 0;
11130 TRACE(
"(hfont=%p,redraw=%hu)\n",
hFont, fRedraw);
11133 if (infoPtr->
hFont == oldFont)
return 0;
11271 TRACE(
" wp.flags=0x%08x, wp=%d,%d (%dx%d)\n", wp.
flags, wp.
x, wp.
y, wp.
cx, wp.
cy);
11282 TRACE(
" after SWP wp=%d,%d (%dx%d)\n", wp.
x, wp.
y, wp.
cx, wp.
cy);
11308 UINT uNewView, uOldView;
11311 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11329 if (uNewView != uOldView)
11371 TRACE(
"Hide header control, was 0x%08x\n",
style);
11377 TRACE(
"Show header control, was 0x%08x\n",
style);
11414 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11491 TRACE(
"new version %d\n", iVersion);
11493 return iOldVersion;
11550 return infoPtr->
clrBk;
11604 FIXME(
"LVM_GETISEARCHSTRING: unimplemented\n");
11635 FIXME(
"LVM_GETNUMBEROFWORKAREAS: unimplemented\n");
11685 return infoPtr->
uView;
11691 FIXME(
"LVM_GETWORKAREAS: unimplemented\n");
11926 case WM_NOTIFYFORMAT:
11956 case WM_STYLECHANGED:
11959 case WM_STYLECHANGING:
11965 if (infoPtr->bDefaultBkColor)
11968 infoPtr->bDefaultBkColor =
TRUE;
11975 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 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)
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
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
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