// LISTVIEW PRIVATE DECLARATIONS #ifndef _INC_LISTVIEW #define _INC_LISTVIEW #ifdef WINNT_CAIRO #include "SelRange.h" /* Only enable folding names for the WinNT build of COMMCTL, if we / are building for 95 or later then we must address UI issues - auto / selection. */ #ifdef WIN32 #define FOLDING_NAMES #define CLIP_HEIGHT ( plv->cyLabelChar * 2 ) #define UNFOLD_ITEM( plv, pitem ) ( plv && pitem && \ ListView_IsIconView( plv ) && \ ( plv ->flags & LVF_UNFOLDED ) && \ ( pitem ->state & LVIS_FOCUSED ) ) #else #undef FOLDING_NAMES #undef CLIP_HEIGHT #undef UNFOLD_ITEM TRUE #endif // REVIEW: max items in a OWNERDATA listview // due to currently unknown reasons the listview will not handle much more // items than this. Since this number is very high, no time has yet been // spent on finding the reason(s). // #define MAX_LISTVIEWITEMS (100000000) #endif // Timer IDs #define IDT_NAMEEDIT 42 #define IDT_SCROLLWAIT 43 #define IDT_MARQUEE 44 // // use g_cxIconSpacing when you want the the global system metric // use lv_cxIconSpacing when you want the padded size of "icon" in a ListView // extern int g_cxIcon; extern int g_cyIcon; #define lv_cxIconSpacing (plv->cxIcon + (g_cxIconSpacing - g_cxIcon)) #define lv_cyIconSpacing (plv->cyIcon + (g_cyIconSpacing - g_cyIcon)) #define g_cxIconOffset ((g_cxIconSpacing - g_cxIcon) / 2) #define g_cyIconOffset (g_cyBorder * 2) // NOTE: Must be >= cyIconMargin! #define DT_LV (DT_CENTER | DT_SINGLELINE | DT_NOPREFIX | DT_EDITCONTROL) #define DT_LVWRAP (DT_CENTER | DT_WORDBREAK | DT_NOPREFIX | DT_EDITCONTROL) #define CCHLABELMAX MAX_PATH // BUGBUG dangerous??? BOOL FAR ListView_Init(HINSTANCE hinst); LRESULT CALLBACK _export ListView_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); #define ListView_DefProc DefWindowProc typedef struct _IMAGE IMAGE; // Report view sub-item structure typedef struct _LISTITEM // li { LPTSTR pszText; POINT pt; short iImage; short cxSingleLabel; short cxMultiLabel; short cyMultiLabel; WORD state; // LVIS_* LPARAM lParam; } LISTITEM; // special value for pt.y or cyLabel indicating recomputation needed // NOTE: icon ordering code considers (RECOMPUTE, RECOMPUTE) at end // of all icons // #ifdef WIN32 #define RECOMPUTE (DWORD)0x7FFFFFFF #define SRECOMPUTE ((short)0x7FFF) #else #define RECOMPUTE 0x7FFF #define SRECOMPUTE 0x7FFF #endif #define COLUMN_VIEW #define LV_HDPA_GROW 16 // Grow chunk size for DPAs #define LV_HIML_GROW 8 // Grow chunk size for ImageLists typedef struct _LV { /////////////////////// /// these 4 MUST BE IN THE SAME ORDER as CONTROLINFO in ctlspriv.h // hwnd, hwndparent, style, dwcustom.. all dword length (hwnd == dword) // after the "final" merge, this will actually be a controlinfo struct ///////////////// HWND hwnd; // tree window HWND hwndParent; // parent window to send notifys to DWORD style; // style bits DWORD dwCustom; // for custom draw /////////////////////// HDPA hdpa; // item array structure UINT flags; // LVF_ state bits HFONT hfontLabel; // font to use for labels COLORREF clrBk; // Background color COLORREF clrBkSave; // Background color saved during disable COLORREF clrText; // text color COLORREF clrTextBk; // text background color HBRUSH hbrBk; HANDLE hheap; // The heap to use to allocate memory from. int cyLabelChar; // height of '0' in hfont int cxLabelChar; // width of '0' int cxEllipses; // width of "..." int iDrag; // index of item being dragged int iFocus; // index of currently-focused item int iMark; // index of "mark" for range selection int iItemDrawing; // item currently being drawn int iFirstChangedNoRedraw; // Index of first item added during no redraw. UINT stateCallbackMask; // item state callback mask SIZE sizeClient; // current client rectangle UINT nSelected; int iPuntChar; HRGN hrgnInval; #ifdef FOLDING_NAMES HWND hwndToolTips; // handle of the tooltip window for this view int iTTLastHit; // last item hit for text LPTSTR lpTip; // buffer for tip #endif // Small icon view fields HIMAGELIST himlSmall; // small icons int cxSmIcon; // image list x-icon size int cySmIcon; // image list y-icon size int xOrigin; // Horizontal scroll posiiton int cxItem; // Width of small icon items int cyItem; // item height int cItemCol; // Number of items per column // Icon view fields HIMAGELIST himl; int cxIcon; // image list x-icon size int cyIcon; // image list y-icon size HDPA hdpaZOrder; // Large icon Z-order array POINT ptOrigin; // Scroll position RECT rcView; // Bounds of all icons (ptOrigin relative) HWND hwndEdit; // edit field for edit-label-in-place int iEdit; // item being edited WNDPROC pfnEditWndProc; // edit field subclass proc BOOL fNoDismissEdit; // don't dismiss in-place edit control // Report view fields int cCol; HDPA hdpaSubItems; HWND hwndHdr; // Header control int yTop; int xTotalColumnWidth; // Total width of all columns POINTL ptlRptOrigin; // Origin of Report. int iSelCol; // to handle column width changing. changing col int iSelOldWidth; // to handle column width changing. changing col width int cyItemSave; // in ownerdrawfixed mode, we put the height into cyItem. use this to save the old value // state image stuff HIMAGELIST himlState; int cxState; int cyState; // Ansi / Unicode stuff BOOL bUnicode; #ifdef WINNT_CAIRO // OWNERDATA stuff HSELRANGE hselrange; // selection ranges int cTotalItems; // number of items in the ownerdata lists #endif } LV; #define LV_StateImageValue(pitem) ((int)(((DWORD)((pitem)->state) >> 12) & 0xF)) #define LV_StateImageIndex(pitem) (LV_StateImageValue(pitem) - 1) // listview flag values #define LVF_FOCUSED 0x0001 #define LVF_VISIBLE 0x0002 #define LVF_ERASE 0x0004 /* is hrgnInval to be erased? */ #define LVF_NMEDITPEND 0x0008 #define LVF_REDRAW 0x0010 /* Value from WM_SETREDRAW message */ #define LVF_ICONPOSSML 0x0020 /* X, Y coords are in small icon view */ #define LVF_INRECOMPUTE 0x0040 /* Check to make sure we are not recursing */ #define LVF_FONTCREATED 0x0100 /* we created the LV font */ #define LVF_SCROLLWAIT 0x0200 /* we're waiting to scroll */ #define LVF_COLSIZESET 0x0400 /* Has the caller explictly set width for list view */ #define LVF_USERBKCLR 0x0800 /* user set the bk color (don't follow syscolorchange) */ #ifdef FOLDING_NAMES #define LVF_UNFOLDED 0x1000 /* Items are allowed to be unfolded */ #endif #ifdef FE_IME #define LVF_DONTDRAWCOMP 0x4000 /* do not draw IME composition if true */ #define LVF_INSERTINGCOMP 0x8000 /* Avoid recursion */ #endif #define ENTIRE_REGION 1 // listview DrawItem flags #define LVDI_NOIMAGE 0x0001 // don't draw image #define LVDI_TRANSTEXT 0x0002 // draw text transparently in black #define LVDI_NOWAYFOCUS 0x0004 // don't allow focus to drawing #define LVDI_FOCUS 0x0008 // focus is set (for drawing) #define LVDI_SELECTED 0x0010 // draw selected text #ifdef FOLDING_NAMES #define LVDI_UNFOLDED 0x0020 // draw the item unfolded (forced) #endif // listview child control ids #define LVID_HEADER 0 // Instance data pointer access functions #define ListView_GetPtr(hwnd) (LV*)GetWindowInt(hwnd, 0) #define ListView_SetPtr(hwnd, p) (LV*)SetWindowInt(hwnd, 0, (UINT)(p)) // view type check functions #define ListView_IsIconView(plv) (((plv)->style & (UINT)LVS_TYPEMASK) == (UINT)LVS_ICON) #define ListView_IsSmallView(plv) (((plv)->style & (UINT)LVS_TYPEMASK) == (UINT)LVS_SMALLICON) #define ListView_IsListView(plv) (((plv)->style & (UINT)LVS_TYPEMASK) == (UINT)LVS_LIST) #define ListView_IsReportView(plv) (((plv)->style & (UINT)LVS_TYPEMASK) == (UINT)LVS_REPORT) #ifdef WINNT_CAIRO #define ListView_IsOwnerData( plv ) (plv->style & (UINT)LVS_OWNERDATA) #endif // Some helper macros for checking some of the flags... #define ListView_RedrawEnabled(plv) ((plv->flags & (LVF_REDRAW | LVF_VISIBLE)) == (LVF_REDRAW|LVF_VISIBLE)) // The hdpaZorder is acutally an array of DWORDS which contains the // indexes of the items and not actual pointers... // NOTE: linear search! this can be slow #define ListView_ZOrderIndex(plv, i) DPA_GetPtrIndex((plv)->hdpaZOrder, (void FAR*)i) // Message handler functions (listview.c): LRESULT CALLBACK _export ListView_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); #ifdef WINNT_CAIRO BOOL NEAR ListView_NotifyCacheHint( LV* plv, int iFrom, int iTo ); #endif BOOL NEAR ListView_OnCreate(LV* plv, CREATESTRUCT FAR* lpCreateStruct); void NEAR ListView_OnNCDestroy(LV* plv); void NEAR ListView_OnPaint(LV* plv, HDC hdc); BOOL NEAR ListView_OnEraseBkgnd(LV* plv, HDC hdc); void NEAR ListView_OnCommand(LV* plv, int id, HWND hwndCtl, UINT codeNotify); void NEAR ListView_OnEnable(LV* plv, BOOL fEnable); BOOL NEAR ListView_OnWindowPosChanging(LV* plv, WINDOWPOS FAR* lpwpos); void NEAR ListView_OnWindowPosChanged(LV* plv, const WINDOWPOS FAR* lpwpos); void NEAR ListView_OnSetFocus(LV* plv, HWND hwndOldFocus); void NEAR ListView_OnKillFocus(LV* plv, HWND hwndNewFocus); void NEAR ListView_OnKey(LV* plv, UINT vk, BOOL fDown, int cRepeat, UINT flags); #ifdef FE_IME BOOL NEAR ListView_OnImeComposition(LV* plv, WPARAM wParam, LPARAM lParam); BOOL FAR PASCAL SameDBCSChars(LPSTR lpsz, WORD w); #endif void NEAR ListView_OnChar(LV* plv, UINT ch, int cRepeat); void NEAR ListView_OnButtonDown(LV* plv, BOOL fDoubleClick, int x, int y, UINT keyFlags); void NEAR ListView_OnMouseMove(LV* plv, int x, int y, UINT keyFlags); void NEAR ListView_OnLButtonUp(LV* plv, int x, int y, UINT keyFlags); void NEAR ListView_OnCancelMode(LV* plv); void NEAR ListView_OnTimer(LV* plv, UINT id); void NEAR ListView_SetupPendingNameEdit(LV* plv); #define ListView_CancelPendingEdit(plv) ListView_CancelPendingTimer(plv, LVF_NMEDITPEND, IDT_NAMEEDIT) #define ListView_CancelScrollWait(plv) ListView_CancelPendingTimer(plv, LVF_SCROLLWAIT, IDT_SCROLLWAIT) BOOL NEAR ListView_CancelPendingTimer(LV* plv, UINT fFlag, int idTimer); void NEAR ListView_OnHScroll(LV* plv, HWND hwndCtl, UINT code, int pos); void NEAR ListView_OnVScroll(LV* plv, HWND hwndCtl, UINT code, int pos); BOOL NEAR ListView_CommonArrange(LV* plv, UINT style, HDPA hdpaSort); BOOL NEAR ListView_OnSetCursor(LV* plv, HWND hwndCursor, UINT codeHitTest, UINT msg); UINT NEAR ListView_OnGetDlgCode(LV* plv, MSG FAR* lpmsg); HBRUSH NEAR ListView_OnCtlColor(LV* plv, HDC hdc, HWND hwndChild, int type); void NEAR ListView_OnSetFont(LV* plvCtl, HFONT hfont, BOOL fRedraw); HFONT NEAR ListView_OnGetFont(LV* plv); void NEAR ListViews_OnTimer(LV* plv, UINT id); void NEAR ListView_OnWinIniChange(LV* plv, WPARAM wParam); void NEAR PASCAL ListView_OnSysColorChange(LV* plv); void NEAR ListView_OnSetRedraw(LV* plv, BOOL fRedraw); HIMAGELIST NEAR ListView_OnCreateDragImage(LV *plv, int iItem, LPPOINT lpptUpLeft); BOOL FAR PASCAL ListView_ISetColumnWidth(LV* plv, int iCol, int cx, BOOL fExplicit); typedef void (FAR PASCAL *SCROLLPROC)(LV*, int dx, int dy); void FAR PASCAL ListView_ComOnScroll(LV* plv, UINT code, int posNew, int sb, int cLine, int cPage, SCROLLPROC); #ifdef UNICODE BOOL NEAR ListView_OnGetItemA(LV* plv, LV_ITEMA FAR* plvi); BOOL NEAR ListView_OnSetItemA(LV* plv, LV_ITEMA FAR* plvi); int NEAR ListView_OnInsertItemA(LV* plv, LV_ITEMA FAR* plvi); int NEAR ListView_OnFindItemA(LV* plv, int iStart, LV_FINDINFOA FAR* plvfi); int NEAR ListView_OnGetStringWidthA(LV* plv, LPCSTR psz); BOOL NEAR ListView_OnGetColumnA(LV* plv, int iCol, LV_COLUMNA FAR* pcol); BOOL NEAR ListView_OnSetColumnA(LV* plv, int iCol, LV_COLUMNA FAR* pcol); int NEAR ListView_OnInsertColumnA(LV* plv, int iCol, LV_COLUMNA FAR* pcol); int NEAR PASCAL ListView_OnGetItemTextA(LV* plv, int i, LV_ITEMA FAR *lvitem); BOOL WINAPI ListView_OnSetItemTextA(LV* plv, int i, int iSubItem, LPCSTR pszText); #endif BOOL NEAR ListView_OnSetBkColor(LV* plv, COLORREF clrBk); HIMAGELIST NEAR ListView_OnSetImageList(LV* plv, HIMAGELIST himl, BOOL fSmallImages); BOOL NEAR ListView_OnDeleteAllItems(LV* plv); int NEAR ListView_OnInsertItem(LV* plv, const LV_ITEM FAR* plvi); BOOL NEAR ListView_OnDeleteItem(LV* plv, int i); BOOL NEAR ListView_OnReplaceItem(LV* plv, const LV_ITEM FAR* plvi); int NEAR ListView_OnFindItem(LV* plv, int iStart, const LV_FINDINFO FAR* plvfi); BOOL NEAR ListView_OnSetItemPosition(LV* plv, int i, int x, int y); BOOL NEAR ListView_OnSetItem(LV* plv, const LV_ITEM FAR* plvi); BOOL NEAR ListView_OnGetItem(LV* plv, LV_ITEM FAR* plvi); BOOL NEAR ListView_OnGetItemPosition(LV* plv, int i, POINT FAR* ppt); BOOL NEAR ListView_OnEnsureVisible(LV* plv, int i, BOOL fPartialOK); BOOL NEAR ListView_OnScroll(LV* plv, int dx, int dy); int NEAR ListView_OnHitTest(LV* plv, LV_HITTESTINFO FAR* pinfo); int NEAR ListView_OnGetStringWidth(LV* plv, LPCTSTR psz); BOOL NEAR ListView_OnGetItemRect(LV* plv, int i, RECT FAR* prc); int NEAR ListView_OnInsertItem(LV* plv, const LV_ITEM FAR* plvi); BOOL NEAR ListView_OnRedrawItems(LV* plv, int iFirst, int iLast); int NEAR ListView_OnGetNextItem(LV* plv, int i, UINT flags); BOOL NEAR ListView_OnSetColumnWidth(LV* plv, int iCol, int cx); int NEAR ListView_OnGetColumnWidth(LV* plv, int iCol); void NEAR ListView_OnStyleChanged(LV* plv, UINT gwl, LPSTYLESTRUCT pinfo); int NEAR ListView_OnGetTopIndex(LV* plv); int NEAR ListView_OnGetCountPerPage(LV* plv); BOOL NEAR ListView_OnGetOrigin(LV* plv, POINT FAR* ppt); int NEAR PASCAL ListView_OnGetItemText(LV* plv, int i, LV_ITEM FAR *lvitem); BOOL WINAPI ListView_OnSetItemText(LV* plv, int i, int iSubItem, LPCTSTR pszText); HIMAGELIST NEAR ListView_OnGetImageList(LV* plv, int iImageList); UINT NEAR PASCAL ListView_OnGetItemState(LV* plv, int i, UINT mask); BOOL NEAR PASCAL ListView_OnSetItemState(LV* plv, int i, UINT data, UINT mask); // Private functions (listview.c): BOOL NEAR ListView_Notify(LV* plv, int i, int iSubItem, int code); void NEAR ListView_GetRects(LV* plv, int i, RECT FAR* prcIcon, RECT FAR* prcLabel, RECT FAR* prcBounds, RECT FAR* prcSelectBounds); BOOL NEAR ListView_DrawItem(LV* plv, int i, HDC hdc, LPPOINT lpptOrg, RECT FAR* prcClip, UINT flags); void NEAR ListView_InvalidateItem(LV* plv, int i, BOOL fSelectionOnly, UINT fRedraw); BOOL NEAR ListView_StartDrag(LV* plv, int iDrag, int x, int y); void NEAR ListView_TypeChange(LV* plv, DWORD styleOld); void NEAR PASCAL ListView_DeleteHrgnInval(LV* plv); void NEAR ListView_Redraw(LV* plv, HDC hdc, RECT FAR* prc); void NEAR ListView_RedrawSelection(LV* plv); BOOL NEAR ListView_FreeItem(LV* plv, LISTITEM FAR* pitem); LISTITEM FAR* NEAR ListView_CreateItem(LV* plv, const LV_ITEM FAR* plvi); void NEAR ListView_UpdateScrollBars(LV* plv); void FAR PASCAL ListView_Scroll2(LV* plv, int dx, int dy); int NEAR ListView_SetFocusSel(LV* plv, int iNewFocus, BOOL fSelect, BOOL fDeselectAll, BOOL fToggleSel); #ifdef WINNT_CAIRO void NEAR ListView_GetRectsOwnerData(LV* plv, int iItem, RECT FAR* prcIcon, RECT FAR* prcLabel, RECT FAR* prcBounds, RECT FAR* prcSelectBounds, LISTITEM* pitem); void ListView_CalcMinMaxIndex( LV* plv, PRECT prcBounding, int* iMin, int* iMax ); int ListView_LCalcViewItem( LV* plv, int x, int y ); #ifdef FOLDING_NAMES void NEAR ListView_UnfoldRects(LV* plv, int iItem, RECT FAR* prcIcon, RECT FAR* prcLabel, RECT FAR* prcBounds, RECT FAR* prcSelectBounds); #endif #define ListView_Count(plv) ( ListView_IsOwnerData( plv ) ? (plv)->cTotalItems : DPA_GetPtrCount((plv)->hdpa) ) #else #define ListView_Count(plv) DPA_GetPtrCount((plv)->hdpa) #endif #define ListView_GetItemPtr(plv, i) ((LISTITEM FAR*)(DWORD)DPA_GetPtr((plv)->hdpa, (i))) #ifdef DEBUG #define ListView_FastGetItemPtr(plv, i) ((LISTITEM FAR*)DPA_GetPtr((plv)->hdpa, (i))) #define ListView_FastGetZItemPtr(plv, i) ((LISTITEM FAR*)DPA_GetPtr((plv)->hdpa, \ (int)OFFSETOF(DPA_GetPtr((plv)->hdpaZOrder, (i))))) // Macros for getting and setting item state info for those listviews who have // no item data. #define ListView_NIDGetItemCXLabel(plv, i) ((SHORT)HIWORD(DPA_GetPtr((plv)->hdpa, (i)))) #define ListView_NIDGetItemState(plv, i) ((WORD)LOWORD(DPA_GetPtr((plv)->hdpa, (i)))) #define ListView_NIDSetItemCXLabel(plv, i, val) DPA_SetPtr((plv)->hdpa, (i), (void *)MAKELONG(ListView_NIDGetItemState((plv), (i)),(val))) #define ListView_NIDSetItemState(plv, i, val) DPA_SetPtr((plv)->hdpa, (i), (void *)MAKELONG((val),ListView_NIDGetItemCXLabel((plv), (i)))) #else #define ListView_FastGetItemPtr(plv, i) ((LISTITEM FAR*)DPA_FastGetPtr((plv)->hdpa, (i))) #define ListView_FastGetZItemPtr(plv, i) ((LISTITEM FAR*)DPA_FastGetPtr((plv)->hdpa, \ (int)OFFSETOF(DPA_FastGetPtr((plv)->hdpaZOrder, (i))))) #define ListView_NIDGetItemCXLabel(plv, i) ((SHORT)HIWORD(DPA_FastGetPtr((plv)->hdpa, (i)))) #define ListView_NIDGetItemState(plv, i) ((WORD)LOWORD(DPA_FastGetPtr((plv)->hdpa, (i)))) #define ListView_NIDSetItemCXLabel(plv, i, val) DPA_SetPtr((plv)->hdpa, (i), (void *)MAKELONG(ListView_NIDGetItemState((plv), (i)),(val))) #define ListView_NIDSetItemState(plv, i, val) DPA_SetPtr((plv)->hdpa, (i), (void *)MAKELONG((val),ListView_NIDGetItemCXLabel((plv), (i)))) #endif BOOL NEAR ListView_CalcMetrics(); void NEAR PASCAL ListView_ColorChange(); BOOL NEAR ListView_NeedsEllipses(HDC hdc, LPCTSTR pszText, RECT FAR* prc, int FAR* pcchDraw, int cxEllipses); int NEAR ListView_CompareString(LV* plv, int i, LPCTSTR pszFind, UINT flags, int iLen); int NEAR ListView_GetLinkedTextWidth(HDC hdc, LPCTSTR psz, UINT cch, BOOL bLink); // lvicon.c functions BOOL NEAR ListView_OnArrange(LV* plv, UINT style); HWND NEAR ListView_OnEditLabel(LV* plv, int i, LPTSTR pszText); void NEAR PASCAL ListView_IDrawItem(LV* plv, int i, HDC hdc, LPPOINT lpptOrg, RECT FAR* prcClip, UINT flags, COLORREF clrText, COLORREF clrTextBk); int NEAR ListView_IItemHitTest(LV* plv, int x, int y, UINT FAR* pflags); void NEAR ListView_IGetRects(LV* plv, LISTITEM FAR* pitem, RECT FAR* prcIcon, RECT FAR* prcLabel, LPRECT prcBounds); void NEAR ListView_ScaleIconPositions(LV* plv, BOOL fSmallIconView); #ifdef WINNT_CAIRO void NEAR ListView_IGetRectsOwnerData(LV* plv, int iItem, RECT FAR* prcIcon, RECT FAR* prcLabel, LISTITEM* pitem, BOOL fUsepitem); #endif void NEAR PASCAL _ListView_GetRectsFromItem(LV* plv, BOOL bSmallIconView, LISTITEM FAR *pitem, LPRECT prcIcon, LPRECT prcLabel, LPRECT prcBounds, LPRECT prcSelectBounds); void NEAR ListView_Recompute(LV* plv); HDC NEAR ListView_RecomputeLabelSize(LV* plv, LISTITEM FAR* pitem, int i, HDC hdc, BOOL fUsepitem); BOOL NEAR ListView_SetIconPos(LV* plv, LISTITEM FAR* pitem, int iSlot, int cSlot); int NEAR ListView_FindFreeSlot(LV* plv, int i, int iSlot, int cSlot, BOOL FAR* pfUpdateSB, BOOL FAR* pfAppend, HDC FAR* phdc); #ifdef WINNT_CAIRO int NEAR ListView_CalcHitSlot( LV* plv, POINT pt, int cslot ); #endif void NEAR ListView_GetViewRect2(LV* plv, RECT FAR* prcView, int cx, int cy); int CALLBACK ArrangeIconCompare(LISTITEM FAR* pitem1, LISTITEM FAR* pitem2, LPARAM lParam); int NEAR ListView_GetSlotCount(LV* plv, BOOL fWithoutScroll); void NEAR ListView_IUpdateScrollBars(LV* plv); DWORD NEAR ListView_GetClientRect(LV* plv, RECT FAR* prcClient, BOOL fSubScrolls, RECT FAR *prcViewRect); void NEAR ListView_SetEditSize(LV* plv); BOOL NEAR ListView_DismissEdit(LV* plv, BOOL fCancel); LRESULT CALLBACK _export ListView_EditWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); void NEAR ListView_IOnScroll(LV* plv, UINT code, int posNew, BOOL fVert); void FAR PASCAL ListView_IScroll2(LV* plv, int dx, int dy); // REVIEW: these are useful for other controls, use other header file? void FAR PASCAL SetEditInPlaceSize(HWND hwndEdit, RECT FAR *prc, HFONT hFont, BOOL fNoWrap); HWND FAR PASCAL CreateEditInPlaceWindow(HWND hwnd, LPCTSTR lpText, int cbText, LONG style, HFONT hFont); UINT NEAR PASCAL ListView_DrawImage(LV* plv, LV_ITEM FAR* pitem, HDC hdc, int x, int y, UINT fDraw); #ifdef FE_IME void NEAR PASCAL ListView_SizeIME(HWND hwnd); void NEAR PASCAL ListView_InsertComposition(HWND hwnd, WPARAM wParam, LPARAM lParam, LV *plv); void NEAR PASCAL ListView_PaintComposition(HWND hwnd, LV *plv); #endif // lvsmall.c functions: void NEAR PASCAL ListView_SDrawItem(LV* plv, int i, HDC hdc, LPPOINT lpptOrg, RECT FAR* prcClip, UINT flags, COLORREF clrText, COLORREF clrTextBk); void NEAR ListView_SGetRects(LV* plv, LISTITEM FAR* pitem, RECT FAR* prcIcon, RECT FAR* prcLabel, LPRECT prcBounds); #ifdef WINNT_CAIRO void NEAR ListView_SGetRectsOwnerData(LV* plv, int iItem, RECT FAR* prcIcon, RECT FAR* prcLabel, LISTITEM* pitem, BOOL fUsepitem); #endif int NEAR ListView_SItemHitTest(LV* plv, int x, int y, UINT FAR* pflags); void NEAR ListView_SUpdateScrollBars(LV* plv); void NEAR ListView_SOnScroll(LV* plv, UINT code, int posNew); int NEAR ListView_LookupString(LV* plv, LPCTSTR lpszLookup, UINT flags, int iStart); // lvlist.c functions: void NEAR PASCAL ListView_LDrawItem(LV* plv, int i, LISTITEM FAR* pitem, HDC hdc, LPPOINT lpptOrg, RECT FAR* prcClip, UINT flags, COLORREF clrText, COLORREF clrTextBk); void NEAR ListView_LGetRects(LV* plv, int i, RECT FAR* prcIcon, RECT FAR* prcLabel, RECT FAR *prcBounds, RECT FAR* prcSelectBounds); int NEAR ListView_LItemHitTest(LV* plv, int x, int y, UINT FAR* pflags); void NEAR ListView_LUpdateScrollBars(LV* plv); void NEAR ListView_LOnScroll(LV* plv, UINT code, int posNew); void FAR PASCAL ListView_LScroll2(LV* plv, int dx, int dy); BOOL FAR PASCAL ListView_MaybeResizeListColumns(LV* plv, int iFirst, int iLast); // lvrept.c functions: int NEAR ListView_OnInsertColumn(LV* plv, int iCol, const LV_COLUMN FAR* pcol); BOOL NEAR ListView_OnDeleteColumn(LV* plv, int iCol); BOOL NEAR ListView_OnGetColumn(LV* plv, int iCol, LV_COLUMN FAR* pcol); BOOL NEAR ListView_OnSetColumn(LV* plv, int iCol, const LV_COLUMN FAR* pcol); BOOL NEAR ListView_ROnEnsureVisible(LV* plv, int i, BOOL fPartialOK); void NEAR PASCAL ListView_RInitialize(LV* plv, BOOL fInval); #define ListView_RYHitTest(plv, cy) ((int)(((cy) + plv->ptlRptOrigin.y - plv->yTop) / plv->cyItem)) BOOL NEAR ListView_SetSubItem(LV* plv, const LV_ITEM FAR* plvi); int NEAR ListView_RGetColumnWidth(LV* plv, int iCol); BOOL NEAR ListView_RSetColumnWidth(LV* plv, int iCol, int cx); LPTSTR NEAR ListView_GetSubItemText(LV* plv, int i, int iCol); void NEAR ListView_RDestroy(LV* plv); LPTSTR NEAR ListView_RGetItemText(LV* plv, int i, int iCol); int NEAR ListView_RItemHitTest(LV* plv, int x, int y, UINT FAR* pflags); void NEAR ListView_ROnScroll(LV* plv, UINT code, int posNew, UINT sb); void FAR PASCAL ListView_RScroll2(LV* plv, int dx, int dy); void NEAR ListView_RUpdateScrollBars(LV* plv); BOOL NEAR PASCAL ListView_RDrawItem(LV* plv, int i, LISTITEM FAR* pitem, HDC hdc, LPPOINT lpptOrg, RECT FAR* prcClip, UINT flags, COLORREF clrText, COLORREF clrTextBk); void NEAR ListView_RGetRects(LV* plv, int iItem, RECT FAR* prcIcon, RECT FAR* prcLabel, RECT FAR* prcBounds, RECT FAR* prcSelectBounds); BOOL NEAR ListView_ROnNotify(LV* plv, int idFrom, NMHDR FAR* pnmhdr); void NEAR ListView_FreeColumnData(HDPA hdpa); BOOL FAR PASCAL SameChars(LPTSTR lpsz, TCHAR c); #define ListView_GetSubItemDPA(plv, idpa) \ ((HDPA)DPA_GetPtr((plv)->hdpaSubItems, (idpa))) // lvfile.c functions // BOOL NEAR ListView_OnWrite(LV* plv, STREAM FAR* pstm, UINT flags); // HWND NEAR ListView_OnRead(STREAM FAR* pstm, LV_READINFO FAR* pinfo); int NEAR ListView_Arrow(LV* plv, int iStart, UINT vk); //============ External declarations ======================================= //extern HFONT g_hfontLabel; extern HBRUSH g_hbrActiveLabel; extern HBRUSH g_hbrInactiveLabel; extern HBRUSH g_hbrBackground; #endif //!_INC_LISTVIEW