loginTab.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. #ifndef NULLSOFT_AUTH_LOGIN_TAB_HEADER
  2. #define NULLSOFT_AUTH_LOGIN_TAB_HEADER
  3. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  4. #pragma once
  5. #endif
  6. #include <wtypes.h>
  7. #include <commctrl.h>
  8. #define NWC_LOGINTAB L"NullsoftLoginTab"
  9. BOOL LoginTab_RegisterClass(HINSTANCE hInstance);
  10. HWND LoginTab_CreateWindow(UINT styleEx, LPCWSTR pszTitle, UINT style, INT x, INT y, INT cx, INT cy, HWND hParent, INT_PTR controlId);
  11. typedef struct __NLTITEM
  12. {
  13. UINT mask;
  14. UINT dwState;
  15. UINT dwStateMask;
  16. LPWSTR pszText;
  17. UINT cchTextMax;
  18. UINT iImage;
  19. UINT iImageActive;
  20. UINT iImageDisabled;
  21. LPARAM param;
  22. } NLTITEM;
  23. // Item mask flags
  24. #define NLTIF_STATE 0x00000001
  25. #define NLTIF_TEXT 0x00000002
  26. #define NLTIF_PARAM 0x00000004
  27. #define NLTIF_IMAGE_MASK (NLTIF_IMAGE | NLTIF_IMAGE_ACTIVE | NLTIF_IMAGE_DISABLED)
  28. #define NLTIF_IMAGE 0x00000010
  29. #define NLTIF_IMAGE_ACTIVE 0x00000020
  30. #define NLTIF_IMAGE_DISABLED 0x00000040
  31. // Item states
  32. #define NLTIS_PRESSED 0x00000001
  33. #define NLTIS_HIGHLIGHTED 0x00000002
  34. #define NLTIS_SELECTED 0x00000004
  35. #define NLTIS_DISABLED 0x00000008
  36. // image index values
  37. #define NLTM_IMAGE_NONE ((UINT)-1)
  38. #define NLTM_IMAGE_CALLBACK ((UINT)-2)
  39. // Messages
  40. #define NLTM_FIRST (WM_USER + 10)
  41. #define NLTM_GETIDEALHEIGHT (NLTM_FIRST + 0) // wParam - not used, lParam - not used; Return ideal height.
  42. #define LoginTab_GetIdealHeight(/*HWND*/ __hwnd)\
  43. ((INT)SNDMSG((__hwnd), NLTM_GETIDEALHEIGHT, 0, 0L))
  44. #define NLTM_INSERTITEM (NLTM_FIRST + 1) // wParam = (WPARAM)(INT)iItem, lParam = (LPARAM)(NLTITEM*)pItem; Return = index of new item or -1.
  45. #define LoginTab_InsertItem(/*HWND*/ __hwnd, /*INT*/ __iItem, /*NLTITEM* */ __pItem)\
  46. ((INT)SNDMSG((__hwnd), NLTM_INSERTITEM, (WPARAM)(__iItem), (LPARAM)(__pItem)))
  47. #define NLTM_SETITEM (NLTM_FIRST + 2) // wParam = (WPARAM)(INT)iItem, lParam = (LPARAM)(NLTITEM*)pItem; Return = TRUE on success.
  48. #define LoginTab_SetItem(/*HWND*/ __hwnd, /*INT*/ __iItem, /*NLTITEM* */ __pItem)\
  49. ((BOOL)SNDMSG((__hwnd), NLTM_SETITEM, (WPARAM)(__iItem), (LPARAM)(__pItem)))
  50. #define NLTM_GETITEM (NLTM_FIRST + 3) // wParam = (WPARAM)(INT)iItem, lParam = (LPARAM)(NLTITEM*)pItem; Return = TRUE on success.
  51. #define LoginTab_GetItem(/*HWND*/ __hwnd, /*INT*/ __iItem, /*NLTITEM* */ __pItem)\
  52. ((BOOL)SNDMSG((__hwnd), NLTM_GETITEM, (WPARAM)(__iItem), (LPARAM)(__pItem)))
  53. #define NLTM_DELETEITEM (NLTM_FIRST + 4) // wParam = (WPARAM)(INT)iItem, lParam - not used; Return = TRUE on success.
  54. #define LoginTab_DeleteItem(/*HWND*/ __hwnd, /*INT*/ __iItem)\
  55. ((BOOL)SNDMSG((__hwnd), NLTM_DELETEITEM, (WPARAM)(__iItem), 0L))
  56. #define NLTM_DELETEALLITEMS (NLTM_FIRST + 5) // wParam - not used, lParam - not used; Return = TRUE on success.
  57. #define LoginTab_DeleteAllItems(/*HWND*/ __hwnd)\
  58. ((BOOL)SNDMSG((__hwnd), NLTM_DELETEALLITEMS, 0, 0L))
  59. #define NLTM_GETITEMCOUNT (NLTM_FIRST + 6) // wParam - not used, lParam - not used; Return item count.
  60. #define LoginTab_GetItemCount(/*HWND*/ __hwnd)\
  61. ((INT)SNDMSG((__hwnd), NLTM_GETITEMCOUNT, 0, 0L))
  62. #define NLTM_GETCURSEL (NLTM_FIRST + 7) // wParam - not used, lParam - not used; Return item index or -1
  63. #define LoginTab_GetCurSel(/*HWND*/ __hwnd)\
  64. ((INT)SNDMSG((__hwnd), NLTM_GETCURSEL, 0, 0L))
  65. #define NLTM_SETCURSEL (NLTM_FIRST + 8) // wParam = (WPARAM)(INT)iItem, lParam - not used; Return index of previously selected item if successful, or -1.
  66. #define LoginTab_SetCurSel(/*HWND*/ __hwnd, /*INT*/ __iItem)\
  67. ((INT)SNDMSG((__hwnd), NLTM_SETCURSEL, (WPARAM)(__iItem), 0L))
  68. #define NLTM_SETIMAGELIST (NLTM_FIRST + 9) // wParam - not used, lParam - (LPARAM)(HIMAGELIST)himl; Returns the handle to the previous image list, or NULL if there is no previous image list.
  69. #define LoginTab_SetImageList(/*HWND*/ __hwnd, /*HIMAGELIST*/ __himl)\
  70. ((HIMAGELIST)SNDMSG((__hwnd), NLTM_SETIMAGELIST, 0, (LPARAM)(__himl)))
  71. #define NLTM_GETIMAGELIST (NLTM_FIRST + 10) // wParam - not used, lParam - not used; Returns the handle to the image list if successful, or NULL otherwise.
  72. #define LoginTab_GetImageList(/*HWND*/ __hwnd)\
  73. ((HIMAGELIST)SNDMSG((__hwnd), NLTM_GETIMAGELIST, 0, 0L))
  74. #define NLTM_RESETORDER (NLTM_FIRST + 11) // wParam - not used, lParam - not used; Return - ignored
  75. #define LoginTab_ResetOrder(/*HWND*/ __hwnd)\
  76. (SNDMSG((__hwnd), NLTM_RESETORDER, 0, 0L))
  77. #define NLTM_LOCKSELECTION (NLTM_FIRST + 12) // wParam - (BOOL)fLock, lParam - not used; Return - ignored.
  78. #define LoginTab_LockSelection(/*HWND*/ __hwnd, /*BOOL*/ __fLock)\
  79. (SNDMSG((__hwnd), NLTM_LOCKSELECTION, (WPARAM)(__fLock), 0L))
  80. #define NLTM_GETIDEALWIDTH (NLTM_FIRST + 13) // wParam = (WPARAM)(INT)itemCount, lParam - not used; Return ideal width.
  81. #define LoginTab_GetIdealWidth(/*HWND*/ __hwnd, /*INT*/ __itemCount)\
  82. ((INT)SNDMSG((__hwnd), NLTM_GETIDEALWIDTH, (WPARAM)(__itemCount), 0L))
  83. // Notifications
  84. typedef struct __NMLOGINTAB
  85. {
  86. NMHDR hdr;
  87. INT iItem;
  88. } NMLOGINTAB;
  89. typedef struct __NMLOGINTABHELP
  90. {
  91. NMHDR hdr;
  92. INT iItem;
  93. LPARAM param;
  94. BSTR bstrHelp;
  95. } NMLOGINTABHELP;
  96. typedef struct __NMLOGINTABCLICK
  97. {
  98. NMHDR hdr;
  99. POINT pt;
  100. } NMLOGINTABCLICK;
  101. typedef struct __NMLOGINTABIMAGE
  102. {
  103. NMHDR hdr;
  104. INT iItem;
  105. LPARAM param;
  106. HIMAGELIST imageList;
  107. UINT maskRequest;
  108. UINT maskUpdate;
  109. UINT iImage;
  110. UINT iImageActive;
  111. UINT iImageDisabled;
  112. } NMLOGINTABIMAGE;
  113. #define NLTN_FIRST (0 + 10)
  114. #define NLTN_SELCHANGE (NLTN_FIRST + 0) // pnmh = (NMHDR*)lParam;
  115. #define NLTN_DELETEITEM (NLTN_FIRST + 1) // pnmh = (NMLOGINTAB*)lParam;
  116. #define NLTN_DELETEALLITEMS (NLTN_FIRST + 2) // pnmh = (NMLOGINTAB*)lParam; iItem = -1, return TRUE if you don't want to receive NLTN_DELETEITEM
  117. #define NLTN_GETITEMHELP (NLTN_FIRST + 3) // pnmh = (NMLOGINTABHELP*)lParam;
  118. #define NLTN_GETITEMIMAGE (NLTN_FIRST + 4) // pnmh = (NMLOGINTABIMAGE*)lParam;
  119. // common notifications
  120. //NM_RCLICK - pnmh = (NMLOGINTABCLICK*)lParam;
  121. //styles
  122. #define NLTS_LOCKED 0x00000001
  123. #endif //NULLSOFT_AUTH_LOGIN_TAB_HEADER