CommCtrl.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:320k
- #define LVM_GETNEXTITEM (LVM_FIRST + 12)
- #define ListView_GetNextItem(hwnd, i, flags)
- (int)SNDMSG((hwnd), LVM_GETNEXTITEM, (WPARAM)(int)(i), MAKELPARAM((flags), 0))
- #define LVFI_PARAM 0x0001
- #define LVFI_STRING 0x0002
- #define LVFI_PARTIAL 0x0008
- #define LVFI_WRAP 0x0020
- #define LVFI_NEARESTXY 0x0040
- #if (_WIN32_IE >= 0x0300)
- #define LV_FINDINFOA LVFINDINFOA
- #define LV_FINDINFOW LVFINDINFOW
- #else
- #define tagLVFINDINFOA _LV_FINDINFOA
- #define LVFINDINFOA LV_FINDINFOA
- #define tagLVFINDINFOW _LV_FINDINFOW
- #define LVFINDINFOW LV_FINDINFOW
- #endif
- #define LV_FINDINFO LVFINDINFO
- typedef struct tagLVFINDINFOA
- {
- UINT flags;
- LPCSTR psz;
- LPARAM lParam;
- POINT pt;
- UINT vkDirection;
- } LVFINDINFOA, *LPFINDINFOA;
- typedef struct tagLVFINDINFOW
- {
- UINT flags;
- LPCWSTR psz;
- LPARAM lParam;
- POINT pt;
- UINT vkDirection;
- } LVFINDINFOW, *LPFINDINFOW;
- #ifdef UNICODE
- #define LVFINDINFO LVFINDINFOW
- #else
- #define LVFINDINFO LVFINDINFOA
- #endif
- #define LVM_FINDITEMA (LVM_FIRST + 13)
- #define LVM_FINDITEMW (LVM_FIRST + 83)
- #ifdef UNICODE
- #define LVM_FINDITEM LVM_FINDITEMW
- #else
- #define LVM_FINDITEM LVM_FINDITEMA
- #endif
- #define ListView_FindItem(hwnd, iStart, plvfi)
- (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO *)(plvfi))
- #define LVIR_BOUNDS 0
- #define LVIR_ICON 1
- #define LVIR_LABEL 2
- #define LVIR_SELECTBOUNDS 3
- #define LVM_GETITEMRECT (LVM_FIRST + 14)
- #define ListView_GetItemRect(hwnd, i, prc, code)
- (BOOL)SNDMSG((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i),
- ((prc) ? (((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL))
- #define LVM_SETITEMPOSITION (LVM_FIRST + 15)
- #define ListView_SetItemPosition(hwndLV, i, x, y)
- (BOOL)SNDMSG((hwndLV), LVM_SETITEMPOSITION, (WPARAM)(int)(i), MAKELPARAM((x), (y)))
- #define LVM_GETITEMPOSITION (LVM_FIRST + 16)
- #define ListView_GetItemPosition(hwndLV, i, ppt)
- (BOOL)SNDMSG((hwndLV), LVM_GETITEMPOSITION, (WPARAM)(int)(i), (LPARAM)(POINT *)(ppt))
- #define LVM_GETSTRINGWIDTHA (LVM_FIRST + 17)
- #define LVM_GETSTRINGWIDTHW (LVM_FIRST + 87)
- #ifdef UNICODE
- #define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
- #else
- #define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
- #endif
- #define ListView_GetStringWidth(hwndLV, psz)
- (int)SNDMSG((hwndLV), LVM_GETSTRINGWIDTH, 0, (LPARAM)(LPCTSTR)(psz))
- #define LVHT_NOWHERE 0x0001
- #define LVHT_ONITEMICON 0x0002
- #define LVHT_ONITEMLABEL 0x0004
- #define LVHT_ONITEMSTATEICON 0x0008
- #define LVHT_ONITEM (LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON)
- #define LVHT_ABOVE 0x0008
- #define LVHT_BELOW 0x0010
- #define LVHT_TORIGHT 0x0020
- #define LVHT_TOLEFT 0x0040
- #if (_WIN32_IE >= 0x0300)
- #define LV_HITTESTINFO LVHITTESTINFO
- #else
- #define tagLVHITTESTINFO _LV_HITTESTINFO
- #define LVHITTESTINFO LV_HITTESTINFO
- #endif
- #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO, iItem)
- typedef struct tagLVHITTESTINFO
- {
- POINT pt;
- UINT flags;
- int iItem;
- #if (_WIN32_IE >= 0x0300)
- int iSubItem; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
- #endif
- } LVHITTESTINFO, *LPLVHITTESTINFO;
- #define LVM_HITTEST (LVM_FIRST + 18)
- #define ListView_HitTest(hwndLV, pinfo)
- (int)SNDMSG((hwndLV), LVM_HITTEST, 0, (LPARAM)(LV_HITTESTINFO *)(pinfo))
- #define LVM_ENSUREVISIBLE (LVM_FIRST + 19)
- #define ListView_EnsureVisible(hwndLV, i, fPartialOK)
- (BOOL)SNDMSG((hwndLV), LVM_ENSUREVISIBLE, (WPARAM)(int)(i), MAKELPARAM((fPartialOK), 0))
- #define LVM_SCROLL (LVM_FIRST + 20)
- #define ListView_Scroll(hwndLV, dx, dy)
- (BOOL)SNDMSG((hwndLV), LVM_SCROLL, (WPARAM)(int)(dx), (LPARAM)(int)(dy))
- #define LVM_REDRAWITEMS (LVM_FIRST + 21)
- #define ListView_RedrawItems(hwndLV, iFirst, iLast)
- (BOOL)SNDMSG((hwndLV), LVM_REDRAWITEMS, (WPARAM)(int)(iFirst), (LPARAM)(int)(iLast))
- #define LVA_DEFAULT 0x0000
- #define LVA_ALIGNLEFT 0x0001
- #define LVA_ALIGNTOP 0x0002
- #define LVA_SNAPTOGRID 0x0005
- #define LVM_ARRANGE (LVM_FIRST + 22)
- #define ListView_Arrange(hwndLV, code)
- (BOOL)SNDMSG((hwndLV), LVM_ARRANGE, (WPARAM)(UINT)(code), 0L)
- #define LVM_EDITLABELA (LVM_FIRST + 23)
- #define LVM_EDITLABELW (LVM_FIRST + 118)
- #ifdef UNICODE
- #define LVM_EDITLABEL LVM_EDITLABELW
- #else
- #define LVM_EDITLABEL LVM_EDITLABELA
- #endif
- #define ListView_EditLabel(hwndLV, i)
- (HWND)SNDMSG((hwndLV), LVM_EDITLABEL, (WPARAM)(int)(i), 0L)
- #define LVM_GETEDITCONTROL (LVM_FIRST + 24)
- #define ListView_GetEditControl(hwndLV)
- (HWND)SNDMSG((hwndLV), LVM_GETEDITCONTROL, 0, 0L)
- #if (_WIN32_IE >= 0x0300)
- #define LV_COLUMNA LVCOLUMNA
- #define LV_COLUMNW LVCOLUMNW
- #else
- #define tagLVCOLUMNA _LV_COLUMNA
- #define LVCOLUMNA LV_COLUMNA
- #define tagLVCOLUMNW _LV_COLUMNW
- #define LVCOLUMNW LV_COLUMNW
- #endif
- #define LV_COLUMN LVCOLUMN
- #define LVCOLUMNA_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
- #define LVCOLUMNW_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
- typedef struct tagLVCOLUMNA
- {
- UINT mask;
- int fmt;
- int cx;
- LPSTR pszText;
- int cchTextMax;
- int iSubItem;
- #if (_WIN32_IE >= 0x0300)
- int iImage;
- int iOrder;
- #endif
- } LVCOLUMNA, *LPLVCOLUMNA;
- typedef struct tagLVCOLUMNW
- {
- UINT mask;
- int fmt;
- int cx;
- LPWSTR pszText;
- int cchTextMax;
- int iSubItem;
- #if (_WIN32_IE >= 0x0300)
- int iImage;
- int iOrder;
- #endif
- } LVCOLUMNW, *LPLVCOLUMNW;
- #ifdef UNICODE
- #define LVCOLUMN LVCOLUMNW
- #define LPLVCOLUMN LPLVCOLUMNW
- #define LVCOLUMN_V1_SIZE LVCOLUMNW_V1_SIZE
- #else
- #define LVCOLUMN LVCOLUMNA
- #define LPLVCOLUMN LPLVCOLUMNA
- #define LVCOLUMN_V1_SIZE LVCOLUMNA_V1_SIZE
- #endif
- #define LVCF_FMT 0x0001
- #define LVCF_WIDTH 0x0002
- #define LVCF_TEXT 0x0004
- #define LVCF_SUBITEM 0x0008
- #if (_WIN32_IE >= 0x0300)
- #define LVCF_IMAGE 0x0010
- #define LVCF_ORDER 0x0020
- #endif
- #define LVCFMT_LEFT 0x0000
- #define LVCFMT_RIGHT 0x0001
- #define LVCFMT_CENTER 0x0002
- #define LVCFMT_JUSTIFYMASK 0x0003
- #if (_WIN32_IE >= 0x0300)
- #define LVCFMT_IMAGE 0x0800
- #define LVCFMT_BITMAP_ON_RIGHT 0x1000
- #define LVCFMT_COL_HAS_IMAGES 0x8000
- #endif
- #define LVM_GETCOLUMNA (LVM_FIRST + 25)
- #define LVM_GETCOLUMNW (LVM_FIRST + 95)
- #ifdef UNICODE
- #define LVM_GETCOLUMN LVM_GETCOLUMNW
- #else
- #define LVM_GETCOLUMN LVM_GETCOLUMNA
- #endif
- #define ListView_GetColumn(hwnd, iCol, pcol)
- (BOOL)SNDMSG((hwnd), LVM_GETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(LV_COLUMN *)(pcol))
- #define LVM_SETCOLUMNA (LVM_FIRST + 26)
- #define LVM_SETCOLUMNW (LVM_FIRST + 96)
- #ifdef UNICODE
- #define LVM_SETCOLUMN LVM_SETCOLUMNW
- #else
- #define LVM_SETCOLUMN LVM_SETCOLUMNA
- #endif
- #define ListView_SetColumn(hwnd, iCol, pcol)
- (BOOL)SNDMSG((hwnd), LVM_SETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol))
- #define LVM_INSERTCOLUMNA (LVM_FIRST + 27)
- #define LVM_INSERTCOLUMNW (LVM_FIRST + 97)
- #ifdef UNICODE
- # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
- #else
- # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
- #endif
- #define ListView_InsertColumn(hwnd, iCol, pcol)
- (int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol))
- #define LVM_DELETECOLUMN (LVM_FIRST + 28)
- #define ListView_DeleteColumn(hwnd, iCol)
- (BOOL)SNDMSG((hwnd), LVM_DELETECOLUMN, (WPARAM)(int)(iCol), 0)
- #define LVM_GETCOLUMNWIDTH (LVM_FIRST + 29)
- #define ListView_GetColumnWidth(hwnd, iCol)
- (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0)
- #define LVSCW_AUTOSIZE -1
- #define LVSCW_AUTOSIZE_USEHEADER -2
- #define LVM_SETCOLUMNWIDTH (LVM_FIRST + 30)
- #define ListView_SetColumnWidth(hwnd, iCol, cx)
- (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0))
- #if (_WIN32_IE >= 0x0300)
- #define LVM_GETHEADER (LVM_FIRST + 31)
- #define ListView_GetHeader(hwnd)
- (HWND)SNDMSG((hwnd), LVM_GETHEADER, 0, 0L)
- #endif
- #define LVM_CREATEDRAGIMAGE (LVM_FIRST + 33)
- #define ListView_CreateDragImage(hwnd, i, lpptUpLeft)
- (HIMAGELIST)SNDMSG((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft))
- #define LVM_GETVIEWRECT (LVM_FIRST + 34)
- #define ListView_GetViewRect(hwnd, prc)
- (BOOL)SNDMSG((hwnd), LVM_GETVIEWRECT, 0, (LPARAM)(RECT *)(prc))
- #define LVM_GETTEXTCOLOR (LVM_FIRST + 35)
- #define ListView_GetTextColor(hwnd)
- (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, 0L)
- #define LVM_SETTEXTCOLOR (LVM_FIRST + 36)
- #define ListView_SetTextColor(hwnd, clrText)
- (BOOL)SNDMSG((hwnd), LVM_SETTEXTCOLOR, 0, (LPARAM)(COLORREF)(clrText))
- #define LVM_GETTEXTBKCOLOR (LVM_FIRST + 37)
- #define ListView_GetTextBkColor(hwnd)
- (COLORREF)SNDMSG((hwnd), LVM_GETTEXTBKCOLOR, 0, 0L)
- #define LVM_SETTEXTBKCOLOR (LVM_FIRST + 38)
- #define ListView_SetTextBkColor(hwnd, clrTextBk)
- (BOOL)SNDMSG((hwnd), LVM_SETTEXTBKCOLOR, 0, (LPARAM)(COLORREF)(clrTextBk))
- #define LVM_GETTOPINDEX (LVM_FIRST + 39)
- #define ListView_GetTopIndex(hwndLV)
- (int)SNDMSG((hwndLV), LVM_GETTOPINDEX, 0, 0)
- #define LVM_GETCOUNTPERPAGE (LVM_FIRST + 40)
- #define ListView_GetCountPerPage(hwndLV)
- (int)SNDMSG((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0)
- #define LVM_GETORIGIN (LVM_FIRST + 41)
- #define ListView_GetOrigin(hwndLV, ppt)
- (BOOL)SNDMSG((hwndLV), LVM_GETORIGIN, (WPARAM)0, (LPARAM)(POINT *)(ppt))
- #define LVM_UPDATE (LVM_FIRST + 42)
- #define ListView_Update(hwndLV, i)
- (BOOL)SNDMSG((hwndLV), LVM_UPDATE, (WPARAM)(i), 0L)
- #define LVM_SETITEMSTATE (LVM_FIRST + 43)
- #define ListView_SetItemState(hwndLV, i, data, mask)
- { LV_ITEM _ms_lvi;
- _ms_lvi.stateMask = mask;
- _ms_lvi.state = data;
- SNDMSG((hwndLV), LVM_SETITEMSTATE, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi);
- }
- #if (_WIN32_IE >= 0x0300)
- #define ListView_SetCheckState(hwndLV, i, fCheck)
- ListView_SetItemState(hwndLV, i, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), LVIS_STATEIMAGEMASK)
- #endif
- #define LVM_GETITEMSTATE (LVM_FIRST + 44)
- #define ListView_GetItemState(hwndLV, i, mask)
- (UINT)SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), (LPARAM)(mask))
- #if (_WIN32_IE >= 0x0300)
- #define ListView_GetCheckState(hwndLV, i)
- ((((UINT)(SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), LVIS_STATEIMAGEMASK))) >> 12) -1)
- #endif
- #define LVM_GETITEMTEXTA (LVM_FIRST + 45)
- #define LVM_GETITEMTEXTW (LVM_FIRST + 115)
- #ifdef UNICODE
- #define LVM_GETITEMTEXT LVM_GETITEMTEXTW
- #else
- #define LVM_GETITEMTEXT LVM_GETITEMTEXTA
- #endif
- #define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_)
- { LV_ITEM _ms_lvi;
- _ms_lvi.iSubItem = iSubItem_;
- _ms_lvi.cchTextMax = cchTextMax_;
- _ms_lvi.pszText = pszText_;
- SNDMSG((hwndLV), LVM_GETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi);
- }
- #define LVM_SETITEMTEXTA (LVM_FIRST + 46)
- #define LVM_SETITEMTEXTW (LVM_FIRST + 116)
- #ifdef UNICODE
- #define LVM_SETITEMTEXT LVM_SETITEMTEXTW
- #else
- #define LVM_SETITEMTEXT LVM_SETITEMTEXTA
- #endif
- #define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_)
- { LV_ITEM _ms_lvi;
- _ms_lvi.iSubItem = iSubItem_;
- _ms_lvi.pszText = pszText_;
- SNDMSG((hwndLV), LVM_SETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi);
- }
- #if (_WIN32_IE >= 0x0300)
- // these flags only apply to LVS_OWNERDATA listviews in report or list mode
- #define LVSICF_NOINVALIDATEALL 0x00000001
- #define LVSICF_NOSCROLL 0x00000002
- #endif
- #define LVM_SETITEMCOUNT (LVM_FIRST + 47)
- #define ListView_SetItemCount(hwndLV, cItems)
- SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), 0)
- #if (_WIN32_IE >= 0x0300)
- #define ListView_SetItemCountEx(hwndLV, cItems, dwFlags)
- SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), (LPARAM)(dwFlags))
- #endif
- typedef int (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
- #define LVM_SORTITEMS (LVM_FIRST + 48)
- #define ListView_SortItems(hwndLV, _pfnCompare, _lPrm)
- (BOOL)SNDMSG((hwndLV), LVM_SORTITEMS, (WPARAM)(LPARAM)(_lPrm),
- (LPARAM)(PFNLVCOMPARE)(_pfnCompare))
- #define LVM_SETITEMPOSITION32 (LVM_FIRST + 49)
- #define ListView_SetItemPosition32(hwndLV, i, x0, y0)
- { POINT ptNewPos;
- ptNewPos.x = x0; ptNewPos.y = y0;
- SNDMSG((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), (LPARAM)&ptNewPos);
- }
- #define LVM_GETSELECTEDCOUNT (LVM_FIRST + 50)
- #define ListView_GetSelectedCount(hwndLV)
- (UINT)SNDMSG((hwndLV), LVM_GETSELECTEDCOUNT, 0, 0L)
- #define LVM_GETITEMSPACING (LVM_FIRST + 51)
- #define ListView_GetItemSpacing(hwndLV, fSmall)
- (DWORD)SNDMSG((hwndLV), LVM_GETITEMSPACING, fSmall, 0L)
- #define LVM_GETISEARCHSTRINGA (LVM_FIRST + 52)
- #define LVM_GETISEARCHSTRINGW (LVM_FIRST + 117)
- #ifdef UNICODE
- #define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
- #else
- #define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
- #endif
- #define ListView_GetISearchString(hwndLV, lpsz)
- (BOOL)SNDMSG((hwndLV), LVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz))
- #if (_WIN32_IE >= 0x0300)
- #define LVM_SETICONSPACING (LVM_FIRST + 53)
- // -1 for cx and cy means we'll use the default (system settings)
- // 0 for cx or cy means use the current setting (allows you to change just one param)
- #define ListView_SetIconSpacing(hwndLV, cx, cy)
- (DWORD)SNDMSG((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy))
- #define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST + 54) // optional wParam == mask
- #define ListView_SetExtendedListViewStyle(hwndLV, dw)
- (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw)
- #if (_WIN32_IE >= 0x0400)
- #define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw)
- (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, dwMask, dw)
- #endif
- #define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST + 55)
- #define ListView_GetExtendedListViewStyle(hwndLV)
- (DWORD)SNDMSG((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
- #define LVS_EX_GRIDLINES 0x00000001
- #define LVS_EX_SUBITEMIMAGES 0x00000002
- #define LVS_EX_CHECKBOXES 0x00000004
- #define LVS_EX_TRACKSELECT 0x00000008
- #define LVS_EX_HEADERDRAGDROP 0x00000010
- #define LVS_EX_FULLROWSELECT 0x00000020 // applies to report mode only
- #define LVS_EX_ONECLICKACTIVATE 0x00000040
- #define LVS_EX_TWOCLICKACTIVATE 0x00000080
- #if (_WIN32_IE >= 0x0400)
- #define LVS_EX_FLATSB 0x00000100
- #define LVS_EX_REGIONAL 0x00000200
- #define LVS_EX_INFOTIP 0x00000400 // listview does InfoTips for you
- #define LVS_EX_UNDERLINEHOT 0x00000800
- #define LVS_EX_UNDERLINECOLD 0x00001000
- #define LVS_EX_MULTIWORKAREAS 0x00002000
- #endif
- #if (_WIN32_IE >= 0x0500)
- #define LVS_EX_LABELTIP 0x00004000 // listview unfolds partly hidden labels if it does not have infotip text
- #define LVS_EX_BORDERSELECT 0x00008000 // border selection style instead of highlight
- #endif // End (_WIN32_IE >= 0x0500)
- #if (_WIN32_WINNT >= 0x501)
- #define LVS_EX_DOUBLEBUFFER 0x00010000
- #define LVS_EX_HIDELABELS 0x00020000
- #define LVS_EX_SINGLEROW 0x00040000
- #define LVS_EX_SNAPTOGRID 0x00080000 // Icons automatically snap to grid.
- #define LVS_EX_SIMPLESELECT 0x00100000 // Also changes overlay rendering to top right for icon mode.
- #endif
- #define LVM_GETSUBITEMRECT (LVM_FIRST + 56)
- #define ListView_GetSubItemRect(hwnd, iItem, iSubItem, code, prc)
- (BOOL)SNDMSG((hwnd), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem),
- ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : (LPARAM)(LPRECT)NULL))
- #define LVM_SUBITEMHITTEST (LVM_FIRST + 57)
- #define ListView_SubItemHitTest(hwnd, plvhti)
- (int)SNDMSG((hwnd), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti))
- #define LVM_SETCOLUMNORDERARRAY (LVM_FIRST + 58)
- #define ListView_SetColumnOrderArray(hwnd, iCount, pi)
- (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi))
- #define LVM_GETCOLUMNORDERARRAY (LVM_FIRST + 59)
- #define ListView_GetColumnOrderArray(hwnd, iCount, pi)
- (BOOL)SNDMSG((hwnd), LVM_GETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi))
- #define LVM_SETHOTITEM (LVM_FIRST + 60)
- #define ListView_SetHotItem(hwnd, i)
- (int)SNDMSG((hwnd), LVM_SETHOTITEM, (WPARAM)(i), 0)
- #define LVM_GETHOTITEM (LVM_FIRST + 61)
- #define ListView_GetHotItem(hwnd)
- (int)SNDMSG((hwnd), LVM_GETHOTITEM, 0, 0)
- #define LVM_SETHOTCURSOR (LVM_FIRST + 62)
- #define ListView_SetHotCursor(hwnd, hcur)
- (HCURSOR)SNDMSG((hwnd), LVM_SETHOTCURSOR, 0, (LPARAM)(hcur))
- #define LVM_GETHOTCURSOR (LVM_FIRST + 63)
- #define ListView_GetHotCursor(hwnd)
- (HCURSOR)SNDMSG((hwnd), LVM_GETHOTCURSOR, 0, 0)
- #define LVM_APPROXIMATEVIEWRECT (LVM_FIRST + 64)
- #define ListView_ApproximateViewRect(hwnd, iWidth, iHeight, iCount)
- (DWORD)SNDMSG((hwnd), LVM_APPROXIMATEVIEWRECT, iCount, MAKELPARAM(iWidth, iHeight))
- #endif // _WIN32_IE >= 0x0300
- #if (_WIN32_IE >= 0x0400)
- #define LV_MAX_WORKAREAS 16
- #define LVM_SETWORKAREAS (LVM_FIRST + 65)
- #define ListView_SetWorkAreas(hwnd, nWorkAreas, prc)
- (BOOL)SNDMSG((hwnd), LVM_SETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc))
- #define LVM_GETWORKAREAS (LVM_FIRST + 70)
- #define ListView_GetWorkAreas(hwnd, nWorkAreas, prc)
- (BOOL)SNDMSG((hwnd), LVM_GETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc))
- #define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST + 73)
- #define ListView_GetNumberOfWorkAreas(hwnd, pnWorkAreas)
- (BOOL)SNDMSG((hwnd), LVM_GETNUMBEROFWORKAREAS, 0, (LPARAM)(UINT *)(pnWorkAreas))
- #define LVM_GETSELECTIONMARK (LVM_FIRST + 66)
- #define ListView_GetSelectionMark(hwnd)
- (int)SNDMSG((hwnd), LVM_GETSELECTIONMARK, 0, 0)
- #define LVM_SETSELECTIONMARK (LVM_FIRST + 67)
- #define ListView_SetSelectionMark(hwnd, i)
- (int)SNDMSG((hwnd), LVM_SETSELECTIONMARK, 0, (LPARAM)(i))
- #define LVM_SETHOVERTIME (LVM_FIRST + 71)
- #define ListView_SetHoverTime(hwndLV, dwHoverTimeMs)
- (DWORD)SNDMSG((hwndLV), LVM_SETHOVERTIME, 0, (LPARAM)(dwHoverTimeMs))
- #define LVM_GETHOVERTIME (LVM_FIRST + 72)
- #define ListView_GetHoverTime(hwndLV)
- (DWORD)SNDMSG((hwndLV), LVM_GETHOVERTIME, 0, 0)
- #define LVM_SETTOOLTIPS (LVM_FIRST + 74)
- #define ListView_SetToolTips(hwndLV, hwndNewHwnd)
- (HWND)SNDMSG((hwndLV), LVM_SETTOOLTIPS, (WPARAM)(hwndNewHwnd), 0)
- #define LVM_GETTOOLTIPS (LVM_FIRST + 78)
- #define ListView_GetToolTips(hwndLV)
- (HWND)SNDMSG((hwndLV), LVM_GETTOOLTIPS, 0, 0)
- #define LVM_SORTITEMSEX (LVM_FIRST + 81)
- #define ListView_SortItemsEx(hwndLV, _pfnCompare, _lPrm)
- (BOOL)SNDMSG((hwndLV), LVM_SORTITEMSEX, (WPARAM)(LPARAM)(_lPrm), (LPARAM)(PFNLVCOMPARE)(_pfnCompare))
- typedef struct tagLVBKIMAGEA
- {
- ULONG ulFlags; // LVBKIF_*
- HBITMAP hbm;
- LPSTR pszImage;
- UINT cchImageMax;
- int xOffsetPercent;
- int yOffsetPercent;
- } LVBKIMAGEA, *LPLVBKIMAGEA;
- typedef struct tagLVBKIMAGEW
- {
- ULONG ulFlags; // LVBKIF_*
- HBITMAP hbm;
- LPWSTR pszImage;
- UINT cchImageMax;
- int xOffsetPercent;
- int yOffsetPercent;
- } LVBKIMAGEW, *LPLVBKIMAGEW;
- #define LVBKIF_SOURCE_NONE 0x00000000
- #define LVBKIF_SOURCE_HBITMAP 0x00000001
- #define LVBKIF_SOURCE_URL 0x00000002
- #define LVBKIF_SOURCE_MASK 0x00000003
- #define LVBKIF_STYLE_NORMAL 0x00000000
- #define LVBKIF_STYLE_TILE 0x00000010
- #define LVBKIF_STYLE_MASK 0x00000010
- #if (_WIN32_WINNT >= 0x501)
- #define LVBKIF_FLAG_TILEOFFSET 0x00000100
- #define LVBKIF_TYPE_WATERMARK 0x10000000
- #endif
- #define LVM_SETBKIMAGEA (LVM_FIRST + 68)
- #define LVM_SETBKIMAGEW (LVM_FIRST + 138)
- #define LVM_GETBKIMAGEA (LVM_FIRST + 69)
- #define LVM_GETBKIMAGEW (LVM_FIRST + 139)
- #if (_WIN32_WINNT >= 0x501)
- #define LVM_SETSELECTEDCOLUMN (LVM_FIRST + 140)
- #define ListView_SetSelectedColumn(hwnd, iCol)
- SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0)
- #define LVM_SETTILEWIDTH (LVM_FIRST + 141)
- #define ListView_SetTileWidth(hwnd, cpWidth)
- SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0)
- #define LV_VIEW_ICON 0x0000
- #define LV_VIEW_DETAILS 0x0001
- #define LV_VIEW_SMALLICON 0x0002
- #define LV_VIEW_LIST 0x0003
- #define LV_VIEW_TILE 0x0004
- #define LV_VIEW_MAX 0x0004
- #define LVM_SETVIEW (LVM_FIRST + 142)
- #define ListView_SetView(hwnd, iView)
- (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0)
- #define LVM_GETVIEW (LVM_FIRST + 143)
- #define ListView_GetView(hwnd)
- (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0)
- #define LVGF_NONE 0x00000000
- #define LVGF_HEADER 0x00000001
- #define LVGF_FOOTER 0x00000002
- #define LVGF_STATE 0x00000004
- #define LVGF_ALIGN 0x00000008
- #define LVGF_GROUPID 0x00000010
- #define LVGS_NORMAL 0x00000000
- #define LVGS_COLLAPSED 0x00000001
- #define LVGS_HIDDEN 0x00000002
- #define LVGA_HEADER_LEFT 0x00000001
- #define LVGA_HEADER_CENTER 0x00000002
- #define LVGA_HEADER_RIGHT 0x00000004 // Don't forget to validate exclusivity
- #define LVGA_FOOTER_LEFT 0x00000008
- #define LVGA_FOOTER_CENTER 0x00000010
- #define LVGA_FOOTER_RIGHT 0x00000020 // Don't forget to validate exclusivity
- typedef struct tagLVGROUP
- {
- UINT cbSize;
- UINT mask;
- LPWSTR pszHeader;
- int cchHeader;
- LPWSTR pszFooter;
- int cchFooter;
- int iGroupId;
- UINT stateMask;
- UINT state;
- UINT uAlign;
- } LVGROUP, *PLVGROUP;
- #define LVM_INSERTGROUP (LVM_FIRST + 145)
- #define ListView_InsertGroup(hwnd, index, pgrp)
- SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp)
- #define LVM_SETGROUPINFO (LVM_FIRST + 147)
- #define ListView_SetGroupInfo(hwnd, iGroupId, pgrp)
- SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
- #define LVM_GETGROUPINFO (LVM_FIRST + 149)
- #define ListView_GetGroupInfo(hwnd, iGroupId, pgrp)
- SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
- #define LVM_REMOVEGROUP (LVM_FIRST + 150)
- #define ListView_RemoveGroup(hwnd, iGroupId)
- SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0)
- #define LVM_MOVEGROUP (LVM_FIRST + 151)
- #define ListView_MoveGroup(hwnd, iGroupId, toIndex)
- SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex)
- #define LVM_MOVEITEMTOGROUP (LVM_FIRST + 154)
- #define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo)
- SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo)
- #define LVGMF_NONE 0x00000000
- #define LVGMF_BORDERSIZE 0x00000001
- #define LVGMF_BORDERCOLOR 0x00000002
- #define LVGMF_TEXTCOLOR 0x00000004
- typedef struct tagLVGROUPMETRICS
- {
- UINT cbSize;
- UINT mask;
- UINT Left;
- UINT Top;
- UINT Right;
- UINT Bottom;
- COLORREF crLeft;
- COLORREF crTop;
- COLORREF crRight;
- COLORREF crBottom;
- COLORREF crHeader;
- COLORREF crFooter;
- } LVGROUPMETRICS, *PLVGROUPMETRICS;
- #define LVM_SETGROUPMETRICS (LVM_FIRST + 155)
- #define ListView_SetGroupMetrics(hwnd, pGroupMetrics)
- SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
- #define LVM_GETGROUPMETRICS (LVM_FIRST + 156)
- #define ListView_GetGroupMetrics(hwnd, pGroupMetrics)
- SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
- #define LVM_ENABLEGROUPVIEW (LVM_FIRST + 157)
- #define ListView_EnableGroupView(hwnd, fEnable)
- SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0)
- typedef int (CALLBACK *PFNLVGROUPCOMPARE)(int, int, void *);
- #define LVM_SORTGROUPS (LVM_FIRST + 158)
- #define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv)
- SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv)
- typedef struct tagLVINSERTGROUPSORTED
- {
- PFNLVGROUPCOMPARE pfnGroupCompare;
- void *pvData;
- LVGROUP lvGroup;
- }LVINSERTGROUPSORTED, *PLVINSERTGROUPSORTED;
- #define LVM_INSERTGROUPSORTED (LVM_FIRST + 159)
- #define ListView_InsertGroupSorted(hwnd, structInsert)
- SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0)
- #define LVM_REMOVEALLGROUPS (LVM_FIRST + 160)
- #define ListView_RemoveAllGroups(hwnd)
- SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0)
- #define LVM_HASGROUP (LVM_FIRST + 161)
- #define ListView_HasGroup(hwnd, dwGroupId)
- SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0)
- #define LVTVIF_AUTOSIZE 0x00000000
- #define LVTVIF_FIXEDWIDTH 0x00000001
- #define LVTVIF_FIXEDHEIGHT 0x00000002
- #define LVTVIF_FIXEDSIZE 0x00000003
- #define LVTVIM_TILESIZE 0x00000001
- #define LVTVIM_COLUMNS 0x00000002
- #define LVTVIM_LABELMARGIN 0x00000004
- typedef struct tagLVTILEVIEWINFO
- {
- UINT cbSize;
- DWORD dwMask; //LVTVIM_*
- DWORD dwFlags; //LVTVIF_*
- SIZE sizeTile;
- int cLines;
- RECT rcLabelMargin;
- } LVTILEVIEWINFO, *PLVTILEVIEWINFO;
- typedef struct tagLVTILEINFO
- {
- UINT cbSize;
- int iItem;
- UINT cColumns;
- PUINT puColumns;
- } LVTILEINFO, *PLVTILEINFO;
- #define LVM_SETTILEVIEWINFO (LVM_FIRST + 162)
- #define ListView_SetTileViewInfo(hwnd, ptvi)
- SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi)
- #define LVM_GETTILEVIEWINFO (LVM_FIRST + 163)
- #define ListView_GetTileViewInfo(hwnd, ptvi)
- SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi)
- #define LVM_SETTILEINFO (LVM_FIRST + 164)
- #define ListView_SetTileInfo(hwnd, pti)
- SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti)
- #define LVM_GETTILEINFO (LVM_FIRST + 165)
- #define ListView_GetTileInfo(hwnd, pti)
- SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti)
- typedef struct
- {
- UINT cbSize;
- DWORD dwFlags;
- int iItem;
- DWORD dwReserved;
- } LVINSERTMARK, * LPLVINSERTMARK;
- #define LVIM_AFTER 0x00000001 // TRUE = insert After iItem, otherwise before
- #define LVM_SETINSERTMARK (LVM_FIRST + 166)
- #define ListView_SetInsertMark(hwnd, lvim)
- (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
- #define LVM_GETINSERTMARK (LVM_FIRST + 167)
- #define ListView_GetInsertMark(hwnd, lvim)
- (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
- #define LVM_INSERTMARKHITTEST (LVM_FIRST + 168)
- #define ListView_InsertMarkHitTest(hwnd, point, lvim)
- (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim))
- #define LVM_GETINSERTMARKRECT (LVM_FIRST + 169)
- #define ListView_GetInsertMarkRect(hwnd, rc)
- (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc))
- #define LVM_SETINSERTMARKCOLOR (LVM_FIRST + 170)
- #define ListView_SetInsertMarkColor(hwnd, color)
- (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
- #define LVM_GETINSERTMARKCOLOR (LVM_FIRST + 171)
- #define ListView_GetInsertMarkColor(hwnd)
- (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0)
- typedef struct tagLVSETINFOTIP
- {
- UINT cbSize;
- DWORD dwFlags;
- LPWSTR pszText;
- int iItem;
- int iSubItem;
- } LVSETINFOTIP, *PLVSETINFOTIP;
- #define LVM_SETINFOTIP (LVM_FIRST + 173)
- #define ListView_SetInfoTip(hwndLV, plvInfoTip)
- (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip)
- #define LVM_GETSELECTEDCOLUMN (LVM_FIRST + 174)
- #define ListView_GetSelectedColumn(hwnd)
- (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0)
- #define LVM_ISGROUPVIEWENABLED (LVM_FIRST + 175)
- #define ListView_IsGroupViewEnabled(hwnd)
- (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0)
- #define LVM_GETOUTLINECOLOR (LVM_FIRST + 176)
- #define ListView_GetOutlineColor(hwnd)
- (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0)
- #define LVM_SETOUTLINECOLOR (LVM_FIRST + 177)
- #define ListView_SetOutlineColor(hwnd, color)
- (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
- #define LVM_CANCELEDITLABEL (LVM_FIRST + 179)
- #define ListView_CancelEditLabel(hwnd)
- (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0)
- // These next to methods make it easy to identify an item that can be repositioned
- // within listview. For example: Many developers use the lParam to store an identifier that is
- // unique. Unfortunatly, in order to find this item, they have to iterate through all of the items
- // in the listview. Listview will maintain a unique identifier. The upper bound is the size of a DWORD.
- #define LVM_MAPINDEXTOID (LVM_FIRST + 180)
- #define ListView_MapIndexToID(hwnd, index)
- (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0)
- #define LVM_MAPIDTOINDEX (LVM_FIRST + 181)
- #define ListView_MapIDToIndex(hwnd, id)
- (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0)
- #endif
- #ifdef UNICODE
- #define LVBKIMAGE LVBKIMAGEW
- #define LPLVBKIMAGE LPLVBKIMAGEW
- #define LVM_SETBKIMAGE LVM_SETBKIMAGEW
- #define LVM_GETBKIMAGE LVM_GETBKIMAGEW
- #else
- #define LVBKIMAGE LVBKIMAGEA
- #define LPLVBKIMAGE LPLVBKIMAGEA
- #define LVM_SETBKIMAGE LVM_SETBKIMAGEA
- #define LVM_GETBKIMAGE LVM_GETBKIMAGEA
- #endif
- #define ListView_SetBkImage(hwnd, plvbki)
- (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki))
- #define ListView_GetBkImage(hwnd, plvbki)
- (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki))
- #endif // _WIN32_IE >= 0x0400
- #if (_WIN32_IE >= 0x0300)
- #define LPNM_LISTVIEW LPNMLISTVIEW
- #define NM_LISTVIEW NMLISTVIEW
- #else
- #define tagNMLISTVIEW _NM_LISTVIEW
- #define NMLISTVIEW NM_LISTVIEW
- #define LPNMLISTVIEW LPNM_LISTVIEW
- #endif
- typedef struct tagNMLISTVIEW
- {
- NMHDR hdr;
- int iItem;
- int iSubItem;
- UINT uNewState;
- UINT uOldState;
- UINT uChanged;
- POINT ptAction;
- LPARAM lParam;
- } NMLISTVIEW, *LPNMLISTVIEW;
- #if (_WIN32_IE >= 0x400)
- // NMITEMACTIVATE is used instead of NMLISTVIEW in IE >= 0x400
- // therefore all the fields are the same except for extra uKeyFlags
- // they are used to store key flags at the time of the single click with
- // delayed activation - because by the time the timer goes off a user may
- // not hold the keys (shift, ctrl) any more
- typedef struct tagNMITEMACTIVATE
- {
- NMHDR hdr;
- int iItem;
- int iSubItem;
- UINT uNewState;
- UINT uOldState;
- UINT uChanged;
- POINT ptAction;
- LPARAM lParam;
- UINT uKeyFlags;
- } NMITEMACTIVATE, *LPNMITEMACTIVATE;
- // key flags stored in uKeyFlags
- #define LVKF_ALT 0x0001
- #define LVKF_CONTROL 0x0002
- #define LVKF_SHIFT 0x0004
- #endif //(_WIN32_IE >= 0x0400)
- #if (_WIN32_IE >= 0x0300)
- #define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLVCUSTOMDRW, clrTextBk)
- typedef struct tagNMLVCUSTOMDRAW
- {
- NMCUSTOMDRAW nmcd;
- COLORREF clrText;
- COLORREF clrTextBk;
- #if (_WIN32_IE >= 0x0400)
- int iSubItem;
- #endif
- #if (_WIN32_WINNT >= 0x501)
- DWORD dwItemType;
- // Item custom draw
- COLORREF clrFace;
- int iIconEffect;
- int iIconPhase;
- int iPartId;
- int iStateId;
- // Group Custom Draw
- RECT rcText;
- UINT uAlign; // Alignment. Use LVGA_HEADER_CENTER, LVGA_HEADER_RIGHT, LVGA_HEADER_LEFT
- #endif
- } NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
- // dwItemType
- #define LVCDI_ITEM 0x00000000
- #define LVCDI_GROUP 0x00000001
- // ListView custom draw return values
- #define LVCDRF_NOSELECT 0x00010000
- #define LVCDRF_NOGROUPFRAME 0x00020000
- typedef struct tagNMLVCACHEHINT
- {
- NMHDR hdr;
- int iFrom;
- int iTo;
- } NMLVCACHEHINT, *LPNMLVCACHEHINT;
- #define LPNM_CACHEHINT LPNMLVCACHEHINT
- #define PNM_CACHEHINT LPNMLVCACHEHINT
- #define NM_CACHEHINT NMLVCACHEHINT
- typedef struct tagNMLVFINDITEMA
- {
- NMHDR hdr;
- int iStart;
- LVFINDINFOA lvfi;
- } NMLVFINDITEMA, *LPNMLVFINDITEMA;
- typedef struct tagNMLVFINDITEMW
- {
- NMHDR hdr;
- int iStart;
- LVFINDINFOW lvfi;
- } NMLVFINDITEMW, *LPNMLVFINDITEMW;
- #define PNM_FINDITEMA LPNMLVFINDITEMA
- #define LPNM_FINDITEMA LPNMLVFINDITEMA
- #define NM_FINDITEMA NMLVFINDITEMA
- #define PNM_FINDITEMW LPNMLVFINDITEMW
- #define LPNM_FINDITEMW LPNMLVFINDITEMW
- #define NM_FINDITEMW NMLVFINDITEMW
- #ifdef UNICODE
- #define PNM_FINDITEM PNM_FINDITEMW
- #define LPNM_FINDITEM LPNM_FINDITEMW
- #define NM_FINDITEM NM_FINDITEMW
- #define NMLVFINDITEM NMLVFINDITEMW
- #define LPNMLVFINDITEM LPNMLVFINDITEMW
- #else
- #define PNM_FINDITEM PNM_FINDITEMA
- #define LPNM_FINDITEM LPNM_FINDITEMA
- #define NM_FINDITEM NM_FINDITEMA
- #define NMLVFINDITEM NMLVFINDITEMA
- #define LPNMLVFINDITEM LPNMLVFINDITEMA
- #endif
- typedef struct tagNMLVODSTATECHANGE
- {
- NMHDR hdr;
- int iFrom;
- int iTo;
- UINT uNewState;
- UINT uOldState;
- } NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE;
- #define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE
- #define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE
- #define NM_ODSTATECHANGE NMLVODSTATECHANGE
- #endif // _WIN32_IE >= 0x0300
- #define LVN_ITEMCHANGING (LVN_FIRST-0)
- #define LVN_ITEMCHANGED (LVN_FIRST-1)
- #define LVN_INSERTITEM (LVN_FIRST-2)
- #define LVN_DELETEITEM (LVN_FIRST-3)
- #define LVN_DELETEALLITEMS (LVN_FIRST-4)
- #define LVN_BEGINLABELEDITA (LVN_FIRST-5)
- #define LVN_BEGINLABELEDITW (LVN_FIRST-75)
- #define LVN_ENDLABELEDITA (LVN_FIRST-6)
- #define LVN_ENDLABELEDITW (LVN_FIRST-76)
- #define LVN_COLUMNCLICK (LVN_FIRST-8)
- #define LVN_BEGINDRAG (LVN_FIRST-9)
- #define LVN_BEGINRDRAG (LVN_FIRST-11)
- #if (_WIN32_IE >= 0x0300)
- #define LVN_ODCACHEHINT (LVN_FIRST-13)
- #define LVN_ODFINDITEMA (LVN_FIRST-52)
- #define LVN_ODFINDITEMW (LVN_FIRST-79)
- #define LVN_ITEMACTIVATE (LVN_FIRST-14)
- #define LVN_ODSTATECHANGED (LVN_FIRST-15)
- #ifdef UNICODE
- #define LVN_ODFINDITEM LVN_ODFINDITEMW
- #else
- #define LVN_ODFINDITEM LVN_ODFINDITEMA
- #endif
- #endif // _WIN32_IE >= 0x0300
- #if (_WIN32_IE >= 0x0400)
- #define LVN_HOTTRACK (LVN_FIRST-21)
- #endif
- #define LVN_GETDISPINFOA (LVN_FIRST-50)
- #define LVN_GETDISPINFOW (LVN_FIRST-77)
- #define LVN_SETDISPINFOA (LVN_FIRST-51)
- #define LVN_SETDISPINFOW (LVN_FIRST-78)
- #ifdef UNICODE
- #define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
- #define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
- #define LVN_GETDISPINFO LVN_GETDISPINFOW
- #define LVN_SETDISPINFO LVN_SETDISPINFOW
- #else
- #define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
- #define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
- #define LVN_GETDISPINFO LVN_GETDISPINFOA
- #define LVN_SETDISPINFO LVN_SETDISPINFOA
- #endif
- #define LVIF_DI_SETITEM 0x1000
- #if (_WIN32_IE >= 0x0300)
- #define LV_DISPINFOA NMLVDISPINFOA
- #define LV_DISPINFOW NMLVDISPINFOW
- #else
- #define tagLVDISPINFO _LV_DISPINFO
- #define NMLVDISPINFOA LV_DISPINFOA
- #define tagLVDISPINFOW _LV_DISPINFOW
- #define NMLVDISPINFOW LV_DISPINFOW
- #endif
- #define LV_DISPINFO NMLVDISPINFO
- typedef struct tagLVDISPINFO {
- NMHDR hdr;
- LVITEMA item;
- } NMLVDISPINFOA, *LPNMLVDISPINFOA;
- typedef struct tagLVDISPINFOW {
- NMHDR hdr;
- LVITEMW item;
- } NMLVDISPINFOW, *LPNMLVDISPINFOW;
- #ifdef UNICODE
- #define NMLVDISPINFO NMLVDISPINFOW
- #else
- #define NMLVDISPINFO NMLVDISPINFOA
- #endif
- #define LVN_KEYDOWN (LVN_FIRST-55)
- #if (_WIN32_IE >= 0x0300)
- #define LV_KEYDOWN NMLVKEYDOWN
- #else
- #define tagLVKEYDOWN _LV_KEYDOWN
- #define NMLVKEYDOWN LV_KEYDOWN
- #endif
- #ifdef _WIN32
- #include <pshpack1.h>
- #endif
- typedef struct tagLVKEYDOWN
- {
- NMHDR hdr;
- WORD wVKey;
- UINT flags;
- } NMLVKEYDOWN, *LPNMLVKEYDOWN;
- #ifdef _WIN32
- #include <poppack.h>
- #endif
- #if (_WIN32_IE >= 0x0300)
- #define LVN_MARQUEEBEGIN (LVN_FIRST-56)
- #endif
- #if (_WIN32_IE >= 0x0400)
- typedef struct tagNMLVGETINFOTIPA
- {
- NMHDR hdr;
- DWORD dwFlags;
- LPSTR pszText;
- int cchTextMax;
- int iItem;
- int iSubItem;
- LPARAM lParam;
- } NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
- typedef struct tagNMLVGETINFOTIPW
- {
- NMHDR hdr;
- DWORD dwFlags;
- LPWSTR pszText;
- int cchTextMax;
- int iItem;
- int iSubItem;
- LPARAM lParam;
- } NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
- // NMLVGETINFOTIPA.dwFlag values
- #define LVGIT_UNFOLDED 0x0001
- #define LVN_GETINFOTIPA (LVN_FIRST-57)
- #define LVN_GETINFOTIPW (LVN_FIRST-58)
- #ifdef UNICODE
- #define LVN_GETINFOTIP LVN_GETINFOTIPW
- #define NMLVGETINFOTIP NMLVGETINFOTIPW
- #define LPNMLVGETINFOTIP LPNMLVGETINFOTIPW
- #else
- #define LVN_GETINFOTIP LVN_GETINFOTIPA
- #define NMLVGETINFOTIP NMLVGETINFOTIPA
- #define LPNMLVGETINFOTIP LPNMLVGETINFOTIPA
- #endif
- #endif // _WIN32_IE >= 0x0400
- #if (_WIN32_WINNT >= 0x501)
- typedef struct tagNMLVSCROLL
- {
- NMHDR hdr;
- int dx;
- int dy;
- } NMLVSCROLL, *LPNMLVSCROLL;
- #define LVN_BEGINSCROLL (LVN_FIRST-80)
- #define LVN_ENDSCROLL (LVN_FIRST-81)
- #endif
- #endif // NOLISTVIEW
- //====== TREEVIEW CONTROL =====================================================
- #ifndef NOTREEVIEW
- #ifdef _WIN32
- #define WC_TREEVIEWA "SysTreeView32"
- #define WC_TREEVIEWW L"SysTreeView32"
- #ifdef UNICODE
- #define WC_TREEVIEW WC_TREEVIEWW
- #else
- #define WC_TREEVIEW WC_TREEVIEWA
- #endif
- #else
- #define WC_TREEVIEW "SysTreeView"
- #endif
- // begin_r_commctrl
- #define TVS_HASBUTTONS 0x0001
- #define TVS_HASLINES 0x0002
- #define TVS_LINESATROOT 0x0004
- #define TVS_EDITLABELS 0x0008
- #define TVS_DISABLEDRAGDROP 0x0010
- #define TVS_SHOWSELALWAYS 0x0020
- #if (_WIN32_IE >= 0x0300)
- #define TVS_RTLREADING 0x0040
- #define TVS_NOTOOLTIPS 0x0080
- #define TVS_CHECKBOXES 0x0100
- #define TVS_TRACKSELECT 0x0200
- #if (_WIN32_IE >= 0x0400)
- #define TVS_SINGLEEXPAND 0x0400
- #define TVS_INFOTIP 0x0800
- #define TVS_FULLROWSELECT 0x1000
- #define TVS_NOSCROLL 0x2000
- #define TVS_NONEVENHEIGHT 0x4000
- #endif
- #if (_WIN32_IE >= 0x500)
- #define TVS_NOHSCROLL 0x8000 // TVS_NOSCROLL overrides this
- #endif
- #endif
- // end_r_commctrl
- typedef struct _TREEITEM *HTREEITEM;
- #define TVIF_TEXT 0x0001
- #define TVIF_IMAGE 0x0002
- #define TVIF_PARAM 0x0004
- #define TVIF_STATE 0x0008
- #define TVIF_HANDLE 0x0010
- #define TVIF_SELECTEDIMAGE 0x0020
- #define TVIF_CHILDREN 0x0040
- #if (_WIN32_IE >= 0x0400)
- #define TVIF_INTEGRAL 0x0080
- #endif
- #define TVIS_SELECTED 0x0002
- #define TVIS_CUT 0x0004
- #define TVIS_DROPHILITED 0x0008
- #define TVIS_BOLD 0x0010
- #define TVIS_EXPANDED 0x0020
- #define TVIS_EXPANDEDONCE 0x0040
- #if (_WIN32_IE >= 0x0300)
- #define TVIS_EXPANDPARTIAL 0x0080
- #endif
- #define TVIS_OVERLAYMASK 0x0F00
- #define TVIS_STATEIMAGEMASK 0xF000
- #define TVIS_USERMASK 0xF000
- #define I_CHILDRENCALLBACK (-1)
- #if (_WIN32_IE >= 0x0300)
- #define LPTV_ITEMW LPTVITEMW
- #define LPTV_ITEMA LPTVITEMA
- #define TV_ITEMW TVITEMW
- #define TV_ITEMA TVITEMA
- #else
- #define tagTVITEMA _TV_ITEMA
- #define TVITEMA TV_ITEMA
- #define LPTVITEMA LPTV_ITEMA
- #define tagTVITEMW _TV_ITEMW
- #define TVITEMW TV_ITEMW
- #define LPTVITEMW LPTV_ITEMW
- #endif
- #define LPTV_ITEM LPTVITEM
- #define TV_ITEM TVITEM
- typedef struct tagTVITEMA {
- UINT mask;
- HTREEITEM hItem;
- UINT state;
- UINT stateMask;
- LPSTR pszText;
- int cchTextMax;
- int iImage;
- int iSelectedImage;
- int cChildren;
- LPARAM lParam;
- } TVITEMA, *LPTVITEMA;
- typedef struct tagTVITEMW {
- UINT mask;
- HTREEITEM hItem;
- UINT state;
- UINT stateMask;
- LPWSTR pszText;
- int cchTextMax;
- int iImage;
- int iSelectedImage;
- int cChildren;
- LPARAM lParam;
- } TVITEMW, *LPTVITEMW;
- #if (_WIN32_IE >= 0x0400)
- // only used for Get and Set messages. no notifies
- typedef struct tagTVITEMEXA {
- UINT mask;
- HTREEITEM hItem;
- UINT state;
- UINT stateMask;
- LPSTR pszText;
- int cchTextMax;
- int iImage;
- int iSelectedImage;
- int cChildren;
- LPARAM lParam;
- int iIntegral;
- } TVITEMEXA, *LPTVITEMEXA;
- // only used for Get and Set messages. no notifies
- typedef struct tagTVITEMEXW {
- UINT mask;
- HTREEITEM hItem;
- UINT state;
- UINT stateMask;
- LPWSTR pszText;
- int cchTextMax;
- int iImage;
- int iSelectedImage;
- int cChildren;
- LPARAM lParam;
- int iIntegral;
- } TVITEMEXW, *LPTVITEMEXW;
- #ifdef UNICODE
- typedef TVITEMEXW TVITEMEX;
- typedef LPTVITEMEXW LPTVITEMEX;
- #else
- typedef TVITEMEXA TVITEMEX;
- typedef LPTVITEMEXA LPTVITEMEX;
- #endif // UNICODE
- #endif
- #ifdef UNICODE
- #define TVITEM TVITEMW
- #define LPTVITEM LPTVITEMW
- #else
- #define TVITEM TVITEMA
- #define LPTVITEM LPTVITEMA
- #endif
- #define TVI_ROOT ((HTREEITEM)(ULONG_PTR)-0x10000)
- #define TVI_FIRST ((HTREEITEM)(ULONG_PTR)-0x0FFFF)
- #define TVI_LAST ((HTREEITEM)(ULONG_PTR)-0x0FFFE)
- #define TVI_SORT ((HTREEITEM)(ULONG_PTR)-0x0FFFD)
- #if (_WIN32_IE >= 0x0300)
- #define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
- #define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
- #define TV_INSERTSTRUCTA TVINSERTSTRUCTA
- #define TV_INSERTSTRUCTW TVINSERTSTRUCTW
- #else
- #define tagTVINSERTSTRUCTA _TV_INSERTSTRUCTA
- #define TVINSERTSTRUCTA TV_INSERTSTRUCTA
- #define LPTVINSERTSTRUCTA LPTV_INSERTSTRUCTA
- #define tagTVINSERTSTRUCTW _TV_INSERTSTRUCTW
- #define TVINSERTSTRUCTW TV_INSERTSTRUCTW
- #define LPTVINSERTSTRUCTW LPTV_INSERTSTRUCTW
- #endif
- #define TV_INSERTSTRUCT TVINSERTSTRUCT
- #define LPTV_INSERTSTRUCT LPTVINSERTSTRUCT
- #define TVINSERTSTRUCTA_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item)
- #define TVINSERTSTRUCTW_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item)
- typedef struct tagTVINSERTSTRUCTA {
- HTREEITEM hParent;
- HTREEITEM hInsertAfter;
- #if (_WIN32_IE >= 0x0400)
- union
- {
- TVITEMEXA itemex;
- TV_ITEMA item;
- } DUMMYUNIONNAME;
- #else
- TV_ITEMA item;
- #endif
- } TVINSERTSTRUCTA, *LPTVINSERTSTRUCTA;
- typedef struct tagTVINSERTSTRUCTW {
- HTREEITEM hParent;
- HTREEITEM hInsertAfter;
- #if (_WIN32_IE >= 0x0400)
- union
- {
- TVITEMEXW itemex;
- TV_ITEMW item;
- } DUMMYUNIONNAME;
- #else
- TV_ITEMW item;
- #endif
- } TVINSERTSTRUCTW, *LPTVINSERTSTRUCTW;
- #ifdef UNICODE
- #define TVINSERTSTRUCT TVINSERTSTRUCTW
- #define LPTVINSERTSTRUCT LPTVINSERTSTRUCTW
- #define TVINSERTSTRUCT_V1_SIZE TVINSERTSTRUCTW_V1_SIZE
- #else
- #define TVINSERTSTRUCT TVINSERTSTRUCTA
- #define LPTVINSERTSTRUCT LPTVINSERTSTRUCTA
- #define TVINSERTSTRUCT_V1_SIZE TVINSERTSTRUCTA_V1_SIZE
- #endif
- #define TVM_INSERTITEMA (TV_FIRST + 0)
- #define TVM_INSERTITEMW (TV_FIRST + 50)
- #ifdef UNICODE
- #define TVM_INSERTITEM TVM_INSERTITEMW
- #else
- #define TVM_INSERTITEM TVM_INSERTITEMA
- #endif
- #define TreeView_InsertItem(hwnd, lpis)
- (HTREEITEM)SNDMSG((hwnd), TVM_INSERTITEM, 0, (LPARAM)(LPTV_INSERTSTRUCT)(lpis))
- #define TVM_DELETEITEM (TV_FIRST + 1)
- #define TreeView_DeleteItem(hwnd, hitem)
- (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hitem))
- #define TreeView_DeleteAllItems(hwnd)
- (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
- #define TVM_EXPAND (TV_FIRST + 2)
- #define TreeView_Expand(hwnd, hitem, code)
- (BOOL)SNDMSG((hwnd), TVM_EXPAND, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem))
- #define TVE_COLLAPSE 0x0001
- #define TVE_EXPAND 0x0002
- #define TVE_TOGGLE 0x0003
- #if (_WIN32_IE >= 0x0300)
- #define TVE_EXPANDPARTIAL 0x4000
- #endif
- #define TVE_COLLAPSERESET 0x8000
- #define TVM_GETITEMRECT (TV_FIRST + 4)
- #define TreeView_GetItemRect(hwnd, hitem, prc, code)
- (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSG((hwnd), TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc)))
- #define TVM_GETCOUNT (TV_FIRST + 5)
- #define TreeView_GetCount(hwnd)
- (UINT)SNDMSG((hwnd), TVM_GETCOUNT, 0, 0)
- #define TVM_GETINDENT (TV_FIRST + 6)
- #define TreeView_GetIndent(hwnd)
- (UINT)SNDMSG((hwnd), TVM_GETINDENT, 0, 0)
- #define TVM_SETINDENT (TV_FIRST + 7)
- #define TreeView_SetIndent(hwnd, indent)
- (BOOL)SNDMSG((hwnd), TVM_SETINDENT, (WPARAM)(indent), 0)
- #define TVM_GETIMAGELIST (TV_FIRST + 8)
- #define TreeView_GetImageList(hwnd, iImage)
- (HIMAGELIST)SNDMSG((hwnd), TVM_GETIMAGELIST, iImage, 0)
- #define TVSIL_NORMAL 0
- #define TVSIL_STATE 2
- #define TVM_SETIMAGELIST (TV_FIRST + 9)
- #define TreeView_SetImageList(hwnd, himl, iImage)
- (HIMAGELIST)SNDMSG((hwnd), TVM_SETIMAGELIST, iImage, (LPARAM)(HIMAGELIST)(himl))
- #define TVM_GETNEXTITEM (TV_FIRST + 10)
- #define TreeView_GetNextItem(hwnd, hitem, code)
- (HTREEITEM)SNDMSG((hwnd), TVM_GETNEXTITEM, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem))
- #define TVGN_ROOT 0x0000
- #define TVGN_NEXT 0x0001
- #define TVGN_PREVIOUS 0x0002
- #define TVGN_PARENT 0x0003
- #define TVGN_CHILD 0x0004
- #define TVGN_FIRSTVISIBLE 0x0005
- #define TVGN_NEXTVISIBLE 0x0006
- #define TVGN_PREVIOUSVISIBLE 0x0007
- #define TVGN_DROPHILITE 0x0008
- #define TVGN_CARET 0x0009
- #if (_WIN32_IE >= 0x0400)
- #define TVGN_LASTVISIBLE 0x000A
- #endif // _WIN32_IE >= 0x0400
- #if (_WIN32_WINNT >= 0x501)
- #define TVSI_NOSINGLEEXPAND 0x8000 // Should not conflict with TVGN flags.
- #endif
- #define TreeView_GetChild(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
- #define TreeView_GetNextSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
- #define TreeView_GetPrevSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS)
- #define TreeView_GetParent(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
- #define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
- #define TreeView_GetNextVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
- #define TreeView_GetPrevVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
- #define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
- #define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
- #define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
- #if (_WIN32_IE >= 0x0400)
- #define TreeView_GetLastVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
- #endif // _WIN32_IE >= 0x0400
- #define TVM_SELECTITEM (TV_FIRST + 11)
- #define TreeView_Select(hwnd, hitem, code)
- (BOOL)SNDMSG((hwnd), TVM_SELECTITEM, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem))
- #define TreeView_SelectItem(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_CARET)
- #define TreeView_SelectDropTarget(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
- #define TreeView_SelectSetFirstVisible(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
- #define TVM_GETITEMA (TV_FIRST + 12)
- #define TVM_GETITEMW (TV_FIRST + 62)
- #ifdef UNICODE
- #define TVM_GETITEM TVM_GETITEMW
- #else
- #define TVM_GETITEM TVM_GETITEMA
- #endif
- #define TreeView_GetItem(hwnd, pitem)
- (BOOL)SNDMSG((hwnd), TVM_GETITEM, 0, (LPARAM)(TV_ITEM *)(pitem))
- #define TVM_SETITEMA (TV_FIRST + 13)
- #define TVM_SETITEMW (TV_FIRST + 63)
- #ifdef UNICODE
- #define TVM_SETITEM TVM_SETITEMW
- #else
- #define TVM_SETITEM TVM_SETITEMA
- #endif
- #define TreeView_SetItem(hwnd, pitem)
- (BOOL)SNDMSG((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM *)(pitem))
- #define TVM_EDITLABELA (TV_FIRST + 14)
- #define TVM_EDITLABELW (TV_FIRST + 65)
- #ifdef UNICODE
- #define TVM_EDITLABEL TVM_EDITLABELW
- #else
- #define TVM_EDITLABEL TVM_EDITLABELA
- #endif
- #define TreeView_EditLabel(hwnd, hitem)
- (HWND)SNDMSG((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
- #define TVM_GETEDITCONTROL (TV_FIRST + 15)
- #define TreeView_GetEditControl(hwnd)
- (HWND)SNDMSG((hwnd), TVM_GETEDITCONTROL, 0, 0)
- #define TVM_GETVISIBLECOUNT (TV_FIRST + 16)
- #define TreeView_GetVisibleCount(hwnd)
- (UINT)SNDMSG((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
- #define TVM_HITTEST (TV_FIRST + 17)
- #define TreeView_HitTest(hwnd, lpht)
- (HTREEITEM)SNDMSG((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht))
- #if (_WIN32_IE >= 0x0300)
- #define LPTV_HITTESTINFO LPTVHITTESTINFO
- #define TV_HITTESTINFO TVHITTESTINFO
- #else
- #define tagTVHITTESTINFO _TV_HITTESTINFO
- #define TVHITTESTINFO TV_HITTESTINFO
- #define LPTVHITTESTINFO LPTV_HITTESTINFO
- #endif
- typedef struct tagTVHITTESTINFO {
- POINT pt;
- UINT flags;
- HTREEITEM hItem;
- } TVHITTESTINFO, *LPTVHITTESTINFO;
- #define TVHT_NOWHERE 0x0001
- #define TVHT_ONITEMICON 0x0002
- #define TVHT_ONITEMLABEL 0x0004
- #define TVHT_ONITEM (TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON)
- #define TVHT_ONITEMINDENT 0x0008
- #define TVHT_ONITEMBUTTON 0x0010
- #define TVHT_ONITEMRIGHT 0x0020
- #define TVHT_ONITEMSTATEICON 0x0040
- #define TVHT_ABOVE 0x0100
- #define TVHT_BELOW 0x0200
- #define TVHT_TORIGHT 0x0400
- #define TVHT_TOLEFT 0x0800
- #define TVM_CREATEDRAGIMAGE (TV_FIRST + 18)
- #define TreeView_CreateDragImage(hwnd, hitem)
- (HIMAGELIST)SNDMSG((hwnd), TVM_CREATEDRAGIMAGE, 0, (LPARAM)(HTREEITEM)(hitem))
- #define TVM_SORTCHILDREN (TV_FIRST + 19)
- #define TreeView_SortChildren(hwnd, hitem, recurse)
- (BOOL)SNDMSG((hwnd), TVM_SORTCHILDREN, (WPARAM)(recurse), (LPARAM)(HTREEITEM)(hitem))
- #define TVM_ENSUREVISIBLE (TV_FIRST + 20)
- #define TreeView_EnsureVisible(hwnd, hitem)
- (BOOL)SNDMSG((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(HTREEITEM)(hitem))
- #define TVM_SORTCHILDRENCB (TV_FIRST + 21)
- #define TreeView_SortChildrenCB(hwnd, psort, recurse)
- (BOOL)SNDMSG((hwnd), TVM_SORTCHILDRENCB, (WPARAM)(recurse),
- (LPARAM)(LPTV_SORTCB)(psort))
- #define TVM_ENDEDITLABELNOW (TV_FIRST + 22)
- #define TreeView_EndEditLabelNow(hwnd, fCancel)
- (BOOL)SNDMSG((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)(fCancel), 0)
- #define TVM_GETISEARCHSTRINGA (TV_FIRST + 23)
- #define TVM_GETISEARCHSTRINGW (TV_FIRST + 64)
- #ifdef UNICODE
- #define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
- #else
- #define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
- #endif
- #if (_WIN32_IE >= 0x0300)
- #define TVM_SETTOOLTIPS (TV_FIRST + 24)
- #define TreeView_SetToolTips(hwnd, hwndTT)
- (HWND)SNDMSG((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0)
- #define TVM_GETTOOLTIPS (TV_FIRST + 25)
- #define TreeView_GetToolTips(hwnd)
- (HWND)SNDMSG((hwnd), TVM_GETTOOLTIPS, 0, 0)
- #endif
- #define TreeView_GetISearchString(hwndTV, lpsz)
- (BOOL)SNDMSG((hwndTV), TVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz))
- #if (_WIN32_IE >= 0x0400)
- #define TVM_SETINSERTMARK (TV_FIRST + 26)
- #define TreeView_SetInsertMark(hwnd, hItem, fAfter)
- (BOOL)SNDMSG((hwnd), TVM_SETINSERTMARK, (WPARAM) (fAfter), (LPARAM) (hItem))
- #define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
- #define TreeView_SetUnicodeFormat(hwnd, fUnicode)
- (BOOL)SNDMSG((hwnd), TVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
- #define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
- #define TreeView_GetUnicodeFormat(hwnd)
- (BOOL)SNDMSG((hwnd), TVM_GETUNICODEFORMAT, 0, 0)
- #endif
- #if (_WIN32_IE >= 0x0400)
- #define TVM_SETITEMHEIGHT (TV_FIRST + 27)
- #define TreeView_SetItemHeight(hwnd, iHeight)
- (int)SNDMSG((hwnd), TVM_SETITEMHEIGHT, (WPARAM)(iHeight), 0)
- #define TVM_GETITEMHEIGHT (TV_FIRST + 28)
- #define TreeView_GetItemHeight(hwnd)
- (int)SNDMSG((hwnd), TVM_GETITEMHEIGHT, 0, 0)
- #define TVM_SETBKCOLOR (TV_FIRST + 29)
- #define TreeView_SetBkColor(hwnd, clr)
- (COLORREF)SNDMSG((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)(clr))
- #define TVM_SETTEXTCOLOR (TV_FIRST + 30)
- #define TreeView_SetTextColor(hwnd, clr)
- (COLORREF)SNDMSG((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)(clr))
- #define TVM_GETBKCOLOR (TV_FIRST + 31)
- #define TreeView_GetBkColor(hwnd)
- (COLORREF)SNDMSG((hwnd), TVM_GETBKCOLOR, 0, 0)
- #define TVM_GETTEXTCOLOR (TV_FIRST + 32)
- #define TreeView_GetTextColor(hwnd)
- (COLORREF)SNDMSG((hwnd), TVM_GETTEXTCOLOR, 0, 0)
- #define TVM_SETSCROLLTIME (TV_FIRST + 33)
- #define TreeView_SetScrollTime(hwnd, uTime)
- (UINT)SNDMSG((hwnd), TVM_SETSCROLLTIME, uTime, 0)
- #define TVM_GETSCROLLTIME (TV_FIRST + 34)
- #define TreeView_GetScrollTime(hwnd)
- (UINT)SNDMSG((hwnd), TVM_GETSCROLLTIME, 0, 0)
- #define TVM_SETINSERTMARKCOLOR (TV_FIRST + 37)
- #define TreeView_SetInsertMarkColor(hwnd, clr)
- (COLORREF)SNDMSG((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)(clr))
- #define TVM_GETINSERTMARKCOLOR (TV_FIRST + 38)
- #define TreeView_GetInsertMarkColor(hwnd)
- (COLORREF)SNDMSG((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
- #endif /* (_WIN32_IE >= 0x0400) */
- #if (_WIN32_IE >= 0x0500)
- // tvm_?etitemstate only uses mask, state and stateMask.
- // so unicode or ansi is irrelevant.
- #define TreeView_SetItemState(hwndTV, hti, data, _mask)
- { TVITEM _ms_TVi;
- _ms_TVi.mask = TVIF_STATE;
- _ms_TVi.hItem = hti;
- _ms_TVi.stateMask = _mask;
- _ms_TVi.state = data;
- SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_ms_TVi);
- }
- #define TreeView_SetCheckState(hwndTV, hti, fCheck)
- TreeView_SetItemState(hwndTV, hti, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), TVIS_STATEIMAGEMASK)
- #define TVM_GETITEMSTATE (TV_FIRST + 39)
- #define TreeView_GetItemState(hwndTV, hti, mask)
- (UINT)SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
- #define TreeView_GetCheckState(hwndTV, hti)
- ((((UINT)(SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), TVIS_STATEIMAGEMASK))) >> 12) -1)
- #define TVM_SETLINECOLOR (TV_FIRST + 40)
- #define TreeView_SetLineColor(hwnd, clr)
- (COLORREF)SNDMSG((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr))
- #define TVM_GETLINECOLOR (TV_FIRST + 41)
- #define TreeView_GetLineColor(hwnd)
- (COLORREF)SNDMSG((hwnd), TVM_GETLINECOLOR, 0, 0)
- #endif
- #if (_WIN32_WINNT >= 0x0501)
- #define TVM_MAPACCIDTOHTREEITEM (TV_FIRST + 42)
- #define TreeView_MapAccIDToHTREEITEM(hwnd, id)
- (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0)
-
- #define TVM_MAPHTREEITEMTOACCID (TV_FIRST + 43)
- #define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem)
- (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0)
- #endif
- typedef int (CALLBACK *PFNTVCOMPARE)(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
- #if (_WIN32_IE >= 0x0300)
- #define LPTV_SORTCB LPTVSORTCB
- #define TV_SORTCB TVSORTCB
- #else
- #define tagTVSORTCB _TV_SORTCB
- #define TVSORTCB TV_SORTCB
- #define LPTVSORTCB LPTV_SORTCB
- #endif
- typedef struct tagTVSORTCB
- {
- HTREEITEM hParent;
- PFNTVCOMPARE lpfnCompare;
- LPARAM lParam;
- } TVSORTCB, *LPTVSORTCB;
- #if (_WIN32_IE >= 0x0300)
- #define LPNM_TREEVIEWA LPNMTREEVIEWA
- #define LPNM_TREEVIEWW LPNMTREEVIEWW
- #define NM_TREEVIEWW NMTREEVIEWW
- #define NM_TREEVIEWA NMTREEVIEWA
- #else
- #define tagNMTREEVIEWA _NM_TREEVIEWA
- #define tagNMTREEVIEWW _NM_TREEVIEWW
- #define NMTREEVIEWA NM_TREEVIEWA
- #define NMTREEVIEWW NM_TREEVIEWW
- #define LPNMTREEVIEWA LPNM_TREEVIEWA
- #define LPNMTREEVIEWW LPNM_TREEVIEWW
- #endif
- #define LPNM_TREEVIEW LPNMTREEVIEW
- #define NM_TREEVIEW NMTREEVIEW
- typedef struct tagNMTREEVIEWA {
- NMHDR hdr;
- UINT action;
- TVITEMA itemOld;
- TVITEMA itemNew;
- POINT ptDrag;
- } NMTREEVIEWA, *LPNMTREEVIEWA;
- typedef struct tagNMTREEVIEWW {
- NMHDR hdr;
- UINT action;
- TVITEMW itemOld;
- TVITEMW itemNew;
- POINT ptDrag;
- } NMTREEVIEWW, *LPNMTREEVIEWW;
- #ifdef UNICODE
- #define NMTREEVIEW NMTREEVIEWW
- #define LPNMTREEVIEW LPNMTREEVIEWW
- #else
- #define NMTREEVIEW NMTREEVIEWA
- #define LPNMTREEVIEW LPNMTREEVIEWA
- #endif
- #define TVN_SELCHANGINGA (TVN_FIRST-1)
- #define TVN_SELCHANGINGW (TVN_FIRST-50)
- #define TVN_SELCHANGEDA (TVN_FIRST-2)
- #define TVN_SELCHANGEDW (TVN_FIRST-51)
- #define TVC_UNKNOWN 0x0000
- #define TVC_BYMOUSE 0x0001
- #define TVC_BYKEYBOARD 0x0002
- #define TVN_GETDISPINFOA (TVN_FIRST-3)
- #define TVN_GETDISPINFOW (TVN_FIRST-52)
- #define TVN_SETDISPINFOA (TVN_FIRST-4)
- #define TVN_SETDISPINFOW (TVN_FIRST-53)
- #define TVIF_DI_SETITEM 0x1000
- #if (_WIN32_IE >= 0x0300)
- #define TV_DISPINFOA NMTVDISPINFOA
- #define TV_DISPINFOW NMTVDISPINFOW
- #else
- #define tagTVDISPINFOA _TV_DISPINFOA
- #define NMTVDISPINFOA TV_DISPINFOA
- #define tagTVDISPINFOW _TV_DISPINFOW
- #define NMTVDISPINFOW TV_DISPINFOW
- #endif
- #define TV_DISPINFO NMTVDISPINFO
- typedef struct tagTVDISPINFOA {
- NMHDR hdr;
- TVITEMA item;
- } NMTVDISPINFOA, *LPNMTVDISPINFOA;
- typedef struct tagTVDISPINFOW {
- NMHDR hdr;
- TVITEMW item;
- } NMTVDISPINFOW, *LPNMTVDISPINFOW;
- #ifdef UNICODE
- #define NMTVDISPINFO NMTVDISPINFOW
- #define LPNMTVDISPINFO LPNMTVDISPINFOW
- #else
- #define NMTVDISPINFO NMTVDISPINFOA
- #define LPNMTVDISPINFO LPNMTVDISPINFOA
- #endif
- #define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
- #define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
- #define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
- #define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
- #define TVN_BEGINDRAGA (TVN_FIRST-7)
- #define TVN_BEGINDRAGW (TVN_FIRST-56)
- #define TVN_BEGINRDRAGA (TVN_FIRST-8)
- #define TVN_BEGINRDRAGW (TVN_FIRST-57)
- #define TVN_DELETEITEMA (TVN_FIRST-9)
- #define TVN_DELETEITEMW (TVN_FIRST-58)
- #define TVN_BEGINLABELEDITA (TVN_FIRST-10)
- #define TVN_BEGINLABELEDITW (TVN_FIRST-59)
- #define TVN_ENDLABELEDITA (TVN_FIRST-11)
- #define TVN_ENDLABELEDITW (TVN_FIRST-60)
- #define TVN_KEYDOWN (TVN_FIRST-12)
- #if (_WIN32_IE >= 0x0400)
- #define TVN_GETINFOTIPA (TVN_FIRST-13)
- #define TVN_GETINFOTIPW (TVN_FIRST-14)
- #define TVN_SINGLEEXPAND (TVN_FIRST-15)
- #define TVNRET_DEFAULT 0
- #define TVNRET_SKIPOLD 1
- #define TVNRET_SKIPNEW 2
- #endif // 0x400
- #if (_WIN32_IE >= 0x0300)
- #define TV_KEYDOWN NMTVKEYDOWN
- #else
- #define tagTVKEYDOWN _TV_KEYDOWN
- #define NMTVKEYDOWN TV_KEYDOWN
- #endif
- #ifdef _WIN32
- #include <pshpack1.h>
- #endif
- typedef struct tagTVKEYDOWN {
- NMHDR hdr;
- WORD wVKey;
- UINT flags;
- } NMTVKEYDOWN, *LPNMTVKEYDOWN;
- #ifdef _WIN32
- #include <poppack.h>
- #endif
- #ifdef UNICODE
- #define TVN_SELCHANGING TVN_SELCHANGINGW
- #define TVN_SELCHANGED TVN_SELCHANGEDW
- #define TVN_GETDISPINFO TVN_GETDISPINFOW
- #define TVN_SETDISPINFO TVN_SETDISPINFOW
- #define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
- #define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
- #define TVN_BEGINDRAG TVN_BEGINDRAGW
- #define TVN_BEGINRDRAG TVN_BEGINRDRAGW
- #define TVN_DELETEITEM TVN_DELETEITEMW
- #define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
- #define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
- #else
- #define TVN_SELCHANGING TVN_SELCHANGINGA
- #define TVN_SELCHANGED TVN_SELCHANGEDA
- #define TVN_GETDISPINFO TVN_GETDISPINFOA
- #define TVN_SETDISPINFO TVN_SETDISPINFOA
- #define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
- #define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
- #define TVN_BEGINDRAG TVN_BEGINDRAGA
- #define TVN_BEGINRDRAG TVN_BEGINRDRAGA
- #define TVN_DELETEITEM TVN_DELETEITEMA
- #define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
- #define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
- #endif
- #if (_WIN32_IE >= 0x0300)
- #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk)
- typedef struct tagNMTVCUSTOMDRAW
- {
- NMCUSTOMDRAW nmcd;
- COLORREF clrText;
- COLORREF clrTextBk;
- #if (_WIN32_IE >= 0x0400)
- int iLevel;
- #endif
- } NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
- #endif
- #if (_WIN32_IE >= 0x0400)
- // for tooltips
- typedef struct tagNMTVGETINFOTIPA
- {
- NMHDR hdr;
- LPSTR pszText;
- int cchTextMax;
- HTREEITEM hItem;
- LPARAM lParam;
- } NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA;
- typedef struct tagNMTVGETINFOTIPW
- {
- NMHDR hdr;
- LPWSTR pszText;
- int cchTextMax;
- HTREEITEM hItem;
- LPARAM lParam;
- } NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
- #ifdef UNICODE
- #define TVN_GETINFOTIP TVN_GETINFOTIPW
- #define NMTVGETINFOTIP NMTVGETINFOTIPW
- #define LPNMTVGETINFOTIP LPNMTVGETINFOTIPW
- #else
- #define TVN_GETINFOTIP TVN_GETINFOTIPA
- #define NMTVGETINFOTIP NMTVGETINFOTIPA
- #define LPNMTVGETINFOTIP LPNMTVGETINFOTIPA
- #endif
- // treeview's customdraw return meaning don't draw images. valid on CDRF_NOTIFYITEMPREPAINT
- #define TVCDRF_NOIMAGES 0x00010000
- #endif // _WIN32_IE >= 0x0400
- #endif // NOTREEVIEW
- #if (_WIN32_IE >= 0x0300)
- #ifndef NOUSEREXCONTROLS
- //////////////////// ComboBoxEx ////////////////////////////////
- #define WC_COMBOBOXEXW L"ComboBoxEx32"
- #define WC_COMBOBOXEXA "ComboBoxEx32"
- #ifdef UNICODE
- #define WC_COMBOBOXEX WC_COMBOBOXEXW
- #else
- #define WC_COMBOBOXEX WC_COMBOBOXEXA
- #endif
- #define CBEIF_TEXT 0x00000001
- #define CBEIF_IMAGE 0x00000002
- #define CBEIF_SELECTEDIMAGE 0x00000004
- #define CBEIF_OVERLAY 0x00000008
- #define CBEIF_INDENT 0x00000010
- #define CBEIF_LPARAM 0x00000020
- #define CBEIF_DI_SETITEM 0x10000000
- typedef struct tagCOMBOBOXEXITEMA
- {
- UINT mask;
- INT_PTR iItem;
- LPSTR pszText;
- int cchTextMax;
- int iImage;
- int iSelectedImage;
- int iOverlay;
- int iIndent;
- LPARAM lParam;
- } COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
- typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA;
- typedef struct tagCOMBOBOXEXITEMW
- {
- UINT mask;
- INT_PTR iItem;
- LPWSTR pszText;
- int cchTextMax;
- int iImage;
- int iSelectedImage;
- int iOverlay;
- int iIndent;
- LPARAM lParam;
- } COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
- typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW;
- #ifdef UNICODE
- #define COMBOBOXEXITEM COMBOBOXEXITEMW
- #define PCOMBOBOXEXITEM PCOMBOBOXEXITEMW
- #define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMW
- #else
- #define COMBOBOXEXITEM COMBOBOXEXITEMA
- #define PCOMBOBOXEXITEM PCOMBOBOXEXITEMA
- #define PCCOMBOBOXEXITEM PCCOMBOBOXEXITEMA
- #endif
- #define CBEM_INSERTITEMA (WM_USER + 1)
- #define CBEM_SETIMAGELIST (WM_USER + 2)
- #define CBEM_GETIMAGELIST (WM_USER + 3)
- #define CBEM_GETITEMA (WM_USER + 4)
- #define CBEM_SETITEMA (WM_USER + 5)
- #define CBEM_DELETEITEM CB_DELETESTRING
- #define CBEM_GETCOMBOCONTROL (WM_USER + 6)
- #define CBEM_GETEDITCONTROL (WM_USER + 7)
- #if (_WIN32_IE >= 0x0400)
- #define CBEM_SETEXSTYLE (WM_USER + 8) // use SETEXTENDEDSTYLE instead
- #define CBEM_SETEXTENDEDSTYLE (WM_USER + 14) // lparam == new style, wParam (optional) == mask
- #define CBEM_GETEXSTYLE (WM_USER + 9) // use GETEXTENDEDSTYLE instead
- #define CBEM_GETEXTENDEDSTYLE (WM_USER + 9)
- #define CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
- #define CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
- #else
- #define CBEM_SETEXSTYLE (WM_USER + 8)
- #define CBEM_GETEXSTYLE (WM_USER + 9)
- #endif
- #define CBEM_HASEDITCHANGED (WM_USER + 10)
- #define CBEM_INSERTITEMW (WM_USER + 11)
- #define CBEM_SETITEMW (WM_USER + 12)
- #define CBEM_GETITEMW (WM_USER + 13)
- #ifdef UNICODE
- #define CBEM_INSERTITEM CBEM_INSERTITEMW
- #define CBEM_SETITEM CBEM_SETITEMW
- #define CBEM_GETITEM CBEM_GETITEMW
- #else
- #define CBEM_INSERTITEM CBEM_INSERTITEMA
- #define CBEM_SETITEM CBEM_SETITEMA
- #define CBEM_GETITEM CBEM_GETITEMA
- #endif
- #if (_WIN32_WINNT >= 0x501)
- #define CBEM_SETWINDOWTHEME CCM_SETWINDOWTHEME
- #endif
- #define CBES_EX_NOEDITIMAGE 0x00000001
- #define CBES_EX_NOEDITIMAGEINDENT 0x00000002
- #define CBES_EX_PATHWORDBREAKPROC 0x00000004
- #if (_WIN32_IE >= 0x0400)
- #define CBES_EX_NOSIZELIMIT 0x00000008
- #define CBES_EX_CASESENSITIVE 0x00000010
- typedef struct {
- NMHDR hdr;
- COMBOBOXEXITEMA ceItem;
- } NMCOMBOBOXEXA, *PNMCOMBOBOXEXA;
- typedef struct {
- NMHDR hdr;
- COMBOBOXEXITEMW ceItem;
- } NMCOMBOBOXEXW, *PNMCOMBOBOXEXW;
- #ifdef UNICODE
- #define NMCOMBOBOXEX NMCOMBOBOXEXW
- #define PNMCOMBOBOXEX PNMCOMBOBOXEXW
- #define CBEN_GETDISPINFO CBEN_GETDISPINFOW
- #else
- #define NMCOMBOBOXEX NMCOMBOBOXEXA
- #define PNMCOMBOBOXEX PNMCOMBOBOXEXA
- #define CBEN_GETDISPINFO CBEN_GETDISPINFOA
- #endif
- #else
- typedef struct {
- NMHDR hdr;
- COMBOBOXEXITEM ceItem;
- } NMCOMBOBOXEX, *PNMCOMBOBOXEX;
- #define CBEN_GETDISPINFO (CBEN_FIRST - 0)
- #endif // _WIN32_IE >= 0x0400
- #if (_WIN32_IE >= 0x0400)
- #define CBEN_GETDISPINFOA (CBEN_FIRST - 0)
- #endif
- #define CBEN_INSERTITEM (CBEN_FIRST - 1)
- #define CBEN_DELETEITEM (CBEN_FIRST - 2)
- #define CBEN_BEGINEDIT (CBEN_FIRST - 4)
- #define CBEN_ENDEDITA (CBEN_FIRST - 5)
- #define CBEN_ENDEDITW (CBEN_FIRST - 6)
- #if (_WIN32_IE >= 0x0400)
- #define CBEN_GETDISPINFOW (CBEN_FIRST - 7)
- #endif
- #if (_WIN32_IE >= 0x0400)
- #define CBEN_DRAGBEGINA (CBEN_FIRST - 8)
- #define CBEN_DRAGBEGINW (CBEN_FIRST - 9)
- #ifdef UNICODE
- #define CBEN_DRAGBEGIN CBEN_DRAGBEGINW
- #else
- #define CBEN_DRAGBEGIN CBEN_DRAGBEGINA
- #endif
- #endif //(_WIN32_IE >= 0x0400)
- // lParam specifies why the endedit is happening
- #ifdef UNICODE
- #define CBEN_ENDEDIT CBEN_ENDEDITW
- #else
- #define CBEN_ENDEDIT CBEN_ENDEDITA
- #endif
- #define CBENF_KILLFOCUS 1
- #define CBENF_RETURN 2
- #define CBENF_ESCAPE 3
- #define CBENF_DROPDOWN 4
- #define CBEMAXSTRLEN 260
- #if (_WIN32_IE >= 0x0400)
- // CBEN_DRAGBEGIN sends this information ...
- typedef struct {
- NMHDR hdr;
- int iItemid;
- WCHAR szText[CBEMAXSTRLEN];
- }NMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW;
- typedef struct {
- NMHDR hdr;
- int iItemid;
- char szText[CBEMAXSTRLEN];
- }NMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA;
- #ifdef UNICODE
- #define NMCBEDRAGBEGIN NMCBEDRAGBEGINW
- #define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINW
- #define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINW
- #else
- #define NMCBEDRAGBEGIN NMCBEDRAGBEGINA
- #define LPNMCBEDRAGBEGIN LPNMCBEDRAGBEGINA
- #define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINA
- #endif
- #endif // _WIN32_IE >= 0x0400
- // CBEN_ENDEDIT sends this information...
- // fChanged if the user actually did anything
- // iNewSelection gives what would be the new selection unless the notify is failed
- // iNewSelection may be CB_ERR if there's no match
- typedef struct {
- NMHDR hdr;
- BOOL fChanged;
- int iNewSelection;
- WCHAR szText[CBEMAXSTRLEN];
- int iWhy;
- } NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW;
- typedef struct {
- NMHDR hdr;
- BOOL fChanged;
- int iNewSelection;
- char szText[CBEMAXSTRLEN];
- int iWhy;
- } NMCBEENDEDITA, *LPNMCBEENDEDITA,*PNMCBEENDEDITA;
- #ifdef UNICODE
- #define NMCBEENDEDIT NMCBEENDEDITW
- #define LPNMCBEENDEDIT LPNMCBEENDEDITW
- #define PNMCBEENDEDIT PNMCBEENDEDITW
- #else
- #define NMCBEENDEDIT NMCBEENDEDITA
- #define LPNMCBEENDEDIT LPNMCBEENDEDITA
- #define PNMCBEENDEDIT PNMCBEENDEDITA
- #endif
- #endif
- #endif // _WIN32_IE >= 0x0300
- //====== TAB CONTROL ==========================================================
- #ifndef NOTABCONTROL
- #ifdef _WIN32
- #define WC_TABCONTROLA "SysTabControl32"
- #define WC_TABCONTROLW L"SysTabControl32"
- #ifdef UNICODE
- #define WC_TABCONTROL WC_TABCONTROLW
- #else
- #define WC_TABCONTROL WC_TABCONTROLA
- #endif
- #else
- #define WC_TABCONTROL "SysTabControl"
- #endif
- // begin_r_commctrl
- #if (_WIN32_IE >= 0x0300)
- #define TCS_SCROLLOPPOSITE 0x0001 // assumes multiline tab
- #define TCS_BOTTOM 0x0002
- #define TCS_RIGHT 0x0002
- #define TCS_MULTISELECT 0x0004 // allow multi-select in button mode
- #endif
- #if (_WIN32_IE >= 0x0400)
- #define TCS_FLATBUTTONS 0x0008
- #endif
- #define TCS_FORCEICONLEFT 0x0010
- #define TCS_FORCELABELLEFT 0x0020
- #if (_WIN32_IE >= 0x0300)
- #define TCS_HOTTRACK 0x0040
- #define TCS_VERTICAL 0x0080
- #endif
- #define TCS_TABS 0x0000
- #define TCS_BUTTONS 0x0100
- #define TCS_SINGLELINE 0x0000
- #define TCS_MULTILINE 0x0200
- #define TCS_RIGHTJUSTIFY 0x0000
- #define TCS_FIXEDWIDTH 0x0400
- #define TCS_RAGGEDRIGHT 0x0800
- #define TCS_FOCUSONBUTTONDOWN 0x1000
- #define TCS_OWNERDRAWFIXED 0x2000
- #define TCS_TOOLTIPS 0x4000
- #define TCS_FOCUSNEVER 0x8000
- // end_r_commctrl
- #if (_WIN32_IE >= 0x0400)
- // EX styles for use with TCM_SETEXTENDEDSTYLE
- #define TCS_EX_FLATSEPARATORS 0x00000001
- #define TCS_EX_REGISTERDROP 0x00000002
- #endif
- #define TCM_GETIMAGELIST (TCM_FIRST + 2)
- #define TabCtrl_GetImageList(hwnd)
- (HIMAGELIST)SNDMSG((hwnd), TCM_GETIMAGELIST, 0, 0L)
- #define TCM_SETIMAGELIST (TCM_FIRST + 3)
- #define TabCtrl_SetImageList(hwnd, himl)
- (HIMAGELIST)SNDMSG((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(HIMAGELIST)(himl))
- #define TCM_GETITEMCOUNT (TCM_FIRST + 4)
- #define TabCtrl_GetItemCount(hwnd)
- (int)SNDMSG((hwnd), TCM_GETITEMCOUNT, 0, 0L)
- #define TCIF_TEXT 0x0001
- #define TCIF_IMAGE 0x0002
- #define TCIF_RTLREADING 0x0004
- #define TCIF_PARAM 0x0008
- #if (_WIN32_IE >= 0x0300)
- #define TCIF_STATE 0x0010
- #define TCIS_BUTTONPRESSED 0x0001
- #endif
- #if (_WIN32_IE >= 0x0400)
- #define TCIS_HIGHLIGHTED 0x0002
- #endif
- #if (_WIN32_IE >= 0x0300)
- #define TC_ITEMHEADERA TCITEMHEADERA
- #define TC_ITEMHEADERW TCITEMHEADERW
- #else
- #define tagTCITEMHEADERA _TC_ITEMHEADERA
- #define TCITEMHEADERA TC_ITEMHEADERA
- #define tagTCITEMHEADERW _TC_ITEMHEADERW
- #define TCITEMHEADERW TC_ITEMHEADERW
- #endif
- #define TC_ITEMHEADER TCITEMHEADER
- typedef struct tagTCITEMHEADERA
- {
- UINT mask;
- UINT lpReserved1;
- UINT lpReserved2;
- LPSTR pszText;
- int cchTextMax;
- int iImage;
- } TCITEMHEADERA, *LPTCITEMHEADERA;
- typedef struct tagTCITEMHEADERW
- {
- UINT mask;
- UINT lpReserved1;
- UINT lpReserved2;
- LPWSTR pszText;
- int cchTextMax;
- int iImage;
- } TCITEMHEADERW, *LPTCITEMHEADERW;
- #ifdef UNICODE
- #define TCITEMHEADER TCITEMHEADERW
- #define LPTCITEMHEADER LPTCITEMHEADERW
- #else
- #define TCITEMHEADER TCITEMHEADERA
- #define LPTCITEMHEADER LPTCITEMHEADERA
- #endif
- #if (_WIN32_IE >= 0x0300)
- #define TC_ITEMA TCITEMA
- #define TC_ITEMW TCITEMW
- #else
- #define tagTCITEMA _TC_ITEMA
- #define TCITEMA TC_ITEMA
- #define tagTCITEMW _TC_ITEMW
- #define TCITEMW TC_ITEMW
- #endif
- #define TC_ITEM TCITEM
- typedef struct tagTCITEMA
- {
- UINT mask;
- #if (_WIN32_IE >= 0x0300)
- DWORD dwState;
- DWORD dwStateMask;
- #else
- UINT lpReserved1;
- UINT lpReserved2;
- #endif
- LPSTR pszText;
- int cchTextMax;
- int iImage;
- LPARAM lParam;
- } TCITEMA, *LPTCITEMA;
- typedef struct tagTCITEMW
- {
- UINT mask;
- #if (_WIN32_IE >= 0x0300)
- DWORD dwState;
- DWORD dwStateMask;
- #else
- UINT lpReserved1;
- UINT lpReserved2;
- #endif
- LPWSTR pszText;
- int cchTextMax;
- int iImage;
- LPARAM lParam;
- } TCITEMW, *LPTCITEMW;
- #ifdef UNICODE
- #define TCITEM TCITEMW
- #define LPTCITEM LPTCITEMW
- #else
- #define TCITEM TCITEMA
- #define LPTCITEM LPTCITEMA
- #endif
- #define TCM_GETITEMA (TCM_FIRST + 5)
- #define TCM_GETITEMW (TCM_FIRST + 60)
- #ifdef UNICODE
- #define TCM_GETITEM TCM_GETITEMW
- #else
- #define TCM_GETITEM TCM_GETITEMA
- #endif
- #define TabCtrl_GetItem(hwnd, iItem, pitem)
- (BOOL)SNDMSG((hwnd), TCM_GETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem))
- #define TCM_SETITEMA (TCM_FIRST + 6)
- #define TCM_SETITEMW (TCM_FIRST + 61)
- #ifdef UNICODE
- #define TCM_SETITEM TCM_SETITEMW
- #else
- #define TCM_SETITEM TCM_SETITEMA
- #endif
- #define TabCtrl_SetItem(hwnd, iItem, pitem)
- (BOOL)SNDMSG((hwnd), TCM_SETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem))
- #define TCM_INSERTITEMA (TCM_FIRST + 7)
- #define TCM_INSERTITEMW (TCM_FIRST + 62)
- #ifdef UNICODE
- #define TCM_INSERTITEM TCM_INSERTITEMW
- #else
- #define TCM_INSERTITEM TCM_INSERTITEMA
- #endif
- #define TabCtrl_InsertItem(hwnd, iItem, pitem)
- (int)SNDMSG((hwnd), TCM_INSERTITEM, (WPARAM)(int)(iItem), (LPARAM)(const TC_ITEM *)(pitem))
- #define TCM_DELETEITEM (TCM_FIRST + 8)
- #define TabCtrl_DeleteItem(hwnd, i)
- (BOOL)SNDMSG((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
- #define TCM_DELETEALLITEMS (TCM_FIRST + 9)
- #define TabCtrl_DeleteAllItems(hwnd)
- (BOOL)SNDMSG((hwnd), TCM_DELETEALLITEMS, 0, 0L)
- #define TCM_GETITEMRECT (TCM_FIRST + 10)
- #define TabCtrl_GetItemRect(hwnd, i, prc)
- (BOOL)SNDMSG((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc))
- #define TCM_GETCURSEL (TCM_FIRST + 11)
- #define TabCtrl_GetCurSel(hwnd)
- (int)SNDMSG((hwnd), TCM_GETCURSEL, 0, 0)
- #define TCM_SETCURSEL (TCM_FIRST + 12)
- #define TabCtrl_SetCurSel(hwnd, i)
- (int)SNDMSG((hwnd), TCM_SETCURSEL, (WPARAM)(i), 0)
- #define TCHT_NOWHERE 0x0001
- #define TCHT_ONITEMICON 0x0002
- #define TCHT_ONITEMLABEL 0x0004
- #define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
- #if (_WIN32_IE >= 0x0300)
- #define LPTC_HITTESTINFO LPTCHITTESTINFO
- #define TC_HITTESTINFO TCHITTESTINFO
- #else
- #define tagTCHITTESTINFO _TC_HITTESTINFO
- #define TCHITTESTINFO TC_HITTESTINFO
- #define LPTCHITTESTINFO LPTC_HITTESTINFO
- #endif
- typedef struct tagTCHITTESTINFO
- {
- POINT pt;
- UINT flags;
- } TCHITTESTINFO, *LPTCHITTESTINFO;
- #define TCM_HITTEST (TCM_FIRST + 13)
- #define TabCtrl_HitTest(hwndTC, pinfo)
- (int)SNDMSG((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo))
- #define TCM_SETITEMEXTRA (TCM_FIRST + 14)
- #define TabCtrl_SetItemExtra(hwndTC, cb)
- (BOOL)SNDMSG((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
- #define TCM_ADJUSTRECT (TCM_FIRST + 40)
- #define TabCtrl_AdjustRect(hwnd, bLarger, prc)
- (int)SNDMSG(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)(bLarger), (LPARAM)(RECT *)prc)
- #define TCM_SETITEMSIZE (TCM_FIRST + 41)
- #define TabCtrl_SetItemSize(hwnd, x, y)
- (DWORD)SNDMSG((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
- #define TCM_REMOVEIMAGE (TCM_FIRST + 42)
- #define TabCtrl_RemoveImage(hwnd, i)
- (void)SNDMSG((hwnd), TCM_REMOVEIMAGE, i, 0L)
- #define TCM_SETPADDING (TCM_FIRST + 43)
- #define TabCtrl_SetPadding(hwnd, cx, cy)
- (void)SNDMSG((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
- #define TCM_GETROWCOUNT (TCM_FIRST + 44)
- #define TabCtrl_GetRowCount(hwnd)
- (int)SNDMSG((hwnd), TCM_GETROWCOUNT, 0, 0L)
- #define TCM_GETTOOLTIPS (TCM_FIRST + 45)
- #define TabCtrl_GetToolTips(hwnd)
- (HWND)SNDMSG((hwnd), TCM_GETTOOLTIPS, 0, 0L)
- #define TCM_SETTOOLTIPS (TCM_FIRST + 46)
- #define TabCtrl_SetToolTips(hwnd, hwndTT)
- (void)SNDMSG((hwnd), TCM_SETTOOLTIPS, (WPARAM)(hwndTT), 0L)
- #define TCM_GETCURFOCUS (TCM_FIRST + 47)
- #define TabCtrl_GetCurFocus(hwnd)
- (int)SNDMSG((hwnd), TCM_GETCURFOCUS, 0, 0)
- #define TCM_SETCURFOCUS (TCM_FIRST + 48)
- #define TabCtrl_SetCurFocus(hwnd, i)
- SNDMSG((hwnd),TCM_SETCURFOCUS, i, 0)
- #if (_WIN32_IE >= 0x0300)
- #define TCM_SETMINTABWIDTH (TCM_FIRST + 49)
- #define TabCtrl_SetMinTabWidth(hwnd, x)
- (int)SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x)
- #define TCM_DESELECTALL (TCM_FIRST + 50)
- #define TabCtrl_DeselectAll(hwnd, fExcludeFocus)
- (void)SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
- #endif
- #if (_WIN32_IE >= 0x0400)
- #define TCM_HIGHLIGHTITEM (TCM_FIRST + 51)
- #define TabCtrl_HighlightItem(hwnd, i, fHighlight)
- (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)(i), (LPARAM)MAKELONG (fHighlight, 0))
- #define TCM_SETEXTENDEDSTYLE (TCM_FIRST + 52) // optional wParam == mask
- #define TabCtrl_SetExtendedStyle(hwnd, dw)
- (DWORD)SNDMSG((hwnd), TCM_SETEXTENDEDSTYLE, 0, dw)
- #define TCM_GETEXTENDEDSTYLE (TCM_FIRST + 53)
- #define TabCtrl_GetExtendedStyle(hwnd)
- (DWORD)SNDMSG((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0)
- #define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
- #define TabCtrl_SetUnicodeFormat(hwnd, fUnicode)
- (BOOL)SNDMSG((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
- #define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
- #define TabCtrl_GetUnicodeFormat(hwnd)
- (BOOL)SNDMSG((hwnd), TCM_GETUNICODEFORMAT, 0, 0)
- #endif // _WIN32_IE >= 0x0400
- #define TCN_KEYDOWN (TCN_FIRST - 0)
- #if (_WIN32_IE >= 0x0300)
- #define TC_KEYDOWN NMTCKEYDOWN
- #else
- #define tagTCKEYDOWN _TC_KEYDOWN
- #define NMTCKEYDOWN TC_KEYDOWN
- #endif
- #ifdef _WIN32
- #include <pshpack1.h>
- #endif
- typedef struct tagTCKEYDOWN
- {
- NMHDR hdr;
- WORD wVKey;
- UINT flags;
- } NMTCKEYDOWN;
- #ifdef _WIN32
- #include <poppack.h>
- #endif
- #define TCN_SELCHANGE (TCN_FIRST - 1)
- #define TCN_SELCHANGING (TCN_FIRST - 2)
- #if (_WIN32_IE >= 0x0400)
- #define TCN_GETOBJECT (TCN_FIRST - 3)
- #endif // _WIN32_IE >= 0x0400
- #if (_WIN32_IE >= 0x0500)
- #define TCN_FOCUSCHANGE (TCN_FIRST - 4)
- #endif // _WIN32_IE >= 0x0500
- #endif // NOTABCONTROL
- //====== ANIMATE CONTROL ======================================================
- #ifndef NOANIMATE
- #ifdef _WIN32
- #define ANIMATE_CLASSW L"SysAnimate32"
- #define ANIMATE_CLASSA "SysAnimate32"
- #ifdef UNICODE
- #define ANIMATE_CLASS ANIMATE_CLASSW
- #else
- #define ANIMATE_CLASS ANIMATE_CLASSA
- #endif
- // begin_r_commctrl
- #define ACS_CENTER 0x0001
- #define ACS_TRANSPARENT 0x0002
- #define ACS_AUTOPLAY 0x0004
- #if (_WIN32_IE >= 0x0300)
- #define ACS_TIMER 0x0008 // don't use threads... use timers
- #endif
- // end_r_commctrl
- #define ACM_OPENA (WM_USER+100)
- #define ACM_OPENW (WM_USER+103)
- #ifdef UNICODE
- #define ACM_OPEN ACM_OPENW
- #else
- #define ACM_OPEN ACM_OPENA
- #endif
- #define ACM_PLAY (WM_USER+101)
- #define ACM_STOP (WM_USER+102)
- #define ACN_START 1
- #define ACN_STOP 2
- #define Animate_Create(hwndP, id, dwStyle, hInstance)
- CreateWindow(ANIMATE_CLASS, NULL,
- dwStyle, 0, 0, 0, 0, hwndP, (HMENU)(id), hInstance, NULL)
- #define Animate_Open(hwnd, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName))
- #define Animate_OpenEx(hwnd, hInst, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, (WPARAM)(hInst), (LPARAM)(LPTSTR)(szName))
- #define Animate_Play(hwnd, from, to, rep) (BOOL)SNDMSG(hwnd, ACM_PLAY, (WPARAM)(rep), (LPARAM)MAKELONG(from, to))
- #define Animate_Stop(hwnd) (BOOL)SNDMSG(hwnd, ACM_STOP, 0, 0)
- #define Animate_Close(hwnd) Animate_Open(hwnd, NULL)
- #define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1)
- #endif
- #endif // NOANIMATE
- #if (_WIN32_IE >= 0x0300)
- //====== MONTHCAL CONTROL ======================================================
- #ifndef NOMONTHCAL
- #ifdef _WIN32
- #define MONTHCAL_CLASSW L"SysMonthCal32"
- #define MONTHCAL_CLASSA "SysMonthCal32"
- #ifdef UNICODE
- #define MONTHCAL_CLASS MONTHCAL_CLASSW
- #else
- #define MONTHCAL_CLASS MONTHCAL_CLASSA
- #endif
- // bit-packed array of "bold" info for a month
- // if a bit is on, that day is drawn bold
- typedef DWORD MONTHDAYSTATE, *LPMONTHDAYSTATE;
- #define MCM_FIRST 0x1000
- // BOOL MonthCal_GetCurSel(HWND hmc, LPSYSTEMTIME pst)
- // returns FALSE if MCS_MULTISELECT
- // returns TRUE and sets *pst to the currently selected date otherwise
- #define MCM_GETCURSEL (MCM_FIRST + 1)
- #define MonthCal_GetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst))
- // BOOL MonthCal_SetCurSel(HWND hmc, LPSYSTEMTIME pst)
- // returns FALSE if MCS_MULTISELECT
- // returns TURE and sets the currently selected date to *pst otherwise
- #define MCM_SETCURSEL (MCM_FIRST + 2)
- #define MonthCal_SetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst))
- // DWORD MonthCal_GetMaxSelCount(HWND hmc)
- // returns the maximum number of selectable days allowed
- #define MCM_GETMAXSELCOUNT (MCM_FIRST + 3)
- #define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXSELCOUNT, 0, 0L)
- // BOOL MonthCal_SetMaxSelCount(HWND hmc, UINT n)
- // sets the max number days that can be selected iff MCS_MULTISELECT
- #define MCM_SETMAXSELCOUNT (MCM_FIRST + 4)
- #define MonthCal_SetMaxSelCount(hmc, n) (BOOL)SNDMSG(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L)
- // BOOL MonthCal_GetSelRange(HWND hmc, LPSYSTEMTIME rgst)
- // sets rgst[0] to the first day of the selection range
- // sets rgst[1] to the last day of the selection range
- #define MCM_GETSELRANGE (MCM_FIRST + 5)
- #define MonthCal_GetSelRange(hmc, rgst) SNDMSG(hmc, MCM_GETSELRANGE, 0, (LPARAM)(rgst))
- // BOOL MonthCal_SetSelRange(HWND hmc, LPSYSTEMTIME rgst)
- // selects the range of days from rgst[0] to rgst[1]
- #define MCM_SETSELRANGE (MCM_FIRST + 6)
- #define MonthCal_SetSelRange(hmc, rgst) SNDMSG(hmc, MCM_SETSELRANGE, 0, (LPARAM)(rgst))
- // DWORD MonthCal_GetMonthRange(HWND hmc, DWORD gmr, LPSYSTEMTIME rgst)
- // if rgst specified, sets rgst[0] to the starting date and
- // and rgst[1] to the ending date of the the selectable (non-grayed)
- // days if GMR_VISIBLE or all the displayed days (including grayed)
- // if GMR_DAYSTATE.
- // returns the number of months spanned by the above range.
- #define MCM_GETMONTHRANGE (MCM_FIRST + 7)
- #define MonthCal_GetMonthRange(hmc, gmr, rgst) (DWORD)SNDMSG(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst))
- // BOOL MonthCal_SetDayState(HWND hmc, int cbds, DAYSTATE *rgds)
- // cbds is the count of DAYSTATE items in rgds and it must be equal
- // to the value returned from MonthCal_GetMonthRange(hmc, GMR_DAYSTATE, NULL)
- // This sets the DAYSTATE bits for each month (grayed and non-grayed
- // days) displayed in the calendar. The first bit in a month's DAYSTATE
- // corresponts to bolding day 1, the second bit affects day 2, etc.
- #define MCM_SETDAYSTATE (MCM_FIRST + 8)
- #define MonthCal_SetDayState(hmc, cbds, rgds) SNDMSG(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds))
- // BOOL MonthCal_GetMinReqRect(HWND hmc, LPRECT prc)
- // sets *prc the minimal size needed to display one month
- // To display two months, undo the AdjustWindowRect calculation already done to
- // this rect, double the width, and redo the AdjustWindowRect calculation --
- // the monthcal control will display two calendars in this window (if you also
- // double the vertical size, you will get 4 calendars)
- // NOTE: if you want to gurantee that the "Today" string is not clipped,
- // get the MCM_GETMAXTODAYWIDTH and use the max of that width and this width
- #define MCM_GETMINREQRECT (MCM_FIRST + 9)
- #define MonthCal_GetMinReqRect(hmc, prc) SNDMSG(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc))
- // set colors to draw control with -- see MCSC_ bits below
- #define MCM_SETCOLOR (MCM_FIRST + 10)
- #define MonthCal_SetColor(hmc, iColor, clr) SNDMSG(hmc, MCM_SETCOLOR, iColor, clr)
- #define MCM_GETCOLOR (MCM_FIRST + 11)
- #define MonthCal_GetColor(hmc, iColor) SNDMSG(hmc, MCM_GETCOLOR, iColor, 0)
- #define MCSC_BACKGROUND 0 // the background color (between months)
- #define MCSC_TEXT 1 // the dates
- #define MCSC_TITLEBK 2 // background of the title
- #define MCSC_TITLETEXT 3
- #define MCSC_MONTHBK 4 // background within the month cal
- #define MCSC_TRAILINGTEXT 5 // the text color of header & trailing days
- // set what day is "today" send NULL to revert back to real date
- #define MCM_SETTODAY (MCM_FIRST + 12)
- #define MonthCal_SetToday(hmc, pst) SNDMSG(hmc, MCM_SETTODAY, 0, (LPARAM)(pst))
- // get what day is "today"
- // returns BOOL for success/failure
- #define MCM_GETTODAY (MCM_FIRST + 13)
- #define MonthCal_GetToday(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETTODAY, 0, (LPARAM)(pst))
- // determine what pinfo->pt is over
- #define MCM_HITTEST (MCM_FIRST + 14)
- #define MonthCal_HitTest(hmc, pinfo)
- SNDMSG(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)(pinfo))
- typedef struct {
- UINT cbSize;
- POINT pt;
- UINT uHit; // out param
- SYSTEMTIME st;
- } MCHITTESTINFO, *PMCHITTESTINFO;
- #define MCHT_TITLE 0x00010000
- #define MCHT_CALENDAR 0x00020000
- #define MCHT_TODAYLINK 0x00030000
- #define MCHT_NEXT 0x01000000 // these indicate that hitting
- #define MCHT_PREV 0x02000000 // here will go to the next/prev month
- #define MCHT_NOWHERE 0x00000000
- #define MCHT_TITLEBK (MCHT_TITLE)
- #define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001)
- #define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002)
- #define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003)
- #define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003)
- #define MCHT_CALENDARBK (MCHT_CALENDAR)
- #define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001)
- #define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT)
- #define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV)
- #define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002)
- #define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003)
- // set first day of week to iDay:
- // 0 for Monday, 1 for Tuesday, ..., 6 for Sunday
- // -1 for means use locale info
- #define MCM_SETFIRSTDAYOFWEEK (MCM_FIRST + 15)
- #define MonthCal_SetFirstDayOfWeek(hmc, iDay)
- SNDMSG(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay)
- // DWORD result... low word has the day. high word is bool if this is app set
- // or not (FALSE == using locale info)
- #define MCM_GETFIRSTDAYOFWEEK (MCM_FIRST + 16)
- #define MonthCal_GetFirstDayOfWeek(hmc)
- (DWORD)SNDMSG(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
- // DWORD MonthCal_GetRange(HWND hmc, LPSYSTEMTIME rgst)
- // modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
- // modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
- // returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
- #define MCM_GETRANGE (MCM_FIRST + 17)
- #define MonthCal_GetRange(hmc, rgst)
- (DWORD)SNDMSG(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst))
- // BOOL MonthCal_SetRange(HWND hmc, DWORD gdtr, LPSYSTEMTIME rgst)
- // if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
- // if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
- // returns TRUE on success, FALSE on error (such as invalid parameters)
- #define MCM_SETRANGE (MCM_FIRST + 18)
- #define MonthCal_SetRange(hmc, gd, rgst)
- (BOOL)SNDMSG(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
- // int MonthCal_GetMonthDelta(HWND hmc)
- // returns the number of months one click on a next/prev button moves by
- #define MCM_GETMONTHDELTA (MCM_FIRST + 19)
- #define MonthCal_GetMonthDelta(hmc)
- (int)SNDMSG(hmc, MCM_GETMONTHDELTA, 0, 0)
- // int MonthCal_SetMonthDelta(HWND hmc, int n)
- // sets the month delta to n. n==0 reverts to moving by a page of months
- // returns the previous value of n.
- #define MCM_SETMONTHDELTA (MCM_FIRST + 20)
- #define MonthCal_SetMonthDelta(hmc, n)
- (int)SNDMSG(hmc, MCM_SETMONTHDELTA, n, 0)
- // DWORD MonthCal_GetMaxTodayWidth(HWND hmc, LPSIZE psz)
- // sets *psz to the maximum width/height of the "Today" string displayed
- // at the bottom of the calendar (as long as MCS_NOTODAY is not specified)
- #define MCM_GETMAXTODAYWIDTH (MCM_FIRST + 21)
- #define MonthCal_GetMaxTodayWidth(hmc)
- (DWORD)SNDMSG(hmc, MCM_GETMAXTODAYWIDTH, 0, 0)
- #if (_WIN32_IE >= 0x0400)
- #define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
- #define MonthCal_SetUnicodeFormat(hwnd, fUnicode)
- (BOOL)SNDMSG((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
- #define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
- #define MonthCal_GetUnicodeFormat(hwnd)
- (BOOL)SNDMSG((hwnd), MCM_GETUNICODEFORMAT, 0, 0)
- #endif
- // MCN_SELCHANGE is sent whenever the currently displayed date changes
- // via month change, year change, keyboard navigation, prev/next button
- //
- typedef struct tagNMSELCHANGE
- {
- NMHDR nmhdr; // this must be first, so we don't break WM_NOTIFY
- SYSTEMTIME stSelStart;
- SYSTEMTIME stSelEnd;
- } NMSELCHANGE, *LPNMSELCHANGE;
- #define MCN_SELCHANGE (MCN_FIRST + 1)
- // MCN_GETDAYSTATE is sent for MCS_DAYSTATE controls whenever new daystate
- // information is needed (month or year scroll) to draw bolding information.
- // The app must fill in cDayState months worth of information starting from
- // stStart date. The app may fill in the array at prgDayState or change
- // prgDayState to point to a different array out of which the information
- // will be copied. (similar to tooltips)
- //
- typedef struct tagNMDAYSTATE
- {
- NMHDR nmhdr; // this must be first, so we don't break WM_NOTIFY
- SYSTEMTIME stStart;
- int cDayState;
- LPMONTHDAYSTATE prgDayState; // points to cDayState MONTHDAYSTATEs
- } NMDAYSTATE, *LPNMDAYSTATE;
- #define MCN_GETDAYSTATE (MCN_FIRST + 3)
- // MCN_SELECT is sent whenever a selection has occured (via mouse or keyboard)
- //
- typedef NMSELCHANGE NMSELECT, *LPNMSELECT;
- #define MCN_SELECT (MCN_FIRST + 4)
- // begin_r_commctrl
- #define MCS_DAYSTATE 0x0001
- #define MCS_MULTISELECT 0x0002
- #define MCS_WEEKNUMBERS 0x0004
- #if (_WIN32_IE >= 0x0400)
- #define MCS_NOTODAYCIRCLE 0x0008
- #define MCS_NOTODAY 0x0010
- #else
- #define MCS_NOTODAY 0x0008
- #endif
- // end_r_commctrl
- #define GMR_VISIBLE 0 // visible portion of display
- #define GMR_DAYSTATE 1 // above plus the grayed out parts of
- // partially displayed months
- #endif // _WIN32
- #endif // NOMONTHCAL
- //====== DATETIMEPICK CONTROL ==================================================
- #ifndef NODATETIMEPICK
- #ifdef _WIN32
- #define DATETIMEPICK_CLASSW L"SysDateTimePick32"
- #define DATETIMEPICK_CLASSA "SysDateTimePick32"
- #ifdef UNICODE
- #define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW
- #else
- #define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA
- #endif
- #define DTM_FIRST 0x1000
- // DWORD DateTimePick_GetSystemtime(HWND hdp, LPSYSTEMTIME pst)
- // returns GDT_NONE if "none" is selected (DTS_SHOWNONE only)
- // returns GDT_VALID and modifies *pst to be the currently selected value
- #define DTM_GETSYSTEMTIME (DTM_FIRST + 1)
- #define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst))
- // BOOL DateTime_SetSystemtime(HWND hdp, DWORD gd, LPSYSTEMTIME pst)
- // if gd==GDT_NONE, sets datetimepick to None (DTS_SHOWNONE only)
- // if gd==GDT_VALID, sets datetimepick to *pst
- // returns TRUE on success, FALSE on error (such as bad params)
- #define DTM_SETSYSTEMTIME (DTM_FIRST + 2)
- #define DateTime_SetSystemtime(hdp, gd, pst) (BOOL)SNDMSG(hdp, DTM_SETSYSTEMTIME, (WPARAM)(gd), (LPARAM)(pst))
- // DWORD DateTime_GetRange(HWND hdp, LPSYSTEMTIME rgst)
- // modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
- // modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
- // returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
- #define DTM_GETRANGE (DTM_FIRST + 3)
- #define DateTime_GetRange(hdp, rgst) (DWORD)SNDMSG(hdp, DTM_GETRANGE, 0, (LPARAM)(rgst))
- // BOOL DateTime_SetRange(HWND hdp, DWORD gdtr, LPSYSTEMTIME rgst)
- // if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
- // if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
- // returns TRUE on success, FALSE on error (such as invalid parameters)
- #define DTM_SETRANGE (DTM_FIRST + 4)
- #define DateTime_SetRange(hdp, gd, rgst) (BOOL)SNDMSG(hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
- // BOOL DateTime_SetFormat(HWND hdp, LPCTSTR sz)
- // sets the display formatting string to sz (see GetDateFormat and GetTimeFormat for valid formatting chars)
- // NOTE: 'X' is a valid formatting character which indicates that the application
- // will determine how to display information. Such apps must support DTN_WMKEYDOWN,
- // DTN_FORMAT, and DTN_FORMATQUERY.
- #define DTM_SETFORMATA (DTM_FIRST + 5)
- #define DTM_SETFORMATW (DTM_FIRST + 50)
- #ifdef UNICODE
- #define DTM_SETFORMAT DTM_SETFORMATW
- #else
- #define DTM_SETFORMAT DTM_SETFORMATA
- #endif
- #define DateTime_SetFormat(hdp, sz) (BOOL)SNDMSG(hdp, DTM_SETFORMAT, 0, (LPARAM)(sz))
- #define DTM_SETMCCOLOR (DTM_FIRST + 6)
- #define DateTime_SetMonthCalColor(hdp, iColor, clr) SNDMSG(hdp, DTM_SETMCCOLOR, iColor, clr)
- #define DTM_GETMCCOLOR (DTM_FIRST + 7)
- #define DateTime_GetMonthCalColor(hdp, iColor) SNDMSG(hdp, DTM_GETMCCOLOR, iColor, 0)
- // HWND DateTime_GetMonthCal(HWND hdp)
- // returns the HWND of the MonthCal popup window. Only valid
- // between DTN_DROPDOWN and DTN_CLOSEUP notifications.
- #define DTM_GETMONTHCAL (DTM_FIRST + 8)
- #define DateTime_GetMonthCal(hdp) (HWND)SNDMSG(hdp, DTM_GETMONTHCAL, 0, 0)
- #if (_WIN32_IE >= 0x0400)
- #define DTM_SETMCFONT (DTM_FIRST + 9)
- #define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) SNDMSG(hdp, DTM_SETMCFONT, (WPARAM)(hfont), (LPARAM)(fRedraw))
- #define DTM_GETMCFONT (DTM_FIRST + 10)
- #define DateTime_GetMonthCalFont(hdp) SNDMSG(hdp, DTM_GETMCFONT, 0, 0)
- #endif // _WIN32_IE >= 0x0400
- // begin_r_commctrl
- #define DTS_UPDOWN 0x0001 // use UPDOWN instead of MONTHCAL
- #define DTS_SHOWNONE 0x0002 // allow a NONE selection
- #define DTS_SHORTDATEFORMAT 0x0000 // use the short date format (app must forward WM_WININICHANGE messages)
- #define DTS_LONGDATEFORMAT 0x0004 // use the long date format (app must forward WM_WININICHANGE messages)
- #if (_WIN32_IE >= 0x500)
- #define DTS_SHORTDATECENTURYFORMAT 0x000C// short date format with century (app must forward WM_WININICHANGE messages)
- #endif // (_WIN32_IE >= 0x500)
- #define DTS_TIMEFORMAT 0x0009 // use the time format (app must forward WM_WININICHANGE messages)
- #define DTS_APPCANPARSE 0x0010 // allow user entered strings (app MUST respond to DTN_USERSTRING)
- #define DTS_RIGHTALIGN 0x0020 // right-align popup instead of left-align it
- // end_r_commctrl
- #define DTN_DATETIMECHANGE (DTN_FIRST + 1) // the systemtime has changed
- typedef struct tagNMDATETIMECHANGE
- {
- NMHDR nmhdr;
- DWORD dwFlags; // GDT_VALID or GDT_NONE
- SYSTEMTIME st; // valid iff dwFlags==GDT_VALID
- } NMDATETIMECHANGE, *LPNMDATETIMECHANGE;
- #define DTN_USERSTRINGA (DTN_FIRST + 2) // the user has entered a string
- #define DTN_USERSTRINGW (DTN_FIRST + 15)
- typedef struct tagNMDATETIMESTRINGA
- {
- NMHDR nmhdr;
- LPCSTR pszUserString; // string user entered
- SYSTEMTIME st; // app fills this in
- DWORD dwFlags; // GDT_VALID or GDT_NONE
- } NMDATETIMESTRINGA, *LPNMDATETIMESTRINGA;
- typedef struct tagNMDATETIMESTRINGW
- {
- NMHDR nmhdr;
- LPCWSTR pszUserString; // string user entered
- SYSTEMTIME st; // app fills this in
- DWORD dwFlags; // GDT_VALID or GDT_NONE
- } NMDATETIMESTRINGW, *LPNMDATETIMESTRINGW;
- #ifdef UNICODE
- #define DTN_USERSTRING DTN_USERSTRINGW
- #define NMDATETIMESTRING NMDATETIMESTRINGW
- #define LPNMDATETIMESTRING LPNMDATETIMESTRINGW
- #else
- #define DTN_USERSTRING DTN_USERSTRINGA
- #define NMDATETIMESTRING NMDATETIMESTRINGA
- #define LPNMDATETIMESTRING LPNMDATETIMESTRINGA
- #endif
- #define DTN_WMKEYDOWNA (DTN_FIRST + 3) // modify keydown on app format field (X)
- #define DTN_WMKEYDOWNW (DTN_FIRST + 16)
- typedef struct tagNMDATETIMEWMKEYDOWNA
- {
- NMHDR nmhdr;
- int nVirtKey; // virtual key code of WM_KEYDOWN which MODIFIES an X field
- LPCSTR pszFormat; // format substring
- SYSTEMTIME st; // current systemtime, app should modify based on key
- } NMDATETIMEWMKEYDOWNA, *LPNMDATETIMEWMKEYDOWNA;
- typedef struct tagNMDATETIMEWMKEYDOWNW
- {
- NMHDR nmhdr;
- int nVirtKey; // virtual key code of WM_KEYDOWN which MODIFIES an X field
- LPCWSTR pszFormat; // format substring
- SYSTEMTIME st; // current systemtime, app should modify based on key
- } NMDATETIMEWMKEYDOWNW, *LPNMDATETIMEWMKEYDOWNW;
- #ifdef UNICODE
- #define DTN_WMKEYDOWN DTN_WMKEYDOWNW
- #define NMDATETIMEWMKEYDOWN NMDATETIMEWMKEYDOWNW
- #define LPNMDATETIMEWMKEYDOWN LPNMDATETIMEWMKEYDOWNW
- #else
- #define DTN_WMKEYDOWN DTN_WMKEYDOWNA
- #define NMDATETIMEWMKEYDOWN NMDATETIMEWMKEYDOWNA
- #define LPNMDATETIMEWMKEYDOWN LPNMDATETIMEWMKEYDOWNA
- #endif
- #define DTN_FORMATA (DTN_FIRST + 4) // query display for app format field (X)
- #define DTN_FORMATW (DTN_FIRST + 17)
- typedef struct tagNMDATETIMEFORMATA
- {
- NMHDR nmhdr;
- LPCSTR pszFormat; // format substring
- SYSTEMTIME st; // current systemtime
- LPCSTR pszDisplay; // string to display
- CHAR szDisplay[64]; // buffer pszDisplay originally points at
- } NMDATETIMEFORMATA, *LPNMDATETIMEFORMATA;
- typedef struct tagNMDATETIMEFORMATW
- {
- NMHDR nmhdr;
- LPCWSTR pszFormat; // format substring
- SYSTEMTIME st; // current systemtime
- LPCWSTR pszDisplay; // string to display
- WCHAR szDisplay[64]; // buffer pszDisplay originally points at
- } NMDATETIMEFORMATW, *LPNMDATETIMEFORMATW;
- #ifdef UNICODE
- #define DTN_FORMAT DTN_FORMATW
- #define NMDATETIMEFORMAT NMDATETIMEFORMATW
- #define LPNMDATETIMEFORMAT LPNMDATETIMEFORMATW
- #else
- #define DTN_FORMAT DTN_FORMATA
- #define NMDATETIMEFORMAT NMDATETIMEFORMATA
- #define LPNMDATETIMEFORMAT LPNMDATETIMEFORMATA
- #endif
- #define DTN_FORMATQUERYA (DTN_FIRST + 5) // query formatting info for app format field (X)
- #define DTN_FORMATQUERYW (DTN_FIRST + 18)
- typedef struct tagNMDATETIMEFORMATQUERYA
- {
- NMHDR nmhdr;
- LPCSTR pszFormat; // format substring
- SIZE szMax; // max bounding rectangle app will use for this format string
- } NMDATETIMEFORMATQUERYA, *LPNMDATETIMEFORMATQUERYA;
- typedef struct tagNMDATETIMEFORMATQUERYW
- {
- NMHDR nmhdr;
- LPCWSTR pszFormat; // format substring
- SIZE szMax; // max bounding rectangle app will use for this format string
- } NMDATETIMEFORMATQUERYW, *LPNMDATETIMEFORMATQUERYW;
- #ifdef UNICODE
- #define DTN_FORMATQUERY DTN_FORMATQUERYW
- #define NMDATETIMEFORMATQUERY NMDATETIMEFORMATQUERYW
- #define LPNMDATETIMEFORMATQUERY LPNMDATETIMEFORMATQUERYW
- #else
- #define DTN_FORMATQUERY DTN_FORMATQUERYA
- #define NMDATETIMEFORMATQUERY NMDATETIMEFORMATQUERYA
- #define LPNMDATETIMEFORMATQUERY LPNMDATETIMEFORMATQUERYA
- #endif
- #define DTN_DROPDOWN (DTN_FIRST + 6) // MonthCal has dropped down
- #define DTN_CLOSEUP (DTN_FIRST + 7) // MonthCal is popping up
- #define GDTR_MIN 0x0001
- #define GDTR_MAX 0x0002
- #define GDT_ERROR -1
- #define GDT_VALID 0
- #define GDT_NONE 1
- #endif // _WIN32
- #endif // NODATETIMEPICK
- #if (_WIN32_IE >= 0x0400)
- #ifndef NOIPADDRESS
- ///////////////////////////////////////////////
- /// IP Address edit control
- // Messages sent to IPAddress controls
- #define IPM_CLEARADDRESS (WM_USER+100) // no parameters
- #define IPM_SETADDRESS (WM_USER+101) // lparam = TCP/IP address
- #define IPM_GETADDRESS (WM_USER+102) // lresult = # of non black fields. lparam = LPDWORD for TCP/IP address
- #define IPM_SETRANGE (WM_USER+103) // wparam = field, lparam = range
- #define IPM_SETFOCUS (WM_USER+104) // wparam = field
- #define IPM_ISBLANK (WM_USER+105) // no parameters
- #define WC_IPADDRESSW L"SysIPAddress32"
- #define WC_IPADDRESSA "SysIPAddress32"
- #ifdef UNICODE
- #define WC_IPADDRESS WC_IPADDRESSW
- #else
- #define WC_IPADDRESS WC_IPADDRESSA
- #endif
- #define IPN_FIELDCHANGED (IPN_FIRST - 0)
- typedef struct tagNMIPADDRESS
- {
- NMHDR hdr;
- int iField;
- int iValue;
- } NMIPADDRESS, *LPNMIPADDRESS;
- // The following is a useful macro for passing the range values in the
- // IPM_SETRANGE message.