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;
2299 assert(nItem >= 0 && nItem < infoPtr->nItemCount);
2309 lpptPosition->
x = nItem / nCountPerColumn * infoPtr->
nItemWidth;
2310 lpptPosition->
y = nItem % nCountPerColumn * infoPtr->
nItemHeight;
2371 SIZE labelSize = { 0, 0 };
2382 if (lprcSelectBox) doSelectBox =
TRUE;
2383 if (lprcLabel) doLabel =
TRUE;
2384 if (doLabel || lprcIcon || lprcStateIcon) doIcon =
TRUE;
2414 LONG state_width = 0;
2421 Icon.left = Box.
left + state_width;
2435 Icon.left = Box.
left + state_width;
2447 (!lpColumnInfo || lpLVItem->
iSubItem == 0 ||
2452 if(lprcIcon) *lprcIcon =
Icon;
2458 lprcStateIcon->
left =
Icon.left - state_width;
2460 lprcStateIcon->
top =
Icon.top;
2465 else Icon.right = 0;
2533 if (!oversizedBox && labelSize.
cy > infoPtr->
ntmHeight)
2537 labelSize.
cy =
max(labelSize.
cy, 1);
2558 if (lprcLabel) *lprcLabel =
Label;
2582 if (lprcSelectBox) *lprcSelectBox = SelectBox;
2590 else *lprcBox = Box;
2619 lvItem.
iItem = nItem;
2647 if (id1->
id == id2->
id)
return 0;
2649 return (id1->
id < id2->
id) ? -1 : 1;
2668 TRACE(
"iID=%d\n", iID);
2701 TRACE(
"iItem=%d\n", iItem);
2704 if (iItem < 0 || iItem >= infoPtr->
nItemCount)
return -1;
2709 return lpItem->
id->
id;
2806 if ((*lpPos).x > nListWidth) (*lpPos).x = nMaxColumns * infoPtr->
nItemWidth;
2807 if ((*lpPos).y > nListHeight) (*lpPos).y = nMaxRows * infoPtr->
nItemHeight;
2836 if (lppt->
x == old.
x && lppt->
y == old.
y)
return TRUE;
2874 TRACE(
"nAlignCode=%d\n", nAlignCode);
2891 default:
return FALSE;
2898 next_pos(infoPtr, &
pos,
i);
2900 next_pos(infoPtr, &
pos);
2927 switch (infoPtr->
uView)
2971 TRACE(
"(lprcView=%p)\n", lprcView);
2973 if (!lprcView)
return FALSE;
3009 if (lpSubItem->
iSubItem == nSubItem)
3046 nItemWidth = rcHeader.
right;
3107 return max(nItemHeight, 1);
3177 if (((
RANGE*)range1)->upper <= ((
RANGE*)range2)->lower)
3179 else if (((
RANGE*)range2)->upper <= ((
RANGE*)range1)->lower)
3189#define ranges_check(ranges, desc) if (TRACE_ON(listview)) ranges_assert(ranges, desc, __FILE__, __LINE__)
3203 assert (prev->lower >= 0 && prev->lower < prev->upper);
3207 assert (prev->upper <= curr->lower);
3208 assert (curr->lower < curr->upper);
3212 TRACE(
"--- Done checking---\n");
3218 if (!ranges)
return NULL;
3220 if (ranges->
hdpa)
return ranges;
3237 if (!ranges)
return;
3249 if (!ranges || !ranges->
hdpa)
3264 if (!newrng)
goto fail;
3275 TRACE (
"clone failed\n");
3300 RANGE srchrng = { nItem, nItem + 1 };
3302 TRACE(
"(nItem=%d)\n", nItem);
3314 count += sel->upper - sel->lower;
3322 RANGE srchrng = { nItem, nItem + 1 }, *chkrng;
3331 if (chkrng->lower >= nItem)
3332 chkrng->lower =
max(
min(chkrng->lower + delta, nUpper - 1), 0);
3333 if (chkrng->upper > nItem)
3334 chkrng->upper =
max(
min(chkrng->upper + delta, nUpper), 0);
3348 srchrgn.lower =
range.lower - 1;
3349 srchrgn.upper =
range.upper + 1;
3356 TRACE(
"Adding new range\n");
3360 if(!newrgn)
goto fail;
3377 RANGE *chkrgn, *mrgrgn;
3378 INT fromindex, mergeindex;
3383 chkrgn->lower =
min(
range.lower, chkrgn->lower);
3384 chkrgn->upper =
max(
range.upper, chkrgn->upper);
3390 srchrgn.lower = chkrgn->lower - 1;
3391 srchrgn.upper = chkrgn->upper + 1;
3396 if (mergeindex == -1)
break;
3397 if (mergeindex ==
index)
3399 fromindex =
index + 1;
3403 TRACE(
"Merge with index %i\n", mergeindex);
3406 chkrgn->lower =
min(chkrgn->lower, mrgrgn->lower);
3407 chkrgn->upper =
max(chkrgn->upper, mrgrgn->upper);
3440 if ( (chkrgn->upper ==
range.upper) &&
3441 (chkrgn->lower ==
range.lower) )
3448 else if ( (chkrgn->upper <=
range.upper) &&
3449 (chkrgn->lower >=
range.lower) )
3455 else if ( (chkrgn->upper <=
range.upper) &&
3456 (chkrgn->lower <
range.lower) )
3458 chkrgn->upper =
range.lower;
3461 else if ( (chkrgn->upper >
range.upper) &&
3462 (chkrgn->lower >=
range.lower) )
3464 chkrgn->lower =
range.upper;
3472 if (!(newrgn =
Alloc(
sizeof(
RANGE))))
goto fail;
3473 newrgn->lower = chkrgn->lower;
3474 newrgn->upper =
range.lower;
3475 chkrgn->lower =
range.upper;
3557 INT nSelectedCount = 0;
3571 TRACE(
"nSelectedCount=%d\n", nSelectedCount);
3572 return nSelectedCount;
3603 if (nShiftItem < nItem)
return nShiftItem;
3605 if (nShiftItem > nItem)
return nShiftItem + direction;
3607 if (direction > 0)
return nShiftItem + direction;
3644 TRACE(
"Shifting %i, %i steps\n", nItem, direction);
3683 if (nFirst == -1) nFirst = nItem;
3688 for (
i = nFirst;
i <= nLast;
i++)
3692 nmlv.
iFrom = nFirst;
3749 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);
4807 else if (
item->iSubItem)
4829 DrawShadowText(nmlvcd->
nmcd.
hdc,
item->pszText, -1, &rcLabel,
format,
RGB(255, 255, 255),
RGB(0, 0, 0), 2, 2);
4854 static WCHAR callbackW[] = {
'(',
'c',
'a',
'l',
'l',
'b',
'a',
'c',
'k',
')', 0 };
4866 lvItem.
iItem = nItem;
4878 if (!focus) lvItem.
state &= ~LVIS_FOCUSED;
4912 if (subitems->
nItem)
4916 lvItem.
iItem = nItem;
4941 temp_nmlvcd = nmlvcd;
4997 item.iItem =
i->nItem;
5055 RECT rcClip, rcItem;
5141 RECT rcClip, rcItem = {0};
5185 if (rcItem.
left == 0)
continue;
5186 rcItem.
left += Origin.
x;
5187 rcItem.
right += Origin.
x;
5202 rcItem.
right += Origin.
x;
5212 for(
y = Origin.
y > 1 ? Origin.
y - 1 : itemheight - 1 + Origin.
y % itemheight;
y<=infoPtr->rcList.bottom;
y+=itemheight)
5272 COLORREF oldTextColor = 0, oldBkColor = 0;
5286 TRACE(
"double buffering\n");
5290 ERR(
"Failed to create DC for backbuffer\n");
5296 ERR(
"Failed to create bitmap for backbuffer\n");
5424 DWORD dwViewRect = 0;
5426 if (nItemCount == -1)
5431 INT nItemCountPerColumn = 1;
5432 INT nColumnCount = 0;
5434 if (wHeight == 0xFFFF)
5440 if (wHeight < infoPtr->nItemHeight)
5447 nItemCountPerColumn = wHeight / infoPtr->
nItemHeight;
5448 if (nItemCountPerColumn == 0)
5449 nItemCountPerColumn = 1;
5451 if (nItemCount % nItemCountPerColumn != 0)
5452 nColumnCount = nItemCount / nItemCountPerColumn;
5454 nColumnCount = nItemCount / nItemCountPerColumn + 1;
5459 wHeight = nItemCountPerColumn * infoPtr->
nItemHeight + 2;
5460 wWidth = nColumnCount * infoPtr->
nItemWidth + 2;
5462 dwViewRect =
MAKELONG(wWidth, wHeight);
5472 wHeight = (rcBox.
bottom - rcBox.
top) * nItemCount;
5477 if (wHeight == 0xffff)
5479 if (wWidth == 0xffff)
5483 dwViewRect =
MAKELONG(wWidth, wHeight);
5494 if (wWidth == 0xffff)
5497 if (wWidth < nItemWidth)
5498 wWidth = nItemWidth;
5500 cols = wWidth / nItemWidth;
5501 if (cols > nItemCount)
5508 rows = nItemCount / cols;
5509 if (nItemCount % cols)
5515 wHeight = (nItemHeight * rows)+2;
5516 wWidth = (nItemWidth * cols)+2;
5518 dwViewRect =
MAKELONG(wWidth, wHeight);
5521 FIXME(
"uView == LV_VIEW_SMALLICON: not implemented\n");
5573 if (iItem < 0 || iItem >= infoPtr->
nItemCount || !lppt)
5580 lppt->
x = rcItem.
left;
5581 lppt->
y = rcItem.
top;
5610 TRACE(
"ret=%p\n", dragList);
5729 if (hdi.iOrder >= nOrder) {
5768 TRACE(
"nColumn=%d\n", nColumn);
5790 INT nItem, nSubItem,
i;
5792 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
5800 if (lpSubItem->
iSubItem == nColumn)
5803 lpDelItem = lpSubItem;
5805 else if (lpSubItem->
iSubItem > nColumn)
5851 INT nPerCol, nItemCol, nItemRow;
5880 nItemCol = nItem / nPerCol;
5881 nItemRow = nItem % nPerCol;
5927 TRACE(
"(nItem=%d)\n", nItem);
6053 infoPtr->
notify_mask &= ~NOTIFY_MASK_END_LABEL_EDIT;
6070 if (!pszText)
return TRUE;
6122 TRACE(
"(hwnd=%p, uMsg=%x, wParam=%lx, lParam=%lx, isW=%d)\n",
6215 hedit =
CreateWindowW(
WC_EDITW,
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6217 hedit =
CreateWindowA(
WC_EDITA, (
LPCSTR)
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6219 if (!hedit)
return 0;
6255 TRACE(
"(nItem=%d, isW=%d)\n", nItem,
isW);
6266 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
6316 sz.
cx +=
tm.tmMaxCharWidth * 2;
6350 INT nScrollPosHeight = 0;
6351 INT nScrollPosWidth = 0;
6352 INT nHorzAdjust = 0;
6353 INT nVertAdjust = 0;
6356 RECT rcItem, rcTemp;
6369 nScrollPosWidth = 1;
6389 nScrollPosHeight = 1;
6403 if (!nScrollPosWidth && !nScrollPosHeight)
return TRUE;
6405 if (nScrollPosWidth)
6407 INT diff = nHorzDiff / nScrollPosWidth;
6408 if (nHorzDiff % nScrollPosWidth) diff += nHorzAdjust;
6412 if (nScrollPosHeight)
6414 INT diff = nVertDiff / nScrollPosHeight;
6415 if (nVertDiff % nScrollPosHeight) diff += nVertAdjust;
6440 INT nItem = nStart + 1, nLast = infoPtr->
nItemCount, nNearestItem = -1;
6441 ULONG xdist, ydist, dist, mindist = 0x7fffffff;
6452 nmlv.
lvfi = *lpFindInfo;
6456 if (!lpFindInfo || nItem < 0)
return -1;
6492 default:
ERR(
"Unknown vkDirection=%d\n", lpFindInfo->
vkDirection);
6503 lvItem.
mask &= ~LVIF_TEXT;
6506 nItem = bNearest ? -1 : nStart + 1;
6509 for (; nItem < nLast; nItem++)
6511 lvItem.
iItem = nItem;
6529 if (!
p ||
p != lvItem.
pszText)
continue;
6537 if (!bNearest)
return nItem;
6546 dist = xdist * xdist + ydist * ydist;
6552 nNearestItem = nItem;
6564 return nNearestItem;
6587 memcpy(&fiw, lpFindInfo,
sizeof(fiw));
6640 lpColumn->
fmt = lpColumnInfo->
fmt;
6654 if (lpColumn->
mask & LVCF_MINWIDTH)
6655 lpColumn->cxMin = lpColumnInfo->
cxMin;
6680 INT nColumnWidth = 0;
6683 TRACE(
"nColumn=%d\n", nColumn);
6686 switch(infoPtr->
uView)
6699 WARN(
"(%p): HDM_GETITEMW failed for item %d\n", infoPtr->
hwndSelf, nColumn);
6702 nColumnWidth = hdItem.cxy;
6706 TRACE(
"nColumnWidth=%d\n", nColumnWidth);
6707 return nColumnWidth;
6724 switch (infoPtr->
uView)
6758 FIXME(
"LVSIL_GROUPHEADER not supported\n");
6761 WARN(
"got unknown imagelist index - %d\n", nImageList);
6809 if (lpLVItem->
mask == 0)
return TRUE;
6813 lpLVItem->
state = 0;
6821 lpLVItem->
state = 0;
6866 *lpLVItem = dispInfo.
item;
6896 lpLVItem->
state &= ~LVIS_FOCUSED;
6904 lpLVItem->
state &= ~LVIS_SELECTED;
6921 pItemHdr = &lpSubItem->
hdr;
6924 pItemHdr = &callbackHdr;
6925 is_subitem_invalid =
TRUE;
6929 pItemHdr = &lpItem->
hdr;
7026 lpLVItem->
state &= ~dispInfo.item.stateMask;
7031 lpLVItem->
state &= ~LVIS_FOCUSED;
7037 lpLVItem->
state &= ~LVIS_SELECTED;
7118 TRACE(
"(nItem=%d, lpptPosition=%p)\n", nItem, lpptPosition);
7120 if (!lpptPosition || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
7130 lpptPosition->
x += Origin.
x;
7131 lpptPosition->
y += Origin.
y;
7219 oversizedBox =
TRUE;
7227 lvItem.
iItem = nItem;
7409 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7411 lvItem.
iItem = nItem;
7417 return lvItem.
state & uMask;
7436 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7439 lpLVItem->
iItem = nItem;
7462 INT nCountPerColumn;
7469 if (nItem < -1 || nItem >= infoPtr->
nItemCount)
return -1;
7511 while (nItem - nCountPerRow >= 0)
7513 nItem -= nCountPerRow;
7534 while (nItem < infoPtr->nItemCount)
7548 while (nItem + nCountPerRow < infoPtr->nItemCount )
7550 nItem += nCountPerRow;
7572 while (nItem - nCountPerColumn >= 0)
7574 nItem -= nCountPerColumn;
7586 while (nItem % nCountPerRow > 0)
7610 while (nItem + nCountPerColumn < infoPtr->nItemCount)
7612 nItem += nCountPerColumn;
7624 while (nItem % nCountPerRow < nCountPerRow - 1 )
7673 INT nHorzPos = 0, nVertPos = 0;
7680 nHorzPos = scrollInfo.
nPos;
7682 nVertPos = scrollInfo.
nPos;
7684 TRACE(
"nHorzPos=%d, nVertPos=%d\n", nHorzPos, nVertPos);
7693 lpptOrigin->
x -= nHorzPos;
7694 lpptOrigin->
y -= nVertPos;
7730 return stringSize.
cx;
7755 RECT rcBox, rcBounds, rcState, rcIcon, rcLabel, rcSearch;
7804 opt.
x = lpht->
pt.
x - Origin.
x;
7811 if ((opt.
x >= pRect->
left) && (opt.
x < pRect->
right))
7829 if (lpht->
flags)
return -1;
7835 rcSearch.
top = lpht->
pt.
y;
7844 TRACE(
"lpht->iItem=%d\n", iItem);
7845 if (iItem == -1)
return -1;
7851 lvItem.
iItem = iItem;
7856 if (!infoPtr->
bFocus) lvItem.
state &= ~LVIS_FOCUSED;
7871 opt.
x = lpht->
pt.
x - Origin.
x;
7875 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7876 UnionRect(&rcBounds, &rcBounds, &rcState);
7879 if (!
PtInRect(&rcBounds, opt))
return -1;
7896 lpht->
flags &= ~LVHT_NOWHERE;
7899 if (
select && !is_fullrow)
7906 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7907 UnionRect(&rcBounds, &rcBounds, &rcState);
7909 if (!
PtInRect(&rcBounds, opt)) iItem = -1;
7911 return lpht->
iItem = iItem;
7943 if (!lpLVItem || lpLVItem->
iSubItem)
return -1;
7950 if ( !(hdpaSubItems =
DPA_Create(8)) )
goto fail;
7956 lpID->
item = hdpaSubItems;
7975 while (i < infoPtr->nItemCount)
7983 if (cmpv >= 0)
break;
7996 if (nItem == -1)
goto fail;
8024 item.state &= ~LVIS_STATEIMAGEMASK;
8112 TRACE(
"nItem=%d\n", nItem);
8176 switch(infoPtr->
uView) {
8211 infoPtr->bDefaultBkColor =
FALSE;
8256 if (lpColumn->
fmt & LVCFMT_FIXED_WIDTH)
8257 lphdi->
fmt |= HDF_FIXEDWIDTH;
8269 for(item_index = 0; item_index < (nColumn - 1); item_index++)
8282 lphdi->
cxy = lpColumn->
cx;
8330 if (!lpColumn || nColumn < 0)
return -1;
8367 if (nNewColumn == -1)
return -1;
8368 if (nNewColumn != nColumn)
ERR(
"nColumn=%d, nNewColumn=%d\n", nColumn, nNewColumn);
8375 if (lpColumn->
mask & LVCF_MINWIDTH) lpColumnInfo->
cxMin = lpColumn->cxMin;
8388 item.iSubItem = nNewColumn;
8393 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
8399 if (lpSubItem->
iSubItem >= nNewColumn)
8461 if (!bResult)
return FALSE;
8466 INT oldFmt = lpColumnInfo->
fmt;
8468 lpColumnInfo->
fmt = lpColumn->
fmt;
8475 if (lpColumn->
mask & LVCF_MINWIDTH)
8520 TRACE(
"(nColumn=%d, cx=%d)\n", nColumn,
cx);
8554 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:
12011 if (
wParam == SPI_SETICONMETRICS ||
12013 wParam == SPI_SETNONCLIENTMETRICS ||
12027 if (bDefaultOrNullFont)
_STLP_MOVE_TO_STD_NAMESPACE bool is_sorted(_ForwardIter __first, _ForwardIter __last)
void destroy(_Tp *__pointer)
ACPI_SIZE strlen(const char *String)
static const char * wine_dbgstr_point(const POINT *ppt)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
BOOL Str_SetPtrWtoA(LPSTR *lppDest, LPCWSTR lpSrc) DECLSPEC_HIDDEN
HWND COMCTL32_CreateToolTip(HWND) DECLSPEC_HIDDEN
VOID COMCTL32_RefreshSysColors(void) DECLSPEC_HIDDEN
COMCTL32_SysColor comctl32_color
BOOL WINAPI _TrackMouseEvent(TRACKMOUSEEVENT *ptme)
int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT *prc, DWORD dwFlags, COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset)
BOOL WINAPI DPA_Sort(HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam)
INT WINAPI DPA_Search(HDPA hdpa, LPVOID pFind, INT nStart, PFNDPACOMPARE pfnCompare, LPARAM lParam, UINT uOptions)
BOOL WINAPI DPA_SetPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa)
INT WINAPI DPA_GetPtrIndex(HDPA hdpa, LPCVOID p)
LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, INT i)
BOOL WINAPI DPA_Destroy(HDPA hdpa)
HDPA WINAPI DPA_Create(INT nGrow)
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI ImageList_Draw(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, UINT fStyle)
COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk)
INT WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, INT dx, INT dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, INT *cx, INT *cy)
static LRESULT LISTVIEW_Notify(LISTVIEW_INFO *infoPtr, NMHDR *lpnmhdr)
static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *infoPtr)
static void LISTVIEW_SetSelection(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_SaveTextMetrics(LISTVIEW_INFO *infoPtr)
#define MAX_EMPTYTEXT_SELECT_WIDTH
static void LISTVIEW_InvalidateSelectedItems(const LISTVIEW_INFO *infoPtr)
@ NOTIFY_MASK_ITEM_CHANGE
@ NOTIFY_MASK_END_LABEL_EDIT
static LRESULT LISTVIEW_LButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static BOOL is_text(LPCWSTR text)
static INT LISTVIEW_FindItemW(const LISTVIEW_INFO *infoPtr, INT nStart, const LVFINDINFOW *lpFindInfo)
static int textcmpWT(LPCWSTR aw, LPCWSTR bt, BOOL isW)
static LRESULT LISTVIEW_PrintClient(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD options)
static DWORD LISTVIEW_MapIndexToId(const LISTVIEW_INFO *infoPtr, INT iItem)
static void map_style_view(LISTVIEW_INFO *infoPtr)
static INT LISTVIEW_GetSelectedCount(const LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERATOR *subitems, POINT pos, DWORD cdmode)
static BOOL LISTVIEW_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
GLuint GLuint GLsizei count
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const struct newhuff ht[]
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
static const WCHAR textW[]
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)
#define SPI_SETICONTITLELOGFONT
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
_In_ int _Inout_ LPRECT lprc
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI UnionRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
#define GCLP_HBRBACKGROUND
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free