CLV_ListView.h
上传用户:hxb_1234
上传日期:2010-03-30
资源大小:8328k
文件大小:5k
源码类别:

VC书籍

开发平台:

Visual C++

  1. ////////////////////////////////////////////////////////////////////////////////
  2. ////////////////////////////////////////////////////////////////////////////////
  3. //
  4. // Custom ListView
  5. //
  6. ////////////////////////////////////////////////////////////////////////////////
  7. ////////////////////////////////////////////////////////////////////////////////
  8. //
  9. typedef enum _CPe_CustomDrawColour
  10. {
  11.     cdcNormal,
  12.     cdcHighlighted,
  13.     cdcLowlighted
  14. } CPe_CustomDrawColour;
  15. //
  16. typedef enum _CPe_ListColumnAlign
  17. {
  18.     lcaLeft,
  19.     lcaCentre,
  20.     lcaRight,
  21. } CPe_ListColumnAlign;
  22. //
  23. ////////////////////////////////////////////////////////////////////////////////
  24. typedef const char*(*wp_GetItemText)(const void* pvItemData);
  25. typedef CPe_CustomDrawColour(*wp_GetItemDrawColour)(const void* pvItemData);
  26. typedef void* CP_HLISTVIEW;
  27. ////////////////////////////////////////////////////////////////////////////////
  28. //
  29. CP_HLISTVIEW CLV_Create(HWND hWndParent, const int iX, const int iY, const int iWidth, const int iHeight);
  30. HWND CLV_GetHWND(CP_HLISTVIEW _hListData);
  31. void CLV_BeginBatch(CP_HLISTVIEW _hListData);
  32. void CLV_EndBatch(CP_HLISTVIEW _hListData);
  33. //
  34. // Header state
  35. void CLV_AddColumn(CP_HLISTVIEW _hListData, const char* pcTitle, const int iWidth, wp_GetItemText pfnItemTextAccessor, const DWORD dwFlags);
  36. void CLV_SetColumnCustomDrawColour(CP_HLISTVIEW _hListData, const int iColumnIDX, wp_GetItemDrawColour pfnGetCustomDrawColour);
  37. void CLV_SetColumnAlign(CP_HLISTVIEW _hListData, const int iColumnIDX, const CPe_ListColumnAlign enNewAlign);
  38. void CLV_SetColumnOrder(CP_HLISTVIEW _hListData, const unsigned int* pOrder, const unsigned int iNumColumnsInArray);
  39. void CLV_GetColumnOrder(CP_HLISTVIEW _hListData, unsigned int* pOrder, const unsigned int iNumColumnsInArray);
  40. void CLV_GetColumnVisibleState(CP_HLISTVIEW _hListData, BOOL* pStates, const unsigned int iNumColumnsInArray);
  41. void CLV_GetColumnWidths(CP_HLISTVIEW _hListData, int* pWidths, const unsigned int iNumColumnsInArray);
  42. //
  43. // Items
  44. int CLV_AddItem(CP_HLISTVIEW _hListData, const void* pvItemData);
  45. void CLV_RemoveAllItems(CP_HLISTVIEW _hListData);
  46. void CLV_SetItem(CP_HLISTVIEW _hListData, const int iItemIDX, const void* pvItemData);
  47. void CLV_DeleteItem(CP_HLISTVIEW _hListData, const int iItemIDX);
  48. int CLV_GetItemCount(CP_HLISTVIEW _hListData);
  49. void CLV_InvalidateItem(CP_HLISTVIEW _hListData, const int iItemIDX);
  50. void CLV_InvalidateColumn(CP_HLISTVIEW _hListData, const int iColumnIDX);
  51. void CLV_Invalidate(CP_HLISTVIEW _hListData);
  52. void CLV_SetItemData(CP_HLISTVIEW _hListData, const int iItemIDX, const void* pvItemData);
  53. const void* CLV_GetItemData(CP_HLISTVIEW _hListData, const int iItemIDX);
  54. int CLV_GetNearestItem(CP_HLISTVIEW _hListData, const POINT* ptMouse);
  55. void CLV_GetItemSubRect(CP_HLISTVIEW _hListData, RECT* pRect, const int iItemIDX, const int iColumnIDX);
  56. //
  57. // Focus
  58. void CLV_SetFocusItem(CP_HLISTVIEW _hListData, int iNewItemIDX);
  59. int CLV_GetFocusItem(CP_HLISTVIEW _hListData);
  60. //
  61. // Selection
  62. void CLV_ClearSelection(CP_HLISTVIEW _hListData);
  63. int CLV_GetNextSelectedItem(CP_HLISTVIEW _hListData, const int iSearchStart);
  64. int CLV_GetPrevSelectedItem(CP_HLISTVIEW _hListData, const int _iSearchStart);
  65. void CLV_SetItemSelected(CP_HLISTVIEW _hListData, const int iItemIDX, const BOOL bSelected);
  66. BOOL CLV_IsItemSelected(CP_HLISTVIEW _hListData, const int iItemIDX);
  67. void CLV_EnsureVisible(CP_HLISTVIEW _hListData, const int iItemIDX);
  68. ////////////////////////////////////////////////////////////////////////////////
  69. ////////////////////////////////////////////////////////////////////////////////
  70. // Callback handlers
  71. typedef void (*wp_DrawBackgroundRect)(CPs_DrawContext* pDC);
  72. void CLV_sethandler_DrawBackgroundRect(CP_HLISTVIEW _hListData, wp_DrawBackgroundRect pfnHandler);
  73. //
  74. typedef void (*wp_HeaderChanged)(CP_HLISTVIEW _hListData);
  75. void CLV_sethandler_HeaderChanged(CP_HLISTVIEW _hListData, wp_HeaderChanged pfnHandler);
  76. //
  77. typedef void (*wp_ColHeaderClick)(CP_HLISTVIEW _hListData, const int iColIDX);
  78. void CLV_sethandler_ColHeaderClick(CP_HLISTVIEW _hListData, wp_ColHeaderClick pfnHandler);
  79. //
  80. typedef void (*wp_UnhandledKeyPress)(CP_HLISTVIEW _hListData, const int iVKey, const BOOL bAlt, const BOOL bCtrl, const BOOL bShift);
  81. void CLV_sethandler_UnhandledKeyPress(CP_HLISTVIEW _hListData, wp_UnhandledKeyPress pfnHandler);
  82. //
  83. // Item callbacks
  84. typedef void (*wp_ItemCallback)(CP_HLISTVIEW _hListData, const int iItemIDX, const void* pItemData);
  85. typedef void (*wp_ItemSubCallback)(CP_HLISTVIEW _hListData, const int iItemIDX, const int iColumnIDX, const void* pItemData);
  86. //
  87. void CLV_sethandler_ItemSelected(CP_HLISTVIEW _hListData, wp_ItemCallback pfnHandler);
  88. void CLV_sethandler_ItemAction(CP_HLISTVIEW _hListData, wp_ItemCallback pfnHandler);
  89. void CLV_sethandler_ItemDrag(CP_HLISTVIEW _hListData, wp_ItemCallback pfnHandler);
  90. void CLV_sethandler_ItemRightClick(CP_HLISTVIEW _hListData, wp_ItemSubCallback pfnHandler);
  91. ////////////////////////////////////////////////////////////////////////////////
  92. ////////////////////////////////////////////////////////////////////////////////
  93. // Column flags
  94. #define CPLV_COLFLAG_NONE 0L
  95. #define CPLV_COLFLAG_LOCKRESIZE 1L
  96. #define CPLV_COLFLAG_NOHIDE 2L
  97. #define CPLV_COLFLAG_HIDDEN 4L
  98. //
  99. // Item flags
  100. #define CPLV_ITEMFLAG_NONE 0L
  101. #define CPLV_ITEMFLAG_SELECTED 1L
  102. //
  103. // General
  104. #define CPC_INVALIDCOLUMN -1
  105. #define CPC_INVALIDITEM -1
  106. ////////////////////////////////////////////////////////////////////////////////