303 BOOL bDefaultBkColor;
341#define DEBUG_BUFFERS 20
343#define DEBUG_BUFFER_SIZE 256
346#define SB_INTERNAL -1
349#define DISP_TEXT_SIZE 260
352#define WIDTH_PADDING 12
355#define HEIGHT_PADDING 1
358#define REPORT_MARGINX 2
372#define ICON_TOP_PADDING_NOTHITABLE 2
373#define ICON_TOP_PADDING_HITABLE 2
374#define ICON_TOP_PADDING (ICON_TOP_PADDING_NOTHITABLE + ICON_TOP_PADDING_HITABLE)
375#define ICON_BOTTOM_PADDING 4
376#define LABEL_HOR_PADDING 5
377#define LABEL_VERT_PADDING 7
378#define ICON_LR_PADDING 16
379#define ICON_LR_HALF (ICON_LR_PADDING/2)
382#define DEFAULT_LABEL_WIDTH 40
384#define MAX_EMPTYTEXT_SELECT_WIDTH 80
387#define DEFAULT_COLUMN_WIDTH 128
390#define LISTVIEW_SCROLL_ICON_LINE_SIZE 37
393#define IMAGE_PADDING 2
396#define TRAILING_LABEL_PADDING 12
397#define TRAILING_HEADER_PADDING 11
400#define CAPTION_BORDER 2
403#define LV_ML_DT_FLAGS (DT_TOP | DT_NOPREFIX | DT_EDITCONTROL | DT_CENTER | DT_WORDBREAK | DT_WORD_ELLIPSIS | DT_END_ELLIPSIS)
404#define LV_FL_DT_FLAGS (DT_TOP | DT_NOPREFIX | DT_EDITCONTROL | DT_CENTER | DT_WORDBREAK | DT_NOCLIP)
405#define LV_SL_DT_FLAGS (DT_VCENTER | DT_NOPREFIX | DT_EDITCONTROL | DT_SINGLELINE | DT_WORD_ELLIPSIS | DT_END_ELLIPSIS)
408#define STATEIMAGEINDEX(x) (((x) & LVIS_STATEIMAGEMASK) >> 12)
414#define LISTVIEW_DUMP(iP) do { \
415 TRACE("hwndSelf=%p, clrBk=0x%06x, clrText=0x%06x, clrTextBk=0x%06x, ItemHeight=%d, ItemWidth=%d, Style=0x%08x\n", \
416 iP->hwndSelf, iP->clrBk, iP->clrText, iP->clrTextBk, \
417 iP->nItemHeight, iP->nItemWidth, iP->dwStyle); \
418 TRACE("hwndSelf=%p, himlNor=%p, himlSml=%p, himlState=%p, Focused=%d, Hot=%d, exStyle=0x%08x, Focus=%d\n", \
419 iP->hwndSelf, iP->himlNormal, iP->himlSmall, iP->himlState, \
420 iP->nFocusedItem, iP->nHotItem, iP->dwLvExStyle, iP->bFocus ); \
421 TRACE("hwndSelf=%p, ntmH=%d, icSz.cx=%d, icSz.cy=%d, icSp.cx=%d, icSp.cy=%d, notifyFmt=%d\n", \
422 iP->hwndSelf, iP->ntmHeight, iP->iconSize.cx, iP->iconSize.cy, \
423 iP->iconSpacing.cx, iP->iconSpacing.cy, iP->notifyFormat); \
424 TRACE("hwndSelf=%p, rcList=%s\n", iP->hwndSelf, wine_dbgstr_rect(&iP->rcList)); \
531 if (!aw)
return bt ? -1 : 0;
569 static int index = 0;
576 if (!lprng)
return "(null)";
585 if (pScrollInfo ==
NULL)
return "(null)";
619 if (!plvnm)
return "(null)";
621 " uOldState=0x%x, uChanged=0x%x, ptAction=%s, lParam=%ld",
631 if (lpLVItem ==
NULL)
return "(null)";
673 if (lpColumn ==
NULL)
return "(null)";
717 if (!lpht)
return "(null)";
736 default:
return "unknown";
745 switch (unicodeNotificationCode)
776 FIXME(
"unknown notification %x\n", unicodeNotificationCode);
777 return unicodeNotificationCode;
953 ret_length =
pdi->item.cchTextMax;
954 ret_text =
pdi->item.pszText;
956 if (return_unicode || return_ansi)
967 *
pdi->item.pszText = 0;
989 TRACE(
" resulting code=%d\n",
pdi->hdr.code);
991 if (return_ansi || return_unicode)
995 strcpy((
char*)ret_text, (
char*)
pdi->item.pszText);
1001 else if (return_ansi)
1008 ret_text, ret_length);
1010 pdi->item.pszText = ret_text;
1011 pdi->item.cchTextMax = ret_length;
1040 lpnmlvcd->
nmcd.
rc = *rcBounds;
1043 if (!lplvItem)
return;
1089 textcolor = lpnmlvcd->
clrText;
1218 i->nItem =
i->nSpecial;
1219 if (
i->nItem != -1)
return TRUE;
1221 if (
i->nItem ==
i->nSpecial)
1223 if (
i->ranges)
i->index = 0;
1229 if (
i->nItem ==
i->nSpecial)
i->nItem++;
1230 if (
i->nItem <
i->range.upper)
return TRUE;
1239 else if (
i->nItem >=
i->range.upper)
goto end;
1241 i->nItem =
i->range.lower;
1242 if (
i->nItem >= 0)
goto testitem;
1264 if (
i->nItem ==
i->nSpecial)
1272 if (
i->nItem ==
i->nSpecial)
i->nItem--;
1273 if (
i->nItem >=
i->range.lower)
return TRUE;
1282 else if (!
start &&
i->nItem <
i->range.lower)
goto end;
1284 i->nItem =
i->range.upper;
1285 if (
i->nItem > 0)
goto testitem;
1287 return (
i->nItem =
i->nSpecial) != -1;
1294 if (!
i->ranges)
return i->range;
1320 i->nItem =
i->nSpecial =
i->range.lower =
i->range.upper = -1;
1349 RECT rcItem, rcTemp;
1373 TRACE(
"building icon ranges:\n");
1374 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
1416 nFirstCol =
max(frame->
left, 0);
1420 lower = nFirstCol * nPerCol + nFirstRow;
1422 TRACE(
"nPerCol=%d, nFirstRow=%d, nLastRow=%d, nFirstCol=%d, nLastCol=%d, lower=%d\n",
1423 nPerCol, nFirstRow, nLastRow, nFirstCol, nLastCol, lower);
1425 if (nLastCol < nFirstCol || nLastRow < nFirstRow)
return TRUE;
1429 TRACE(
"building list ranges:\n");
1430 for (nCol = nFirstCol; nCol <= nLastCol; nCol++)
1432 item_range.lower = nCol * nPerCol + nFirstRow;
1433 if(item_range.lower >= infoPtr->
nItemCount)
break;
1434 item_range.upper =
min(nCol * nPerCol + nLastRow + 1, infoPtr->
nItemCount);
1465 RECT rcItem, rcClip;
1478 if (
i->nSpecial != -1)
1486 TRACE(
"building visible range:\n");
1487 if (!
i->ranges &&
i->range.lower <
i->range.upper)
1525 ERR(
"result is not a one range iterator\n");
1535 if(lower < iter2->
range.lower)
1560 int delete = iter1->
nItem;
1635 return lpID->
id + 1;
1709 infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS) &&
1726 DWORD dwOldBkColor, dwOldTextColor;
1885 if (!charCode || !keyData || infoPtr->
nItemCount == 0)
return 0;
1889 charCode !=
'.' && charCode !=
'`' && charCode !=
'!' &&
1890 charCode !=
'@' && charCode !=
'#' && charCode !=
'$' &&
1891 charCode !=
'%' && charCode !=
'^' && charCode !=
'&' &&
1892 charCode !=
'*' && charCode !=
'(' && charCode !=
')' &&
1893 charCode !=
'-' && charCode !=
'_' && charCode !=
'+' &&
1894 charCode !=
'=' && charCode !=
'\\'&& charCode !=
']' &&
1895 charCode !=
'}' && charCode !=
'[' && charCode !=
'{' &&
1896 charCode !=
'/' && charCode !=
'?' && charCode !=
'>' &&
1897 charCode !=
'<' && charCode !=
',' && charCode !=
'~')
1928 if (startidx == infoPtr->
nItemCount) startidx = 0;
1949 int i = startidx, endidx;
1965 for (
i = startidx;
i < endidx;
i++)
1992 (startidx == 0 && endidx == infoPtr->
nItemCount) )
2020 TRACE(
"nNewScrollPos=%d\n", nNewScrollPos);
2031 point[0].
x = -nNewScrollPos;
2032 point[1].
x += nNewScrollPos;
2085 TRACE(
"horzInfo.nMax=%d\n", horzInfo.
nMax);
2126 if (vertInfo.
nPage != 0)
2189 if (
dx != 0 ||
dy != 0)
2192 listRect = infoPtr->
rcList;
2309 assert(nItem >= 0 && nItem < infoPtr->nItemCount);
2319 lpptPosition->
x = nItem / nCountPerColumn * infoPtr->
nItemWidth;
2320 lpptPosition->
y = nItem % nCountPerColumn * infoPtr->
nItemHeight;
2381 SIZE labelSize = { 0, 0 };
2392 if (lprcSelectBox) doSelectBox =
TRUE;
2393 if (lprcLabel) doLabel =
TRUE;
2394 if (doLabel || lprcIcon || lprcStateIcon) doIcon =
TRUE;
2424 LONG state_width = 0;
2431 Icon.left = Box.
left + state_width;
2445 Icon.left = Box.
left + state_width;
2457 (!lpColumnInfo || lpLVItem->
iSubItem == 0 ||
2462 if(lprcIcon) *lprcIcon =
Icon;
2468 lprcStateIcon->
left =
Icon.left - state_width;
2470 lprcStateIcon->
top =
Icon.top;
2475 else Icon.right = 0;
2543 if (!oversizedBox && labelSize.
cy > infoPtr->
ntmHeight)
2547 labelSize.
cy =
max(labelSize.
cy, 1);
2568 if (lprcLabel) *lprcLabel =
Label;
2592 if (lprcSelectBox) *lprcSelectBox = SelectBox;
2600 else *lprcBox = Box;
2629 lvItem.
iItem = nItem;
2657 if (id1->
id == id2->
id)
return 0;
2659 return (id1->
id < id2->
id) ? -1 : 1;
2678 TRACE(
"iID=%d\n", iID);
2711 TRACE(
"iItem=%d\n", iItem);
2714 if (iItem < 0 || iItem >= infoPtr->
nItemCount)
return -1;
2719 return lpItem->
id->
id;
2816 if ((*lpPos).x > nListWidth) (*lpPos).x = nMaxColumns * infoPtr->
nItemWidth;
2817 if ((*lpPos).y > nListHeight) (*lpPos).y = nMaxRows * infoPtr->
nItemHeight;
2846 if (lppt->
x == old.
x && lppt->
y == old.
y)
return TRUE;
2884 TRACE(
"nAlignCode=%d\n", nAlignCode);
2901 default:
return FALSE;
2908 next_pos(infoPtr, &
pos,
i);
2910 next_pos(infoPtr, &
pos);
2937 switch (infoPtr->
uView)
2981 TRACE(
"(lprcView=%p)\n", lprcView);
2983 if (!lprcView)
return FALSE;
3019 if (lpSubItem->
iSubItem == nSubItem)
3056 nItemWidth = rcHeader.
right;
3117 return max(nItemHeight, 1);
3187 if (((
RANGE*)range1)->upper <= ((
RANGE*)range2)->lower)
3189 else if (((
RANGE*)range2)->upper <= ((
RANGE*)range1)->lower)
3199#define ranges_check(ranges, desc) if (TRACE_ON(listview)) ranges_assert(ranges, desc, __FILE__, __LINE__)
3213 assert (prev->lower >= 0 && prev->lower < prev->upper);
3217 assert (prev->upper <= curr->lower);
3218 assert (curr->lower < curr->upper);
3222 TRACE(
"--- Done checking---\n");
3228 if (!ranges)
return NULL;
3230 if (ranges->
hdpa)
return ranges;
3247 if (!ranges)
return;
3263 if (!newrng)
goto fail;
3274 TRACE (
"clone failed\n");
3299 RANGE srchrng = { nItem, nItem + 1 };
3301 TRACE(
"(nItem=%d)\n", nItem);
3313 count += sel->upper - sel->lower;
3321 RANGE srchrng = { nItem, nItem + 1 }, *chkrng;
3330 if (chkrng->lower >= nItem)
3331 chkrng->lower =
max(
min(chkrng->lower + delta, nUpper - 1), 0);
3332 if (chkrng->upper > nItem)
3333 chkrng->upper =
max(
min(chkrng->upper + delta, nUpper), 0);
3347 srchrgn.lower =
range.lower - 1;
3348 srchrgn.upper =
range.upper + 1;
3355 TRACE(
"Adding new range\n");
3359 if(!newrgn)
goto fail;
3376 RANGE *chkrgn, *mrgrgn;
3377 INT fromindex, mergeindex;
3382 chkrgn->lower =
min(
range.lower, chkrgn->lower);
3383 chkrgn->upper =
max(
range.upper, chkrgn->upper);
3389 srchrgn.lower = chkrgn->lower - 1;
3390 srchrgn.upper = chkrgn->upper + 1;
3395 if (mergeindex == -1)
break;
3396 if (mergeindex ==
index)
3398 fromindex =
index + 1;
3402 TRACE(
"Merge with index %i\n", mergeindex);
3405 chkrgn->lower =
min(chkrgn->lower, mrgrgn->lower);
3406 chkrgn->upper =
max(chkrgn->upper, mrgrgn->upper);
3439 if ( (chkrgn->upper ==
range.upper) &&
3440 (chkrgn->lower ==
range.lower) )
3447 else if ( (chkrgn->upper <=
range.upper) &&
3448 (chkrgn->lower >=
range.lower) )
3454 else if ( (chkrgn->upper <=
range.upper) &&
3455 (chkrgn->lower <
range.lower) )
3457 chkrgn->upper =
range.lower;
3460 else if ( (chkrgn->upper >
range.upper) &&
3461 (chkrgn->lower >=
range.lower) )
3463 chkrgn->lower =
range.upper;
3471 if (!(newrgn =
Alloc(
sizeof(
RANGE))))
goto fail;
3472 newrgn->lower = chkrgn->lower;
3473 newrgn->upper =
range.lower;
3474 chkrgn->lower =
range.upper;
3556 INT nSelectedCount = 0;
3570 TRACE(
"nSelectedCount=%d\n", nSelectedCount);
3571 return nSelectedCount;
3602 if (nShiftItem < nItem)
return nShiftItem;
3604 if (nShiftItem > nItem)
return nShiftItem + direction;
3606 if (direction > 0)
return nShiftItem + direction;
3643 TRACE(
"Shifting %i, %i steps\n", nItem, direction);
3682 if (nFirst == -1) nFirst = nItem;
3687 for (
i = nFirst;
i <= nLast;
i++)
3691 nmlv.
iFrom = nFirst;
3745 RECT rcItem, rcSel, rcSelMark;
3802 TRACE(
"nItem=%d\n", nItem);
3833 TRACE(
"nItem=%d, wShift=%d, wCtrl=%d\n", nItem, wShift, wCtrl);
3834 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
3869 ZeroMemory(&lvHitTestInfo,
sizeof(lvHitTestInfo));
3870 lvHitTestInfo.
pt.
x =
pt.x;
3871 lvHitTestInfo.
pt.
y =
pt.y;
3930#define SCROLL_LEFT 0x1
3931#define SCROLL_RIGHT 0x2
3932#define SCROLL_UP 0x4
3933#define SCROLL_DOWN 0x8
3972 rect.right = coords_offs.
x;
3976 rect.left = coords_offs.
x;
3983 rect.bottom = coords_offs.
y;
3987 rect.top = coords_offs.
y;
4003 if ((scroll &
SCROLL_UP) && (coords_orig->
y <= 0))
4021 if (old_elems.
nItem > -1)
4042 if (new_elems.
nItem > -1)
4096 if (scrollInfo.
nPos != scrollInfo.
nMin)
4099 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4105 if (scrollInfo.
nPos != scrollInfo.
nMin)
4108 if (((scrollInfo.
nPage + scrollInfo.
nPos) - 1) != scrollInfo.
nMax)
4316 if (lpLVItem->
mask == 0)
return TRUE;
4342 TRACE(
"oldState=%x, newState=%x\n",
item.state, lpLVItem->
state);
4359 TRACE(
"change mask=0x%x\n", uChanged);
4394 if (!uChanged)
return TRUE;
4414 lpItem->
state &= ~stateMask;
4415 lpItem->
state |= (lpLVItem->
state & stateMask);
4464 if (isNew)
return TRUE;
4518 if (!lpSubItem)
return FALSE;
4645 nItem = scrollInfo.
nPos;
4653 TRACE(
"nItem=%d\n", nItem);
4684 RECT rcSelect, rcLabel, rcBox, rcStateIcon, rcIcon;
4685 const RECT *background;
4692 if (!focus)
item->state &= ~LVIS_FOCUSED;
4700 TRACE(
"%d: box=%s, select=%s, icon=%s. label=%s\n",
item->iSubItem,
4724 background = &rcLabel;
4726 background = &rcSelect;
4767 TRACE(
"stateimage=%d\n", stateimage);
4798 else if (
item->iSubItem)
4820 DrawShadowText(nmlvcd->
nmcd.
hdc,
item->pszText, -1, &rcLabel,
format,
RGB(255, 255, 255),
RGB(0, 0, 0), 2, 2);
4845 static WCHAR callbackW[] = {
'(',
'c',
'a',
'l',
'l',
'b',
'a',
'c',
'k',
')', 0 };
4857 lvItem.
iItem = nItem;
4869 if (!focus) lvItem.
state &= ~LVIS_FOCUSED;
4903 if (subitems->
nItem)
4907 lvItem.
iItem = nItem;
4932 temp_nmlvcd = nmlvcd;
4988 item.iItem =
i->nItem;
5046 RECT rcClip, rcItem;
5132 RECT rcClip, rcItem = {0};
5176 if (rcItem.
left == 0)
continue;
5177 rcItem.
left += Origin.
x;
5178 rcItem.
right += Origin.
x;
5193 rcItem.
right += Origin.
x;
5203 for(
y = Origin.
y > 1 ? Origin.
y - 1 : itemheight - 1 + Origin.
y % itemheight;
y<=infoPtr->rcList.bottom;
y+=itemheight)
5263 COLORREF oldTextColor = 0, oldBkColor = 0;
5277 TRACE(
"double buffering\n");
5281 ERR(
"Failed to create DC for backbuffer\n");
5287 ERR(
"Failed to create bitmap for backbuffer\n");
5415 DWORD dwViewRect = 0;
5417 if (nItemCount == -1)
5422 INT nItemCountPerColumn = 1;
5423 INT nColumnCount = 0;
5425 if (wHeight == 0xFFFF)
5431 if (wHeight < infoPtr->nItemHeight)
5438 nItemCountPerColumn = wHeight / infoPtr->
nItemHeight;
5439 if (nItemCountPerColumn == 0)
5440 nItemCountPerColumn = 1;
5442 if (nItemCount % nItemCountPerColumn != 0)
5443 nColumnCount = nItemCount / nItemCountPerColumn;
5445 nColumnCount = nItemCount / nItemCountPerColumn + 1;
5450 wHeight = nItemCountPerColumn * infoPtr->
nItemHeight + 2;
5451 wWidth = nColumnCount * infoPtr->
nItemWidth + 2;
5453 dwViewRect =
MAKELONG(wWidth, wHeight);
5463 wHeight = (rcBox.
bottom - rcBox.
top) * nItemCount;
5468 if (wHeight == 0xffff)
5470 if (wWidth == 0xffff)
5474 dwViewRect =
MAKELONG(wWidth, wHeight);
5485 if (wWidth == 0xffff)
5488 if (wWidth < nItemWidth)
5489 wWidth = nItemWidth;
5491 cols = wWidth / nItemWidth;
5492 if (cols > nItemCount)
5499 rows = nItemCount / cols;
5500 if (nItemCount % cols)
5506 wHeight = (nItemHeight * rows)+2;
5507 wWidth = (nItemWidth * cols)+2;
5509 dwViewRect =
MAKELONG(wWidth, wHeight);
5512 FIXME(
"uView == LV_VIEW_SMALLICON: not implemented\n");
5564 if (iItem < 0 || iItem >= infoPtr->
nItemCount || !lppt)
5571 lppt->
x = rcItem.
left;
5572 lppt->
y = rcItem.
top;
5601 TRACE(
"ret=%p\n", dragList);
5720 if (hdi.iOrder >= nOrder) {
5759 TRACE(
"nColumn=%d\n", nColumn);
5781 INT nItem, nSubItem,
i;
5783 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
5791 if (lpSubItem->
iSubItem == nColumn)
5794 lpDelItem = lpSubItem;
5796 else if (lpSubItem->
iSubItem > nColumn)
5842 INT nPerCol, nItemCol, nItemRow;
5871 nItemCol = nItem / nPerCol;
5872 nItemRow = nItem % nPerCol;
5918 TRACE(
"(nItem=%d)\n", nItem);
6044 infoPtr->
notify_mask &= ~NOTIFY_MASK_END_LABEL_EDIT;
6061 if (!pszText)
return TRUE;
6113 TRACE(
"(hwnd=%p, uMsg=%x, wParam=%lx, lParam=%lx, isW=%d)\n",
6206 hedit =
CreateWindowW(
WC_EDITW,
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6208 hedit =
CreateWindowA(
WC_EDITA, (
LPCSTR)
text,
style, 0, 0, 0, 0, infoPtr->
hwndSelf, 0,
hinst, 0);
6210 if (!hedit)
return 0;
6246 TRACE(
"(nItem=%d, isW=%d)\n", nItem,
isW);
6257 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
6307 sz.
cx +=
tm.tmMaxCharWidth * 2;
6341 INT nScrollPosHeight = 0;
6342 INT nScrollPosWidth = 0;
6343 INT nHorzAdjust = 0;
6344 INT nVertAdjust = 0;
6347 RECT rcItem, rcTemp;
6360 nScrollPosWidth = 1;
6380 nScrollPosHeight = 1;
6394 if (!nScrollPosWidth && !nScrollPosHeight)
return TRUE;
6396 if (nScrollPosWidth)
6398 INT diff = nHorzDiff / nScrollPosWidth;
6399 if (nHorzDiff % nScrollPosWidth) diff += nHorzAdjust;
6403 if (nScrollPosHeight)
6405 INT diff = nVertDiff / nScrollPosHeight;
6406 if (nVertDiff % nScrollPosHeight) diff += nVertAdjust;
6431 INT nItem = nStart + 1, nLast = infoPtr->
nItemCount, nNearestItem = -1;
6432 ULONG xdist, ydist, dist, mindist = 0x7fffffff;
6443 nmlv.
lvfi = *lpFindInfo;
6447 if (!lpFindInfo || nItem < 0)
return -1;
6483 default:
ERR(
"Unknown vkDirection=%d\n", lpFindInfo->
vkDirection);
6494 lvItem.
mask &= ~LVIF_TEXT;
6497 nItem = bNearest ? -1 : nStart + 1;
6500 for (; nItem < nLast; nItem++)
6502 lvItem.
iItem = nItem;
6520 if (!
p ||
p != lvItem.
pszText)
continue;
6528 if (!bNearest)
return nItem;
6537 dist = xdist * xdist + ydist * ydist;
6543 nNearestItem = nItem;
6555 return nNearestItem;
6578 memcpy(&fiw, lpFindInfo,
sizeof(fiw));
6631 lpColumn->
fmt = lpColumnInfo->
fmt;
6645 if (lpColumn->
mask & LVCF_MINWIDTH)
6646 lpColumn->cxMin = lpColumnInfo->
cxMin;
6671 INT nColumnWidth = 0;
6674 TRACE(
"nColumn=%d\n", nColumn);
6677 switch(infoPtr->
uView)
6690 WARN(
"(%p): HDM_GETITEMW failed for item %d\n", infoPtr->
hwndSelf, nColumn);
6693 nColumnWidth = hdItem.cxy;
6697 TRACE(
"nColumnWidth=%d\n", nColumnWidth);
6698 return nColumnWidth;
6715 switch (infoPtr->
uView)
6749 FIXME(
"LVSIL_GROUPHEADER not supported\n");
6752 WARN(
"got unknown imagelist index - %d\n", nImageList);
6800 if (lpLVItem->
mask == 0)
return TRUE;
6807 lpLVItem->
state = 0;
6815 lpLVItem->
state = 0;
6860 *lpLVItem = dispInfo.
item;
6890 lpLVItem->
state &= ~LVIS_FOCUSED;
6898 lpLVItem->
state &= ~LVIS_SELECTED;
6914 pItemHdr = lpSubItem ? &lpSubItem->
hdr : &callbackHdr;
6917 WARN(
" iSubItem invalid (%08x), ignored.\n", isubitem);
6922 pItemHdr = &lpItem->
hdr;
6969 if (isubitem) dispInfo.
item.
mask &= ~LVIF_DI_SETITEM;
7012 if (isubitem)
return TRUE;
7020 lpLVItem->
state &= ~dispInfo.item.stateMask;
7025 lpLVItem->
state &= ~LVIS_FOCUSED;
7031 lpLVItem->
state &= ~LVIS_SELECTED;
7112 TRACE(
"(nItem=%d, lpptPosition=%p)\n", nItem, lpptPosition);
7114 if (!lpptPosition || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
7124 lpptPosition->
x += Origin.
x;
7125 lpptPosition->
y += Origin.
y;
7213 oversizedBox =
TRUE;
7221 lvItem.
iItem = nItem;
7403 if (nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7405 lvItem.
iItem = nItem;
7411 return lvItem.
state & uMask;
7430 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return 0;
7433 lpLVItem->
iItem = nItem;
7456 INT nCountPerColumn;
7463 if (nItem < -1 || nItem >= infoPtr->
nItemCount)
return -1;
7505 while (nItem - nCountPerRow >= 0)
7507 nItem -= nCountPerRow;
7528 while (nItem < infoPtr->nItemCount)
7542 while (nItem + nCountPerRow < infoPtr->nItemCount )
7544 nItem += nCountPerRow;
7566 while (nItem - nCountPerColumn >= 0)
7568 nItem -= nCountPerColumn;
7580 while (nItem % nCountPerRow > 0)
7604 while (nItem + nCountPerColumn < infoPtr->nItemCount)
7606 nItem += nCountPerColumn;
7618 while (nItem % nCountPerRow < nCountPerRow - 1 )
7667 INT nHorzPos = 0, nVertPos = 0;
7674 nHorzPos = scrollInfo.
nPos;
7676 nVertPos = scrollInfo.
nPos;
7678 TRACE(
"nHorzPos=%d, nVertPos=%d\n", nHorzPos, nVertPos);
7687 lpptOrigin->
x -= nHorzPos;
7688 lpptOrigin->
y -= nVertPos;
7724 return stringSize.
cx;
7749 RECT rcBox, rcBounds, rcState, rcIcon, rcLabel, rcSearch;
7798 opt.
x = lpht->
pt.
x - Origin.
x;
7805 if ((opt.
x >= pRect->
left) && (opt.
x < pRect->
right))
7823 if (lpht->
flags)
return -1;
7829 rcSearch.
top = lpht->
pt.
y;
7838 TRACE(
"lpht->iItem=%d\n", iItem);
7839 if (iItem == -1)
return -1;
7845 lvItem.
iItem = iItem;
7850 if (!infoPtr->
bFocus) lvItem.
state &= ~LVIS_FOCUSED;
7865 opt.
x = lpht->
pt.
x - Origin.
x;
7869 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7870 UnionRect(&rcBounds, &rcBounds, &rcState);
7873 if (!
PtInRect(&rcBounds, opt))
return -1;
7890 lpht->
flags &= ~LVHT_NOWHERE;
7893 if (
select && !is_fullrow)
7900 UnionRect(&rcBounds, &rcIcon, &rcLabel);
7901 UnionRect(&rcBounds, &rcBounds, &rcState);
7903 if (!
PtInRect(&rcBounds, opt)) iItem = -1;
7905 return lpht->
iItem = iItem;
7937 if (!lpLVItem || lpLVItem->
iSubItem)
return -1;
7944 if ( !(hdpaSubItems =
DPA_Create(8)) )
goto fail;
7950 lpID->
item = hdpaSubItems;
7969 while (i < infoPtr->nItemCount)
7977 if (cmpv >= 0)
break;
7990 if (nItem == -1)
goto fail;
8018 item.state &= ~LVIS_STATEIMAGEMASK;
8106 TRACE(
"nItem=%d\n", nItem);
8170 switch(infoPtr->
uView) {
8205 infoPtr->bDefaultBkColor =
FALSE;
8250 if (lpColumn->
fmt & LVCFMT_FIXED_WIDTH)
8251 lphdi->
fmt |= HDF_FIXEDWIDTH;
8263 for(item_index = 0; item_index < (nColumn - 1); item_index++)
8276 lphdi->
cxy = lpColumn->
cx;
8324 if (!lpColumn || nColumn < 0)
return -1;
8361 if (nNewColumn == -1)
return -1;
8362 if (nNewColumn != nColumn)
ERR(
"nColumn=%d, nNewColumn=%d\n", nColumn, nNewColumn);
8369 if (lpColumn->
mask & LVCF_MINWIDTH) lpColumnInfo->
cxMin = lpColumn->cxMin;
8382 item.iSubItem = nNewColumn;
8387 for (nItem = 0; nItem < infoPtr->
nItemCount; nItem++)
8393 if (lpSubItem->
iSubItem >= nNewColumn)
8455 if (!bResult)
return FALSE;
8460 INT oldFmt = lpColumnInfo->
fmt;
8462 lpColumnInfo->
fmt = lpColumn->
fmt;
8469 if (lpColumn->
mask & LVCF_MINWIDTH)
8514 TRACE(
"(nColumn=%d, cx=%d)\n", nColumn,
cx);
8548 if (max_cx < nLabelWidth) max_cx = nLabelWidth;
8591 INT bitmap_margin = 0;
8602 INT icon_cx, icon_cy;
8605 cx += icon_cx + 2*bitmap_margin;
8612 cx +=
bmp.bmWidth + 2*bitmap_margin;
8638 HBITMAP hbm_im, hbm_mask, hbm_orig;
8692 TRACE(
"mask=0x%08x, ex_style=0x%08x\n",
mask, ex_style);
8735 style &= ~HDS_DRAGDROP;
8751 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_TRANSPARENTBKGND)
8753 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
8757 if((infoPtr->
dwLvExStyle ^ old_ex_style) & LVS_EX_HEADERINALLVIEWS)
8759 if (infoPtr->
dwLvExStyle & LVS_EX_HEADERINALLVIEWS)
8775 return old_ex_style;
8838 return oldHoverTime;
8855 INT iconWidth = 0, iconHeight = 0;
8861 if (
cx == -1 &&
cy == -1)
8880 TRACE(
"old=(%d,%d), new=(%d,%d), iconSize=(%d,%d), ntmH=%d\n",
8925 TRACE(
"(nType=%d, himl=%p)\n", nType,
himl);
8953 ERR(
"Unknown icon type=%d\n", nType);
9056 WARN(
"for non-ownerdata performance option not implemented.\n");
9081 if (!
pt || nItem < 0 || nItem >= infoPtr->
nItemCount ||
9096 if ((Pt.
x == -1) && (Pt.
y == -1))
9138 lvItem.
iItem = nItem;
9215 if (!lpLVItem || nItem < 0 || nItem >= infoPtr->
nItemCount)
return FALSE;
9218 lvItem.
iItem = nItem;
9244 TRACE(
"(nIndex=%d)\n", nIndex);
9246 if (nIndex >= -1 && nIndex < infoPtr->nItemCount)
9307 return hwndOldToolTip;
9342 if (infoPtr->
uView == nView)
return 1;
9347 FIXME(
"View LV_VIEW_TILE unimplemented\n");
9351 infoPtr->
uView = nView;
9391 TRACE(
"nView=%d\n", nView);
9469 TRACE(
"(pfnCompare=%p, lParamSort=%lx)\n", pfnCompare, lParamSort);
9473 if (!pfnCompare)
return FALSE;
9548 TRACE(
"(nItem=%d)\n", nItem);
9632 TRACE(
"(lpcs=%p)\n", lpcs);
9636 if (!infoPtr)
return FALSE;
9653 infoPtr->bDefaultBkColor =
TRUE;
9721 TRACE(
"(lpcs=%p, style=0x%08x)\n", lpcs, lpcs->
style);
9825 if (infoPtr->
dwLvExStyle & LVS_EX_TRANSPARENTBKGND)
9882 INT nOldScrollPos, nNewScrollPos;
9886 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
9898 nOldScrollPos = scrollInfo.
nPos;
9899 switch (nScrollCode)
9913 nScrollDiff = -scrollInfo.
nPage;
9917 nScrollDiff = scrollInfo.
nPage;
9930 if (nScrollDiff == 0)
return 0;
9933 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
9934 if (nScrollDiff > 0) {
9935 if (nNewScrollPos < nOldScrollPos ||
9936 nNewScrollPos > scrollInfo.
nMax)
9937 nNewScrollPos = scrollInfo.
nMax;
9939 if (nNewScrollPos > nOldScrollPos ||
9940 nNewScrollPos < scrollInfo.
nMin)
9941 nNewScrollPos = scrollInfo.
nMin;
9946 scrollInfo.
nPos = nNewScrollPos;
9950 if (nNewScrollPos == nOldScrollPos)
return 0;
9953 nScrollDiff = nOldScrollPos - nNewScrollPos;
9986 INT nOldScrollPos, nNewScrollPos;
9990 TRACE(
"(nScrollCode=%d(%s), nScrollDiff=%d)\n", nScrollCode,
10002 nOldScrollPos = scrollInfo.
nPos;
10004 switch (nScrollCode)
10018 nScrollDiff = -scrollInfo.
nPage;
10022 nScrollDiff = scrollInfo.
nPage;
10035 if (nScrollDiff == 0)
return 0;
10038 nNewScrollPos = scrollInfo.
nPos + nScrollDiff;
10039 if (nScrollDiff > 0) {
10040 if (nNewScrollPos < nOldScrollPos ||
10041 nNewScrollPos > scrollInfo.
nMax)
10042 nNewScrollPos = scrollInfo.
nMax;
10044 if (nNewScrollPos > nOldScrollPos ||
10045 nNewScrollPos < scrollInfo.
nMin)
10046 nNewScrollPos = scrollInfo.
nMin;
10051 scrollInfo.
nPos = nNewScrollPos;
10055 if (nNewScrollPos == nOldScrollPos)
return 0;
10060 nScrollDiff = nOldScrollPos - nNewScrollPos;
10071 INT pulScrollLines = 3;
10073 TRACE(
"(wheelDelta=%d)\n", wheelDelta);
10075 switch(infoPtr->
uView)
10091 if ((wheelDelta < 0 && infoPtr->cWheelRemainder < 0) ||
10131 TRACE(
"(nVirtualKey=%d, lKeyData=%d)\n", nVirtualKey, lKeyData);
10134 nmKeyDown.
wVKey = nVirtualKey;
10135 nmKeyDown.
flags = 0;
10140 switch (nVirtualKey)
10194 if(nItem < 0) nItem = 0;
10205 nItem = topidx + cnt - 1;
10238 if (!infoPtr->
bFocus)
return 0;
10285 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10315 r.top =
r.bottom =
pt.y;
10316 r.left =
r.right =
pt.x;
10375 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10387 lvHitTestInfo.
pt.
x =
x;
10388 lvHitTestInfo.
pt.
y =
y;
10392 if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
10496 TRACE(
"(key=%hu, X=%u, Y=%u)\n", wKey,
x,
y);
10500 lvHitTestInfo.
pt.
x =
x;
10501 lvHitTestInfo.
pt.
y =
y;
10588 infoPtr->
hFont = 0;
10615 TRACE(
"(lpnmhdr=%p)\n", lpnmhdr);
10625 switch (lpnmhdr->
code)
10695 hdi.iOrder + 1, 0);
10798 r.right - cxEdge,
r.bottom - cyEdge);
10799 if (region != (HRGN)1)
10807 r.right - cxEdge,
r.bottom -cyEdge);
10839 TRACE(
"(hwndFrom=%p, nCommand=%d)\n", hwndFrom, nCommand);
10880 if (!
hdc)
return 1;
10955 TRACE(
"(key=%hu,X=%u,Y=%u)\n", wKey,
x,
y);
10961 lvHitTestInfo.
pt.
x =
x;
10962 lvHitTestInfo.
pt.
y =
y;
10986 TRACE(
"(key=%hu, x=%d, y=%d)\n", wKey,
x,
y);
10999 if ((
item >= 0) && (item < infoPtr->nItemCount))
11011 if (
ht.iItem != -1)
11015 memset(&nmlv, 0,
sizeof(nmlv));
11088 TRACE(
"(hwndLoseFocus=%p)\n", hwndLoseFocus);
11091 if (infoPtr->
bFocus)
return 0;
11125 TRACE(
"(hfont=%p,redraw=%hu)\n",
hFont, fRedraw);
11128 if (infoPtr->
hFont == oldFont)
return 0;
11266 TRACE(
" wp.flags=0x%08x, wp=%d,%d (%dx%d)\n", wp.
flags, wp.
x, wp.
y, wp.
cx, wp.
cy);
11277 TRACE(
" after SWP wp=%d,%d (%dx%d)\n", wp.
x, wp.
y, wp.
cx, wp.
cy);
11303 UINT uNewView, uOldView;
11306 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11324 if (uNewView != uOldView)
11366 TRACE(
"Hide header control, was 0x%08x\n",
style);
11372 TRACE(
"Show header control, was 0x%08x\n",
style);
11409 TRACE(
"(styletype=%lx, styleOld=0x%08x, styleNew=0x%08x)\n",
11486 TRACE(
"new version %d\n", iVersion);
11488 return iOldVersion;
11545 return infoPtr->
clrBk;
11599 FIXME(
"LVM_GETISEARCHSTRING: unimplemented\n");
11630 FIXME(
"LVM_GETNUMBEROFWORKAREAS: unimplemented\n");
11680 return infoPtr->
uView;
11686 FIXME(
"LVM_GETWORKAREAS: unimplemented\n");
11921 case WM_NOTIFYFORMAT:
11951 case WM_STYLECHANGED:
11954 case WM_STYLECHANGING:
11960 if (infoPtr->bDefaultBkColor)
11963 infoPtr->bDefaultBkColor =
TRUE;
11970 case WM_THEMECHANGED:
_STLP_MOVE_TO_STD_NAMESPACE bool is_sorted(_ForwardIter __first, _ForwardIter __last)
void destroy(_Tp *__pointer)
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
static const char * wine_dbgstr_point(const POINT *ppt)
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
BOOL COMCTL32_IsReflectedMessage(UINT uMsg) DECLSPEC_HIDDEN
BOOL Str_SetPtrWtoA(LPSTR *lppDest, LPCWSTR lpSrc) DECLSPEC_HIDDEN
HWND COMCTL32_CreateToolTip(HWND) DECLSPEC_HIDDEN
VOID COMCTL32_RefreshSysColors(void) DECLSPEC_HIDDEN
COMCTL32_SysColor comctl32_color
BOOL WINAPI _TrackMouseEvent(TRACKMOUSEEVENT *ptme)
int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT *prc, DWORD dwFlags, COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset)
BOOL WINAPI DPA_Sort(HDPA hdpa, PFNDPACOMPARE pfnCompare, LPARAM lParam)
INT WINAPI DPA_Search(HDPA hdpa, LPVOID pFind, INT nStart, PFNDPACOMPARE pfnCompare, LPARAM lParam, UINT uOptions)
BOOL WINAPI DPA_SetPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI DPA_DeleteAllPtrs(HDPA hdpa)
INT WINAPI DPA_GetPtrIndex(HDPA hdpa, LPCVOID p)
LPVOID WINAPI DPA_DeletePtr(HDPA hdpa, INT i)
BOOL WINAPI DPA_Destroy(HDPA hdpa)
HDPA WINAPI DPA_Create(INT nGrow)
INT WINAPI DPA_InsertPtr(HDPA hdpa, INT i, LPVOID p)
BOOL WINAPI ImageList_Draw(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, UINT fStyle)
COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk)
INT WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
BOOL WINAPI ImageList_DrawEx(HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, INT dx, INT dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
BOOL WINAPI ImageList_GetIconSize(HIMAGELIST himl, INT *cx, INT *cy)
static LRESULT LISTVIEW_Notify(LISTVIEW_INFO *infoPtr, NMHDR *lpnmhdr)
static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *infoPtr)
static void LISTVIEW_SetSelection(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_SaveTextMetrics(LISTVIEW_INFO *infoPtr)
#define MAX_EMPTYTEXT_SELECT_WIDTH
static void LISTVIEW_InvalidateSelectedItems(const LISTVIEW_INFO *infoPtr)
@ NOTIFY_MASK_ITEM_CHANGE
@ NOTIFY_MASK_END_LABEL_EDIT
static LRESULT LISTVIEW_LButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static BOOL is_text(LPCWSTR text)
static INT LISTVIEW_FindItemW(const LISTVIEW_INFO *infoPtr, INT nStart, const LVFINDINFOW *lpFindInfo)
static int textcmpWT(LPCWSTR aw, LPCWSTR bt, BOOL isW)
static LRESULT LISTVIEW_PrintClient(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD options)
static DWORD LISTVIEW_MapIndexToId(const LISTVIEW_INFO *infoPtr, INT iItem)
static void map_style_view(LISTVIEW_INFO *infoPtr)
static INT LISTVIEW_GetSelectedCount(const LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, ITERATOR *subitems, POINT pos, DWORD cdmode)
static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *, INT, BOOL)
static BOOL LISTVIEW_Enable(const LISTVIEW_INFO *infoPtr)
#define LISTVIEW_SCROLL_ICON_LINE_SIZE
static void LISTVIEW_GetHeaderRect(const LISTVIEW_INFO *infoPtr, INT nSubItem, LPRECT lprc)
static BOOL LISTVIEW_DeleteItem(LISTVIEW_INFO *infoPtr, INT nItem)
struct tagRANGES * RANGES
static DWORD LISTVIEW_SetExtendedListViewStyle(LISTVIEW_INFO *infoPtr, DWORD mask, DWORD ex_style)
#define ICON_BOTTOM_PADDING
static void iterator_rangeitems(ITERATOR *i, RANGE range)
static LRESULT LISTVIEW_SetFocus(LISTVIEW_INFO *infoPtr, HWND hwndLoseFocus)
static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT item, LPRECT lprc)
static VOID CALLBACK LISTVIEW_ScrollTimer(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
static BOOL LISTVIEW_SetCursor(const LISTVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static VOID CALLBACK LISTVIEW_DelayedEditItem(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
static void textcpynT(LPWSTR dest, BOOL isDestW, LPCWSTR src, BOOL isSrcW, INT max)
struct tagITEM_INFO ITEM_INFO
static INT LISTVIEW_MapIdToIndex(const LISTVIEW_INFO *infoPtr, UINT iID)
static DWORD notify_customdraw(const LISTVIEW_INFO *infoPtr, DWORD dwDrawStage, NMLVCUSTOMDRAW *lpnmlvcd)
void LISTVIEW_Unregister(void)
static RANGES ranges_diff(RANGES ranges, RANGES sub)
static LRESULT CallWindowProcT(WNDPROC proc, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL isW)
static LRESULT LISTVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
static HWND CreateEditLabelT(LISTVIEW_INFO *infoPtr, LPCWSTR text, BOOL isW)
static BOOL LISTVIEW_NCPaint(const LISTVIEW_INFO *infoPtr, HRGN region)
static BOOL LISTVIEW_GetColumnOrderArray(const LISTVIEW_INFO *infoPtr, INT iCount, LPINT lpiArray)
void LISTVIEW_Register(void)
static INT LISTVIEW_ProcessLetterKeys(LISTVIEW_INFO *infoPtr, WPARAM charCode, LPARAM keyData)
static INT LISTVIEW_HitTest(const LISTVIEW_INFO *, LPLVHITTESTINFO, BOOL, BOOL)
#define ICON_TOP_PADDING_HITABLE
static LPWSTR textdupTtoW(LPCWSTR text, BOOL isW)
static LPCSTR debugtext_tn(LPCWSTR text, BOOL isW, INT n)
static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *infoPtr, PFNLVCOMPARE pfnCompare, LPARAM lParamSort, BOOL IsEx)
static void iterator_destroy(const ITERATOR *i)
static void LISTVIEW_NextIconPosLeft(LISTVIEW_INFO *infoPtr, LPPOINT lpPos)
static INT LISTVIEW_GetItemTextT(const LISTVIEW_INFO *infoPtr, INT nItem, LPLVITEMW lpLVItem, BOOL isW)
static void prepaint_setup(const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRAW *lpnmlvcd, BOOL SubItem)
static INT LISTVIEW_GetColumnWidth(const LISTVIEW_INFO *infoPtr, INT nColumn)
static LRESULT notify_hdr(const LISTVIEW_INFO *infoPtr, INT code, LPNMHDR pnmh)
static void LISTVIEW_InvalidateColumn(const LISTVIEW_INFO *infoPtr, INT nColumn)
static LRESULT LISTVIEW_VScroll(LISTVIEW_INFO *, INT, INT)
static LRESULT LISTVIEW_SetRedraw(LISTVIEW_INFO *infoPtr, BOOL redraw)
static BOOL LISTVIEW_SetItemCount(LISTVIEW_INFO *infoPtr, INT nItems, DWORD dwFlags)
static char * debug_getbuf(void)
static BOOL LISTVIEW_SetBkColor(LISTVIEW_INFO *infoPtr, COLORREF color)
static LPCSTR debugtext_t(LPCWSTR text, BOOL isW)
static BOOL is_autoarrange(const LISTVIEW_INFO *infoPtr)
static HIMAGELIST LISTVIEW_CreateDragImage(LISTVIEW_INFO *infoPtr, INT iItem, LPPOINT lppt)
#define ranges_check(ranges, desc)
static LRESULT CALLBACK EditLblWndProcW(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
static int textlenT(LPCWSTR text, BOOL isW)
static LRESULT LISTVIEW_ThemeChanged(const LISTVIEW_INFO *infoPtr)
static BOOL set_sub_item(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isW, BOOL *bChanged)
static BOOL LISTVIEW_SetItemFocus(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_UpdateHeaderSize(const LISTVIEW_INFO *infoPtr, INT nNewScrollPos)
static BOOL LISTVIEW_MoveIconTo(const LISTVIEW_INFO *infoPtr, INT nItem, const POINT *lppt, BOOL isNew)
static INT LISTVIEW_GetNextItem(const LISTVIEW_INFO *infoPtr, INT nItem, UINT uFlags)
static BOOL ranges_contain(RANGES ranges, INT nItem)
static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *prcErase)
static BOOL LISTVIEW_IsHeaderEnabled(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Size(LISTVIEW_INFO *infoPtr, int Width, int Height)
static DWORD LISTVIEW_SetHoverTime(LISTVIEW_INFO *infoPtr, DWORD dwHoverTime)
static BOOL LISTVIEW_SetTextBkColor(LISTVIEW_INFO *infoPtr, COLORREF color)
static LRESULT LISTVIEW_MouseWheel(LISTVIEW_INFO *infoPtr, INT wheelDelta)
static HIMAGELIST LISTVIEW_GetImageList(const LISTVIEW_INFO *infoPtr, INT nImageList)
#define LABEL_HOR_PADDING
static BOOL ranges_del(RANGES ranges, RANGE range)
static INT LISTVIEW_UpdateVScroll(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_ShowWindow(LISTVIEW_INFO *infoPtr, WPARAM bShown, LPARAM iStatus)
static INT LISTVIEW_StyleChanged(LISTVIEW_INFO *infoPtr, WPARAM wStyleType, const STYLESTRUCT *lpss)
static BOOL LISTVIEW_DrawTrackLine(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_DrawItemPart(LISTVIEW_INFO *infoPtr, LVITEMW *item, const NMLVCUSTOMDRAW *nmlvcd, const POINT *pos)
static DWORD LISTVIEW_ApproximateViewRect(const LISTVIEW_INFO *infoPtr, INT nItemCount, WORD wWidth, WORD wHeight)
static BOOL LISTVIEW_FillBkgnd(const LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *lprcBox)
static RANGES ranges_create(int count)
#define LISTVIEW_DUMP(iP)
static BOOL ranges_add(RANGES ranges, RANGE range)
static void ranges_dump(RANGES ranges)
static BOOL LISTVIEW_GetItemW(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem)
static BOOL LISTVIEW_EraseBkgnd(const LISTVIEW_INFO *infoPtr, HDC hdc)
static BOOL LISTVIEW_IsItemVisible(const LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL LISTVIEW_Update(LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL ranges_additem(RANGES ranges, INT nItem)
static BOOL LISTVIEW_GetItemExtT(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL isW)
static INT LISTVIEW_InsertItemT(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isW)
static RANGE iterator_range(const ITERATOR *i)
static LRESULT LISTVIEW_NotifyFormat(LISTVIEW_INFO *infoPtr, HWND hwndFrom, INT nCommand)
static LRESULT LISTVIEW_NCDestroy(LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_GetItemAtPt(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, POINT pt)
static void ranges_clear(RANGES ranges)
static BOOL LISTVIEW_GetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn, LPLVCOLUMNW lpColumn, BOOL isW)
static BOOL LISTVIEW_DeleteColumn(LISTVIEW_INFO *infoPtr, INT nColumn)
static LRESULT LISTVIEW_CancelEditLabel(LISTVIEW_INFO *infoPtr)
static LRESULT notify_listview(const LISTVIEW_INFO *infoPtr, INT code, LPNMLISTVIEW plvnm)
static LRESULT EditLblWndProcT(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL isW)
static int get_ansi_notification(UINT unicodeNotificationCode)
static LRESULT notify_forward_header(const LISTVIEW_INFO *infoPtr, NMHEADERW *lpnmhW)
static void scroll_list(LISTVIEW_INFO *infoPtr, INT dx, INT dy)
static void LISTVIEW_RefreshReport(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
static HIMAGELIST LISTVIEW_CreateCheckBoxIL(const LISTVIEW_INFO *infoPtr)
static const char * debugnmlistview(const NMLISTVIEW *plvnm)
static void column_fill_hditem(const LISTVIEW_INFO *infoPtr, HDITEMW *lphdi, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW)
static HIMAGELIST LISTVIEW_SetImageList(LISTVIEW_INFO *, INT, HIMAGELIST)
static BOOL LISTVIEW_Arrange(LISTVIEW_INFO *infoPtr, INT nAlignCode)
static BOOL is_redrawing(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_GetItemMetrics(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, LPRECT lprcBox, LPRECT lprcSelectBox, LPRECT lprcIcon, LPRECT lprcStateIcon, LPRECT lprcLabel)
static INT LISTVIEW_SetView(LISTVIEW_INFO *infoPtr, DWORD nView)
static HCURSOR LISTVIEW_SetHotCursor(LISTVIEW_INFO *infoPtr, HCURSOR hCursor)
static BOOL ranges_shift(RANGES ranges, INT nItem, INT delta, INT nUpper)
static void textfreeT(LPWSTR wstr, BOOL isW)
static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *infoPtr, LVITEMW *lpLVItem, BOOL isW)
static void iterator_empty(ITERATOR *i)
static LRESULT LISTVIEW_GetVersion(const LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_DrawFocusRect(const LISTVIEW_INFO *infoPtr, HDC hdc)
static void iterator_rangesitems(ITERATOR *i, RANGES ranges)
static LPCSTR debugscrollcode(int nScrollCode)
static void LISTVIEW_ShowFocusRect(const LISTVIEW_INFO *infoPtr, BOOL fShow)
static INT LISTVIEW_CalculateItemWidth(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_WMPaint(LISTVIEW_INFO *infoPtr, HDC hdc)
static INT CALLBACK ranges_cmp(LPVOID range1, LPVOID range2, LPARAM flags)
static void ranges_destroy(RANGES ranges)
static BOOL notify_deleteitem(const LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL LISTVIEW_EndEditLabelT(LISTVIEW_INFO *, BOOL, BOOL)
static LRESULT LISTVIEW_RButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static BOOL LISTVIEW_DeselectAllSkipItems(LISTVIEW_INFO *infoPtr, RANGES toSkip)
static BOOL LISTVIEW_DeselectAll(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Paint(LISTVIEW_INFO *infoPtr, HDC hdc)
static BOOL notify_measureitem(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Destroy(LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static COLUMN_INFO * LISTVIEW_GetColumnInfo(const LISTVIEW_INFO *infoPtr, INT nSubItem)
static void LISTVIEW_InvalidateItem(const LISTVIEW_INFO *infoPtr, INT nItem)
static BOOL textsetptrT(LPWSTR *dest, LPCWSTR src, BOOL isW)
static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, INT y)
static BOOL notify_click(const LISTVIEW_INFO *infoPtr, INT code, const LVHITTESTINFO *lvht)
static LRESULT LISTVIEW_MouseHover(LISTVIEW_INFO *infoPtr, INT x, INT y)
static DWORD LISTVIEW_SetIconSpacing(LISTVIEW_INFO *infoPtr, INT cx, INT cy)
static void LISTVIEW_MarqueeHighlight(LISTVIEW_INFO *infoPtr, const POINT *coords_orig, INT scroll)
static void LISTVIEW_RefreshOwnerDraw(const LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
static const WCHAR themeClass[]
static const char * debugrange(const RANGE *lprng)
#define TRAILING_HEADER_PADDING
static BOOL iterator_frameditems(ITERATOR *i, const LISTVIEW_INFO *infoPtr, const RECT *lprc)
static const char * debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW)
static BOOL LISTVIEW_SetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW)
static const char * debugscrollinfo(const SCROLLINFO *pScrollInfo)
static BOOL iterator_next(ITERATOR *i)
static LRESULT LISTVIEW_KillFocus(LISTVIEW_INFO *infoPtr)
static BOOL set_main_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isNew, BOOL isW, BOOL *bChanged)
static void LISTVIEW_NextIconPosTop(LISTVIEW_INFO *infoPtr, LPPOINT lpPos)
static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *, INT, LPRECT)
static BOOL LISTVIEW_SetItemState(LISTVIEW_INFO *, INT, const LVITEMW *)
static INT WINAPI LISTVIEW_CallBackCompare(LPVOID first, LPVOID second, LPARAM lParam)
static BOOL LISTVIEW_RedrawItems(const LISTVIEW_INFO *infoPtr, INT nFirst, INT nLast)
static const char * debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW)
static RANGES ranges_clone(RANGES ranges)
static int lstrncmpiW(LPCWSTR s1, LPCWSTR s2, int n)
static DWORD notify_postpaint(const LISTVIEW_INFO *infoPtr, NMLVCUSTOMDRAW *lpnmlvcd)
static BOOL LISTVIEW_SetColumnOrderArray(LISTVIEW_INFO *infoPtr, INT iCount, const INT *lpiArray)
static INT LISTVIEW_SetSelectionMark(LISTVIEW_INFO *infoPtr, INT nIndex)
static BOOL LISTVIEW_SetUnicodeFormat(LISTVIEW_INFO *infoPtr, BOOL unicode)
static INT LISTVIEW_SetHotItem(LISTVIEW_INFO *infoPtr, INT iIndex)
static BOOL LISTVIEW_GetViewRect(const LISTVIEW_INFO *, LPRECT)
static BOOL LISTVIEW_SetItemPosition(LISTVIEW_INFO *infoPtr, INT nItem, const POINT *pt)
static void LISTVIEW_ShiftFocus(LISTVIEW_INFO *infoPtr, INT focus, INT item, INT direction)
static LRESULT LISTVIEW_KeyDown(LISTVIEW_INFO *infoPtr, INT nVirtualKey, LONG lKeyData)
static BOOL iterator_remove_common_items(ITERATOR *iter1, ITERATOR *iter2)
static BOOL LISTVIEW_SetItemTextT(LISTVIEW_INFO *infoPtr, INT nItem, const LVITEMW *lpLVItem, BOOL isW)
#define DEFAULT_COLUMN_WIDTH
static LRESULT LISTVIEW_TrackMouse(const LISTVIEW_INFO *infoPtr, POINT pt)
static BOOL LISTVIEW_DeselectAllSkipItem(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_GetOrigin(const LISTVIEW_INFO *, LPPOINT)
static BOOL notify_dispinfoT(const LISTVIEW_INFO *infoPtr, UINT code, LPNMLVDISPINFOW pdi, BOOL isW)
struct tagITEMHDR ITEMHDR
static INT LISTVIEW_InsertColumnT(LISTVIEW_INFO *infoPtr, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW)
static UINT LISTVIEW_GetItemState(const LISTVIEW_INFO *, INT, UINT)
static INT LISTVIEW_GetStringWidthT(const LISTVIEW_INFO *, LPCWSTR, BOOL)
static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, INT)
static void LISTVIEW_InvalidateSubItem(const LISTVIEW_INFO *infoPtr, INT nItem, INT nSubItem)
static INT WINAPI LISTVIEW_CallBackCompareEx(LPVOID first, LPVOID second, LPARAM lParam)
static INT LISTVIEW_GetCountPerColumn(const LISTVIEW_INFO *infoPtr)
static void set_icon_size(SIZE *size, HIMAGELIST himl, BOOL is_small)
static BOOL LISTVIEW_GetItemT(const LISTVIEW_INFO *, LPLVITEMW, BOOL)
static BOOL LISTVIEW_IsHotTracking(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_GetAreaRect(const LISTVIEW_INFO *infoPtr, LPRECT lprcView)
static void LISTVIEW_RefreshReportGrid(LISTVIEW_INFO *infoPtr, HDC hdc)
struct tagDELAYED_ITEM_EDIT DELAYED_ITEM_EDIT
static void LISTVIEW_SetGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
static LONG LISTVIEW_GetItemSpacing(const LISTVIEW_INFO *infoPtr, BOOL bSmall)
static BOOL LISTVIEW_GetItemPosition(const LISTVIEW_INFO *, INT, LPPOINT)
struct tagITERATOR ITERATOR
static INT CALLBACK MapIdSearchCompare(LPVOID p1, LPVOID p2, LPARAM lParam)
static void LISTVIEW_UpdateItemSize(LISTVIEW_INFO *infoPtr)
static INT LISTVIEW_GetTopIndex(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_SetVersion(LISTVIEW_INFO *infoPtr, DWORD iVersion)
static BOOL iterator_frameditems_absolute(ITERATOR *i, const LISTVIEW_INFO *infoPtr, const RECT *frame)
static DWORD get_next_itemid(const LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_Scroll(LISTVIEW_INFO *, INT, INT)
static BOOL ranges_delitem(RANGES ranges, INT nItem)
#define TRAILING_LABEL_PADDING
static void notify_itemactivate(const LISTVIEW_INFO *infoPtr, const LVHITTESTINFO *htInfo)
static void LISTVIEW_ShiftIndices(LISTVIEW_INFO *infoPtr, INT nItem, INT direction)
static BOOL is_assignable_item(const LVITEMW *lpLVItem, LONG lStyle)
static void toggle_checkbox_state(LISTVIEW_INFO *infoPtr, INT nItem)
static INT LISTVIEW_GetCountPerRow(const LISTVIEW_INFO *infoPtr)
static void LISTVIEW_GetItemOrigin(const LISTVIEW_INFO *, INT, LPPOINT)
static LRESULT LISTVIEW_SetFont(LISTVIEW_INFO *infoPtr, HFONT hFont, WORD fRedraw)
static INT LISTVIEW_CreateHeader(LISTVIEW_INFO *infoPtr)
static BOOL LISTVIEW_SetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn, INT cx)
static INT LISTVIEW_StyleChanging(WPARAM wStyleType, STYLESTRUCT *lpss)
static HWND LISTVIEW_SetToolTips(LISTVIEW_INFO *infoPtr, HWND hwndNewToolTip)
static void LISTVIEW_RefreshList(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode)
static void LISTVIEW_InvalidateList(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_Command(LISTVIEW_INFO *, WPARAM, LPARAM)
static BOOL LISTVIEW_SetTextColor(LISTVIEW_INFO *infoPtr, COLORREF color)
#define DEBUG_BUFFER_SIZE
static void LISTVIEW_ScrollColumns(LISTVIEW_INFO *infoPtr, INT nColumn, INT dx)
static void LISTVIEW_InvalidateRect(const LISTVIEW_INFO *infoPtr, const RECT *rect)
static LRESULT WINAPI LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
struct tagITEMHDR * LPITEMHDR
static HWND LISTVIEW_EditLabelT(LISTVIEW_INFO *infoPtr, INT nItem, BOOL isW)
static INT LISTVIEW_FindItemA(const LISTVIEW_INFO *infoPtr, INT nStart, const LVFINDINFOA *lpFindInfo)
struct tagLISTVIEW_INFO LISTVIEW_INFO
static INT LISTVIEW_GetCountPerPage(const LISTVIEW_INFO *infoPtr)
static LRESULT LISTVIEW_RButtonDblClk(const LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static void ranges_assert(RANGES ranges, LPCSTR desc, const char *file, int line)
static BOOL LISTVIEW_AddGroupSelection(LISTVIEW_INFO *infoPtr, INT nItem)
static void LISTVIEW_GetItemBox(const LISTVIEW_INFO *, INT, LPRECT)
static BOOL iterator_visibleitems(ITERATOR *i, const LISTVIEW_INFO *infoPtr, HDC hdc)
static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL)
static INT ranges_itemcount(RANGES ranges)
static void LISTVIEW_UpdateSize(LISTVIEW_INFO *)
static LRESULT LISTVIEW_LButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y)
static BOOL iterator_prev(ITERATOR *i)
static void customdraw_fill(NMLVCUSTOMDRAW *lpnmlvcd, const LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *rcBounds, const LVITEMW *lplvItem)
static void LISTVIEW_ScrollOnInsert(LISTVIEW_INFO *infoPtr, INT nItem, INT dir)
static INT shift_item(const LISTVIEW_INFO *infoPtr, INT nShiftItem, INT nItem, INT direction)
static const char * debuglvhittestinfo(const LVHITTESTINFO *lpht)
static INT LISTVIEW_CalculateItemHeight(const LISTVIEW_INFO *infoPtr)
static INT LISTVIEW_UpdateHScroll(LISTVIEW_INFO *infoPtr)
#define STATEIMAGEINDEX(x)
struct tagCOLUMN_INFO COLUMN_INFO
static LRESULT LISTVIEW_NCCreate(HWND hwnd, WPARAM wParam, const CREATESTRUCTW *lpcs)
static BOOL LISTVIEW_DeleteAllItems(LISTVIEW_INFO *infoPtr, BOOL destroy)
static LRESULT CALLBACK EditLblWndProcA(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
struct tagSUBITEM_INFO SUBITEM_INFO
static SUBITEM_INFO * LISTVIEW_GetSubItemPtr(HDPA hdpaSubItems, INT nSubItem)
BOOL WINAPI Str_SetPtrW(LPWSTR *lppDest, LPCWSTR lpSrc)
const char * wine_dbg_sprintf(const char *format,...)
static __inline const char * debugstr_an(const char *s, int n)
#define WideCharToMultiByte
#define MultiByteToWideChar
static void cleanup(void)
DWORD WINAPI GetTickCount(VOID)
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME hTheme, int iPartId, int iStateId)
HRESULT WINAPI DrawThemeParentBackground(HWND hwnd, HDC hdc, RECT *prc)
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR classlist)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
INT WSAAPI select(IN INT s, IN OUT LPFD_SET readfds, IN OUT LPFD_SET writefds, IN OUT LPFD_SET exceptfds, IN CONST struct timeval *timeout)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
GLdouble GLdouble GLdouble r
GLenum GLuint GLenum GLsizei const GLchar * buf
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const struct newhuff ht[]
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
static const WCHAR textW[]
static const WCHAR desc[]
static BOOL CALLBACK callbackW(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA data, LPVOID context)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define cmp(status, error)
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
unsigned __int3264 UINT_PTR
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
#define LOCALE_USER_DEFAULT
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
#define NM_RELEASEDCAPTURE
#define CDDS_ITEMPOSTPAINT
#define LVM_GETCALLBACKMASK
#define LVM_DELETEALLITEMS
#define LVM_CREATEDRAGIMAGE
_Out_opt_ int _Out_opt_ int * cy
#define HDM_SETORDERARRAY
#define LVS_EX_ONECLICKACTIVATE
#define LVCFMT_COL_HAS_IMAGES
#define LVS_SHAREIMAGELISTS
#define LVM_INSERTCOLUMNA
#define CDDS_ITEMPREPAINT
#define LVS_NOCOLUMNHEADER
#define LVM_GETCOLUMNORDERARRAY
#define LVM_GETITEMSPACING
#define LPSTR_TEXTCALLBACKW
#define HDM_GETBITMAPMARGIN
#define LVM_SETCOLUMNWIDTH
#define LVS_EX_SNAPTOGRID
#define HDM_SETUNICODEFORMAT
#define CDRF_NOTIFYSUBITEMDRAW
#define LVS_EX_TWOCLICKACTIVATE
#define LVS_OWNERDRAWFIXED
#define LVM_GETITEMPOSITION
#define LVS_EX_HEADERDRAGDROP
#define LVN_ODSTATECHANGED
#define CDRF_NOTIFYITEMDRAW
#define LVS_SHOWSELALWAYS
#define LVM_SETITEMPOSITION
#define LVN_DELETEALLITEMS
#define LVM_SETCALLBACKMASK
#define LVM_SETUNICODEFORMAT
#define LVM_GETEDITCONTROL
#define LVM_GETNUMBEROFWORKAREAS
struct _IMAGELIST * HIMAGELIST
#define LVM_APPROXIMATEVIEWRECT
#define LVM_GETSTRINGWIDTHA
#define LVCFMT_BITMAP_ON_RIGHT
#define CDRF_NOTIFYPOSTPAINT
#define LVS_EX_CHECKBOXES
#define LVS_EX_FULLROWSELECT
#define LVS_SORTASCENDING
#define LVM_GETSUBITEMRECT
#define LVM_ENSUREVISIBLE
#define LVS_EX_TRACKSELECT
#define LVS_SORTDESCENDING
#define HDN_ITEMCHANGINGA
#define HDF_BITMAP_ON_RIGHT
#define LVN_BEGINLABELEDITA
#define LVM_SETSELECTIONMARK
#define LVM_CANCELEDITLABEL
#define LVN_ENDLABELEDITW
#define LVM_ISITEMVISIBLE
#define LVM_GETCOUNTPERPAGE
#define LVN_BEGINLABELEDITW
#define LVSIL_GROUPHEADER
#define HDN_ITEMCHANGINGW
#define LVCFMT_JUSTIFYMASK
#define HDM_GETORDERARRAY
#define LVM_SUBITEMHITTEST
#define LVN_ENDLABELEDITA
#define LVM_INSERTCOLUMNW
#define LVM_GETISEARCHSTRINGA
#define LVIR_SELECTBOUNDS
#define LVM_GETEXTENDEDLISTVIEWSTYLE
#define HDN_DIVIDERDBLCLICKW
struct tagTRACKMOUSEEVENT TRACKMOUSEEVENT
#define LVM_GETSELECTIONMARK
#define LVS_EX_SUBITEMIMAGES
#define LVM_SETICONSPACING
#define INDEXTOSTATEIMAGEMASK(i)
#define DPA_GetPtrCount(hdpa)
#define LVM_GETSELECTEDCOUNT
#define LVS_EX_DOUBLEBUFFER
#define LVM_GETUNICODEFORMAT
#define LVM_SETITEMPOSITION32
#define LVM_SETTEXTBKCOLOR
#define LVM_SETCOLUMNORDERARRAY
#define LV_VIEW_SMALLICON
#define LVHT_ONITEMSTATEICON
#define LVSCW_AUTOSIZE_USEHEADER
#define LVIS_STATEIMAGEMASK
#define HDN_DIVIDERDBLCLICKA
#define LVM_GETCOLUMNWIDTH
int(CALLBACK * PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM)
#define LVM_GETTEXTBKCOLOR
#define LVM_GETISEARCHSTRINGW
#define LVSICF_NOINVALIDATEALL
#define LVM_GETSTRINGWIDTHW
#define LVM_SETEXTENDEDLISTVIEWSTYLE
void redraw(int x, int y, int cx, int cy)
#define offsetof(TYPE, MEMBER)
COLORREF clrHighlightText
WCHAR szSearchParam[MAX_PATH]
DWORD lastKeyPressTimestamp
DELAYED_ITEM_EDIT itemEdit
TW_UINT32 TW_UINT16 TW_UINT16 MSG
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
_In_ HFONT _Out_ PUINT Height
FORCEINLINE BOOL is_icon(PCURICON_OBJECT object)
int WINAPI GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO * pdi
int WINAPI GetBkMode(_In_ HDC)
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
int WINAPI GetClipBox(_In_ HDC, _Out_ LPRECT)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
HRGN WINAPI CreateRectRgn(_In_ int, _In_ int, _In_ int, _In_ int)
COLORREF WINAPI GetTextColor(_In_ HDC)
BOOL WINAPI RectVisible(_In_ HDC, _In_ LPCRECT)
int WINAPI IntersectClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
int WINAPI ExcludeClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI GetTextExtentPointW(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI CombineRgn(_In_opt_ HRGN hrgnDest, _In_opt_ HRGN hrgnSrc1, _In_opt_ HRGN hrgnSrc2, _In_ int fnCombineMode)
COLORREF WINAPI GetBkColor(_In_ HDC)
BOOL WINAPI ExtTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_ UINT options, _In_opt_ const RECT *lprect, _In_reads_opt_(c) LPCWSTR lpString, _In_ UINT c, _In_reads_opt_(c) const INT *lpDx)
BOOL WINAPI PatBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI GetTextExtentPointA(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE lpsz)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
BOOL WINAPI GetTextExtentPoint32A(_In_ HDC hdc, _In_reads_(c) LPCSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
BOOL WINAPI GetTextExtentPoint32W(_In_ HDC hdc, _In_reads_(c) LPCWSTR lpString, _In_ int c, _Out_ LPSIZE psizl)
HWND WINAPI SetCapture(_In_ HWND hWnd)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define SetWindowLongPtrA
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define GetWindowLongPtrW
HDC WINAPI GetWindowDC(_In_opt_ HWND)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI ReleaseCapture(void)
DWORD WINAPI GetMessagePos(void)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct tagSCROLLINFO SCROLLINFO
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI DrawFrameControl(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
BOOL WINAPI GetCursorPos(_Out_ LPPOINT)
int WINAPI GetWindowTextLengthA(_In_ HWND)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
HDC WINAPI GetDCEx(_In_opt_ HWND, _In_opt_ HRGN, _In_ DWORD)
HWND WINAPI GetCapture(void)
#define SPI_GETICONTITLELOGFONT
#define WM_SYSCOLORCHANGE
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
UINT WINAPI GetDoubleClickTime(void)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
BOOL WINAPI IntersectRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
BOOL WINAPI UpdateWindow(_In_ HWND)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
_In_ int _Inout_ LPRECT lprc
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
BOOL WINAPI OffsetRect(_Inout_ LPRECT, _In_ int, _In_ int)
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI ShowScrollBar(_In_ HWND, _In_ int, _In_ BOOL)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
int WINAPI GetScrollPos(_In_ HWND, _In_ int)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
BOOL WINAPI UnionRect(_Out_ LPRECT, _In_ LPCRECT, _In_ LPCRECT)
#define SetWindowLongPtrW
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetScrollInfo(_In_ HWND, _In_ int, _Inout_ LPSCROLLINFO)
#define WM_WINDOWPOSCHANGED
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI ScrollWindowEx(_In_ HWND, _In_ int, _In_ int, _In_opt_ LPCRECT, _In_opt_ LPCRECT, _In_opt_ HRGN, _Out_opt_ LPRECT, _In_ UINT)
#define GCLP_HBRBACKGROUND
BOOL WINAPI EqualRect(_In_ LPCRECT, _In_ LPCRECT)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
SHORT WINAPI GetKeyState(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free