ScreenSaverWnd.h
上传用户:szxyd1688
上传日期:2007-06-08
资源大小:1440k
文件大小:4k
源码类别:

屏幕保护

开发平台:

Visual C++

  1. // ScreenSaverWnd.h : header file
  2. //
  3. #ifndef __SCREENSAVERWND_H__
  4. #define __SCREENSAVERWND_H__
  5. /////////////////////////////////////////////////////////////////////////////
  6. // CScreenSaverWnd:
  7. // A Win95, Win98, WinNT3, WinNT4, WinNT5 compliant screen saver.
  8. //
  9. // There are several requirements to be a compliant screen saver.
  10. // These are very arbitrary, but have their historical roots to Windows 3.0
  11. // and the Microsoft Entertainment Pack 1.0 (IdleWild), as well as the
  12. // competing products also vying for a standard.
  13. //
  14. // For all screen savers,
  15. // * The name or description of the screen saver is in string 1.
  16. // * The icon for the screen saver is ID_APP, defined in <scrnsave.h> to 100.
  17. // * The WINAPI ScreenSaverProc() must be defined and exported.
  18. //   (The CScreenSaverWnd module implements this API for you.)
  19. // * The executable should be named with a .SCR file extension.
  20. //
  21. // For configurable screen savers,
  22. // * The dialog for configuring the screen saver is DLG_SCRNSAVECONFIGURE,
  23. //   defined in <scrnsave.h> to 2003.
  24. // * The WINAPI ScreenSaverConfigureDialog() must be defined and exported.
  25. // * The WINAPI RegisterDialogClasses() must be defined and exported.
  26. //   (The CScreenSaverDlg module implements these APIs for you.)
  27. //
  28. // Supporting configuration, by using CScreenSaverDlg or other methods,
  29. // is optional for compliant screen savers.  The RestoreOptions() member
  30. // function is called upon startup, but calling SaveOptions() is up to
  31. // the derived class; neither function does anything in the base definition.
  32. //
  33. // There should be no CWinApp object instantiated.  Instead, instantiate one
  34. // CScreenSaverWnd-derived object.  For configurable savers, instantiate one
  35. // CScreenSaverDlg-derived object also.  These can be done as globals.
  36. //
  37. // Win32 screen savers support password protection without supplying their
  38. // own dialogs, through a built-in feature of the operating system.  This
  39. // makes the password more secure than having each screen saver solve the
  40. // same problems in different ways.
  41. /////////////////////////////////////////////////////////////////////////////
  42. #include <scrnsave.h>
  43. class CScreenSaverWnd : public CWnd
  44. {
  45. DECLARE_DYNAMIC(CScreenSaverWnd)
  46. public:
  47. CScreenSaverWnd();
  48. // Attributes
  49. protected:
  50. BOOL m_bAutoBlack;
  51. CPalette* m_pPalette;
  52. public:
  53. BOOL IsAutoBlack() const;
  54. void SetAutoBlack(BOOL bAutoBlack = TRUE);
  55. //
  56. CPalette* GetPalette() const;
  57. CPalette* SetPalette(CPalette* pPalette);
  58. // Operations
  59. public:
  60. // Overridables
  61. public:
  62. virtual void OnDraw(CDC* pDC);
  63. virtual void OnInitialUpdate();
  64. virtual void SaveOptions();
  65. virtual void RestoreOptions();
  66. // Overrides
  67. public:
  68. //{{AFX_VIRTUAL(CScreenSaverWnd)
  69. //}}AFX_VIRTUAL
  70. // Implementation
  71. public:
  72. virtual ~CScreenSaverWnd();
  73. static CScreenSaverWnd* sm_pTheScreenSaver;
  74. protected:
  75. virtual LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
  76. virtual LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
  77. //{{AFX_MSG(CScreenSaverWnd)
  78. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  79. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  80. afx_msg void OnPaint();
  81. afx_msg BOOL OnQueryNewPalette();
  82. afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
  83. //}}AFX_MSG
  84. DECLARE_MESSAGE_MAP()
  85. //friend LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT uMsg,
  86. //                                      WPARAM wParam, LPARAM lParam);
  87. };
  88. /////////////////////////////////////////////////////////////////////////////
  89. inline CScreenSaverWnd* AfxGetScreenSaverWnd()
  90. {
  91. return CScreenSaverWnd::sm_pTheScreenSaver;
  92. }
  93. /////////////////////////////////////////////////////////////////////////////
  94. LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT uMsg,
  95.                                WPARAM wParam, LPARAM lParam);
  96. /////////////////////////////////////////////////////////////////////////////
  97. #endif // __SCREENSAVERWND_H__