ThemeMgr.hpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. // Borland C++ Builder
  2. // Copyright (c) 1995, 2002 by Borland Software Corporation
  3. // All rights reserved
  4. // (DO NOT EDIT: machine generated header) 'ThemeMgr.pas' rev: 6.00
  5. #ifndef ThemeMgrHPP
  6. #define ThemeMgrHPP
  7. #pragma delphiheader begin
  8. #pragma option push -w-
  9. #pragma option push -Vx
  10. #include <ThemeSrv.hpp> // Pascal unit
  11. #include <Forms.hpp> // Pascal unit
  12. #include <Buttons.hpp> // Pascal unit
  13. #include <StdCtrls.hpp> // Pascal unit
  14. #include <Controls.hpp> // Pascal unit
  15. #include <Graphics.hpp> // Pascal unit
  16. #include <Messages.hpp> // Pascal unit
  17. #include <Classes.hpp> // Pascal unit
  18. #include <Windows.hpp> // Pascal unit
  19. #include <SysInit.hpp> // Pascal unit
  20. #include <System.hpp> // Pascal unit
  21. //-- user supplied -----------------------------------------------------------
  22. namespace Thememgr
  23. {
  24. //-- type declarations -------------------------------------------------------
  25. #pragma option push -b-
  26. enum TThemeOption { toAllowNonClientArea, toAllowControls, toAllowWebContent, toSubclassAnimate, toSubclassButtons, toSubclassCheckListbox, toSubclassDBLookup, toSubclassFrame, toSubclassGroupBox, toSubclassListView, toSubclassPanel, toSubclassTabSheet, toSubclassSpeedButtons, toSubclassSplitter, toSubclassStatusBar, toSubclassTrackBar, toSubclassWinControl, toResetMouseCapture, toSetTransparency, toAlternateTabSheetDraw };
  27. #pragma option pop
  28. typedef Set<TThemeOption, toAllowNonClientArea, toAlternateTabSheetDraw> TThemeOptions;
  29. #pragma pack(push, 1)
  30. struct TWMPrint
  31. {
  32. unsigned Msg;
  33. HDC DC;
  34. unsigned Flags;
  35. int Result;
  36. } ;
  37. #pragma pack(pop)
  38. typedef TWMPrint TWMPrintClient;
  39. class DELPHICLASS TThemeManager;
  40. typedef void __fastcall (__closure *TAllowSubclassingEvent)(TThemeManager* Sender, Controls::TControl* Control, bool &Allow);
  41. typedef void __fastcall (__closure *TControlMessageEvent)(TThemeManager* Sender, Controls::TControl* Control, Messages::TMessage &Message, bool &Handled);
  42. typedef TControlMessageEvent *PControlMessageEvent;
  43. class DELPHICLASS TWindowProcList;
  44. class PASCALIMPLEMENTATION TWindowProcList : public Classes::TList
  45. {
  46. typedef Classes::TList inherited;
  47. private:
  48. bool FDirty;
  49. Controls::TControl* FLastControl;
  50. int FLastIndex;
  51. TThemeManager* FOwner;
  52. Classes::TWndMethod FNewWindowProc;
  53. TMetaClass*FControlClass;
  54. public:
  55. __fastcall TWindowProcList(TThemeManager* Owner, Classes::TWndMethod WindowProc, TMetaClass* ControlClass);
  56. __fastcall virtual ~TWindowProcList(void);
  57. HIDESBASE int __fastcall Add(Controls::TControl* Control);
  58. virtual void __fastcall Clear(void);
  59. void __fastcall DispatchMessage(Controls::TControl* Control, Messages::TMessage &Message);
  60. bool __fastcall Find(Controls::TControl* Control, /* out */ int &Index);
  61. HIDESBASE void __fastcall Remove(Controls::TControl* Control);
  62. };
  63. class PASCALIMPLEMENTATION TThemeManager : public Classes::TComponent
  64. {
  65. typedef Classes::TComponent inherited;
  66. private:
  67. TThemeOptions FOptions;
  68. TWindowProcList* FPanelList;
  69. TWindowProcList* FFrameList;
  70. TWindowProcList* FListViewList;
  71. TWindowProcList* FTabSheetList;
  72. TWindowProcList* FWinControlList;
  73. TWindowProcList* FGroupBoxList;
  74. TWindowProcList* FButtonControlList;
  75. TWindowProcList* FCheckBoxList;
  76. TWindowProcList* FButtonList;
  77. TWindowProcList* FSpeedButtonList;
  78. TWindowProcList* FSplitterList;
  79. TWindowProcList* FTrackBarList;
  80. TWindowProcList* FAnimateList;
  81. TWindowProcList* FStatusBarList;
  82. TWindowProcList* FCheckListBoxList;
  83. TWindowProcList* FFormList;
  84. Classes::TList* FListeners;
  85. Classes::TList* FPendingFormsList;
  86. Classes::TList* FPendingRecreationList;
  87. bool FSubclassingDisabled;
  88. bool FHookWasInstalled;
  89. Classes::TNotifyEvent FOnThemeChange;
  90. TControlMessageEvent FOnControlMessage;
  91. TAllowSubclassingEvent FOnAllowSubclassing;
  92. void __fastcall AnimateWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  93. void __fastcall ButtonControlWindowProc(Controls::TControl* Control, Messages::TMessage &Message, TWindowProcList* List);
  94. void __fastcall CheckListBoxWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  95. void __fastcall FormWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  96. void __fastcall FrameWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  97. bool __fastcall GetIsMainManager(void);
  98. void __fastcall GroupBoxWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  99. void __fastcall ListviewWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  100. bool __fastcall MainWindowHook(Messages::TMessage &Message);
  101. void __fastcall PanelWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  102. void __fastcall SetThemeOptions(const TThemeOptions Value);
  103. void __fastcall SpeedButtonWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  104. void __fastcall SplitterWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  105. void __fastcall StatusBarWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  106. void __fastcall TabSheetWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  107. void __fastcall TrackBarWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  108. void __fastcall WinControlWindowProc(Controls::TControl* Control, Messages::TMessage &Message);
  109. void __fastcall PreAnimateWindowProc(Messages::TMessage &Message);
  110. void __fastcall PreButtonControlWindowProc(Messages::TMessage &Message);
  111. void __fastcall PreCheckBoxWindowProc(Messages::TMessage &Message);
  112. void __fastcall PreButtonWindowProc(Messages::TMessage &Message);
  113. void __fastcall PreCheckListBoxWindowProc(Messages::TMessage &Message);
  114. void __fastcall PreFormWindowProc(Messages::TMessage &Message);
  115. void __fastcall PreFrameWindowProc(Messages::TMessage &Message);
  116. void __fastcall PreGroupBoxWindowProc(Messages::TMessage &Message);
  117. void __fastcall PreListviewWindowProc(Messages::TMessage &Message);
  118. void __fastcall PrePanelWindowProc(Messages::TMessage &Message);
  119. void __fastcall PreSpeedButtonWindowProc(Messages::TMessage &Message);
  120. void __fastcall PreSplitterWindowProc(Messages::TMessage &Message);
  121. void __fastcall PreStatusBarWindowProc(Messages::TMessage &Message);
  122. void __fastcall PreTabSheetWindowProc(Messages::TMessage &Message);
  123. void __fastcall PreTrackBarWindowProc(Messages::TMessage &Message);
  124. void __fastcall PreWinControlWindowProc(Messages::TMessage &Message);
  125. bool __fastcall GetThemesEnabled(void);
  126. protected:
  127. virtual void __fastcall AddRecreationCandidate(Controls::TControl* Control);
  128. void __fastcall BroadcastThemeChange(void);
  129. /* class method */ static TThemeManager* __fastcall CurrentThemeManager(TMetaClass* vmt);
  130. virtual bool __fastcall DoAllowSubclassing(Controls::TControl* Control);
  131. virtual bool __fastcall DoControlMessage(Controls::TControl* Control, Messages::TMessage &Message);
  132. virtual void __fastcall DoOnThemeChange(void);
  133. void __fastcall DrawBitBtn(Buttons::TBitBtn* Control, tagDRAWITEMSTRUCT &DrawItemStruct);
  134. void __fastcall DrawButton(Controls::TControl* Control, Themesrv::TThemedButton Button, HDC DC, const Types::TRect &R, bool Focused);
  135. bool __fastcall FindListener(TControlMessageEvent AControlMessage, int &Index);
  136. void __fastcall FixControls(Forms::TCustomForm* Form = (Forms::TCustomForm*)(0x0));
  137. virtual void __fastcall ForceAsMainManager(void);
  138. virtual void __fastcall HandleControlChange(Controls::TControl* Control, bool Inserting);
  139. bool __fastcall IsRecreationCandidate(Controls::TControl* Control);
  140. virtual void __fastcall Loaded(void);
  141. virtual bool __fastcall NeedsBorderPaint(Controls::TControl* Control);
  142. virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation);
  143. void __fastcall RemoveChildSubclassing(Controls::TWinControl* Control);
  144. void __fastcall RemoveRecreationCandidate(Controls::TControl* Control);
  145. void __fastcall UpdateThemes(void);
  146. void __fastcall UpdateUIState(Controls::TControl* Control, Word CharCode);
  147. public:
  148. __fastcall virtual TThemeManager(Classes::TComponent* AOwner);
  149. __fastcall virtual ~TThemeManager(void);
  150. Graphics::TColor __fastcall GetColor(Themesrv::TThemedElement Element, int PartId, int StateId, int PropId);
  151. __property bool ThemesEnabled = {read=GetThemesEnabled, nodefault};
  152. void __fastcall ClearLists(void);
  153. void __fastcall CollectForms(Forms::TCustomForm* Form = (Forms::TCustomForm*)(0x0));
  154. void __fastcall CollectControls(Controls::TWinControl* Parent);
  155. void __fastcall PerformEraseBackground(Controls::TControl* Control, HDC DC);
  156. void __fastcall RegisterListener(TControlMessageEvent AControlMessage);
  157. void __fastcall UnregisterListener(TControlMessageEvent AControlMessage);
  158. __property bool IsMainManager = {read=GetIsMainManager, nodefault};
  159. __published:
  160. __property TThemeOptions Options = {read=FOptions, write=SetThemeOptions, default=524279};
  161. __property TAllowSubclassingEvent OnAllowSubclassing = {read=FOnAllowSubclassing, write=FOnAllowSubclassing};
  162. __property TControlMessageEvent OnControlMessage = {read=FOnControlMessage, write=FOnControlMessage};
  163. __property Classes::TNotifyEvent OnThemeChange = {read=FOnThemeChange, write=FOnThemeChange};
  164. };
  165. //-- var, const, procedure ---------------------------------------------------
  166. #define TMVersion "1.10.1"
  167. static const Word CM_DENYSUBCLASSING = 0xb7d0;
  168. static const Word SPI_GETFOCUSBORDERWIDTH = 0x200e;
  169. static const Word SPI_SETFOCUSBORDERWIDTH = 0x200f;
  170. static const Word SPI_GETFOCUSBORDERHEIGHT = 0x2010;
  171. static const Word SPI_SETFOCUSBORDERHEIGHT = 0x2011;
  172. #define DefaultThemeOptions (System::Set<TThemeOption, toAllowNonClientArea, toAlternateTabSheetDraw> () << TThemeOption(0) << TThemeOption(1) << TThemeOption(2) << TThemeOption(4) << TThemeOption(5) << TThemeOption(6) << TThemeOption(7) << TThemeOption(8) << TThemeOption(9) << TThemeOption(10) << TThemeOption(11) << TThemeOption(12) << TThemeOption(13) << TThemeOption(14) << TThemeOption(15) << TThemeOption(16) << TThemeOption(17) << TThemeOption(18) )
  173. extern PACKAGE bool IsWindowsXP;
  174. } /* namespace Thememgr */
  175. using namespace Thememgr;
  176. #pragma option pop // -w-
  177. #pragma option pop // -Vx
  178. #pragma delphiheader end.
  179. //-- end unit ----------------------------------------------------------------
  180. #endif // ThemeMgr