1
0

loginpage.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #ifndef NULLSOFT_AUTH_LOGINPAGE_HEADER
  2. #define NULLSOFT_AUTH_LOGINPAGE_HEADER
  3. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  4. #pragma once
  5. #endif
  6. #include <wtypes.h>
  7. #define NLPM_FIRST (WM_APP + 10)
  8. #define NLPM_PAGEFIRST (NLPM_FIRST + 40)
  9. #define NLPM_GETLOGINDATA (NLPM_FIRST + 0) // wParam - not used, lParam = (LPARAM)(LoginData**)__ppLoginData; Return: TRUE on success.
  10. #define LoginPage_GetData(/*HWND*/ __hwnd, /*LoginData** */ __ppLoginData)\
  11. ((BOOL)(SNDMSG((__hwnd), NLPM_GETLOGINDATA, 0, (LPARAM)(__ppLoginData))))
  12. #define NLPM_UPDATESTATECHANGE (NLPM_FIRST + 1) // wParam - not used, lParam = (BOOL)__updateActive; Return - ignored
  13. #define LoginPage_UpdateStateChange(/*HWND*/ __hwnd, /*BOOL*/ __updateActive)\
  14. ((BOOL)(SNDMSG((__hwnd), NLPM_UPDATESTATECHANGE, 0, (LPARAM)(__updateActive))))
  15. #define NLPM_SETUSERNAME (NLPM_FIRST + 2) // wParam - not used, lParam = (LPARAM)(LPCWSTR)__pszUsername; Return TRUE on success
  16. #define LoginPage_SetUsername(/*HWND*/ __hwnd, /*LPCWSTR*/ __pszUsername)\
  17. ((BOOL)(SNDMSG((__hwnd), NLPM_SETUSERNAME, 0, (LPARAM)(__pszUsername))))
  18. #define NLPM_SETPASSWORD (NLPM_FIRST + 3) // wParam - not used, lParam = (LPARAM)(LPCWSTR)__pszPassword; Return TRUE on success
  19. #define LoginPage_SetPassword(/*HWND*/ __hwnd, /*LPCWSTR*/ __pszPassword)\
  20. ((BOOL)(SNDMSG((__hwnd), NLPM_SETPASSWORD, 0, (LPARAM)(__pszPassword))))
  21. #define NLPM_GETFIRSTITEM (NLPM_FIRST + 4) // wParam - not used, lParam - not used; Return HWND where you want focus to be on page create or NULL.
  22. #define LoginPage_GetFirstItem(/*HWND*/ __hwnd)\
  23. ((HWND)(SNDMSG((__hwnd), NLPM_GETFIRSTITEM, 0, 0L)))
  24. #define NLPM_SETTITLE (NLPM_FIRST + 5) // wParam - not used, lParam = (LPARAM)(LPCWSTR)__pszTitle; Return TRUE on success
  25. #define LoginPage_SetTitle(/*HWND*/ __hwnd, /*LPCWSTR*/ __pszTitle)\
  26. ((BOOL)(SNDMSG((__hwnd), NLPM_SETTITLE, 0, (LPARAM)(__pszTitle))))
  27. class LoginPage;
  28. class LoginData;
  29. typedef HRESULT (CALLBACK *LOGINPAGECREATOR)(HWND /*hwnd*/, HWND /*hLoginbox*/, LoginPage** /*instance*/);
  30. class __declspec(novtable) LoginPage
  31. {
  32. protected:
  33. LoginPage(HWND hwnd, HWND hLoginbox);
  34. virtual ~LoginPage();
  35. public:
  36. static HWND CreatePage(HWND hLoginbox, LPCWSTR pszTemplate, HWND hParent, LPARAM param, LOGINPAGECREATOR fnCreator);
  37. protected:
  38. virtual void UpdateMargins();
  39. virtual void UpdateColors();
  40. virtual void UpdateLayout(BOOL fRedraw);
  41. virtual BOOL GetPageRect(RECT *prc);
  42. BOOL ShowHelp();
  43. BOOL IsHelpAvailable();
  44. INT GetTitleSpacing();
  45. BOOL SetLabelText(INT controlId, LPCWSTR pszText);
  46. protected:
  47. virtual BOOL OnInitDialog(HWND hFocus, LPARAM param);
  48. virtual void OnDestroy();
  49. virtual void OnWindowPosChanged(const WINDOWPOS *pwp);
  50. virtual void OnCommand(UINT commandId, UINT eventType, HWND hControl);
  51. virtual BOOL OnNotify(UINT controlId, const NMHDR *pnmh);
  52. virtual BOOL OnSetCursor(HWND hTarget, INT hitCode, INT uMsg);
  53. virtual HBRUSH OnGetStaticColor(HDC hdc, HWND hControl);
  54. virtual HBRUSH OnGetDialogColor(HDC hdc, HWND hControl);
  55. virtual BOOL OnHelp(HELPINFO *phi);
  56. virtual void OnThemeChanged();
  57. virtual void OnSysColorChanged();
  58. virtual BOOL OnGetLoginData(LoginData **ppLoginData);
  59. virtual void OnUpdateStateChange(BOOL updateActive);
  60. virtual BOOL OnSetUsername(LPCWSTR pszUsername);
  61. virtual BOOL OnSetPassword(LPCWSTR pszPassword);
  62. virtual HWND OnGetFirstItem();
  63. virtual BOOL OnSetTitle(LPCWSTR pszTitle);
  64. virtual INT_PTR DialogProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
  65. private:
  66. friend static INT_PTR CALLBACK LoginPage_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  67. protected:
  68. HWND hwnd;
  69. HWND hLoginbox;
  70. RECT margins;
  71. COLORREF rgbTitle;
  72. COLORREF rgbSecondaryText;
  73. COLORREF rgbText;
  74. COLORREF rgbBack;
  75. HBRUSH hbrBack;
  76. };
  77. #endif //NULLSOFT_AUTH_LOGINPAGE_HEADER