XTGlobal.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:23k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTGlobal.h interface for the CXTAuxData struct.
  2. //
  3. // This file is a part of the XTREME CONTROLS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTGLOBALS_H__)
  22. #define __XTGLOBALS_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. // ----------------------------------------------------------------------
  28. // Summary:
  29. //     CXTTcbItem class is used to maintain information for a
  30. //     particular tab item in a CXTExcelTabCtrl, CXTTabCtrl and CXTTabView object.
  31. // See Also:
  32. //     CXTExcelTabCtrl, CXTTabCtrl and CXTTabView
  33. // ----------------------------------------------------------------------
  34. class _XTP_EXT_CLASS CXTTcbItem
  35. {
  36. public:
  37. //-------------------------------------------------------------------------
  38. // Summary:
  39. //     Constructs an CXTTcbItem object
  40. //-------------------------------------------------------------------------
  41. CXTTcbItem();
  42. UINT     uiToolTipId;       // Resource ID for the tooltip.
  43. CWnd*    pWnd;              // A CWnd pointer to the window associated with a tab.
  44. CString  szTabLabel;        // User specified label for the tab.
  45. CString  szToolTipLabel;    // Tooltip text for the tab.
  46. CString  szCondensedLabel;  // The label actually being displayed for auto-condensing tabs.
  47. DWORD    dwStyle;           // Stores the window style when the tab item was created.
  48. DWORD    dwExStyle;         // Stores the extended window style when the tab item was created.
  49. COLORREF crTabBack;         // Application defined tab background color.
  50. COLORREF crTabText;         // Application defined tab text color.
  51. COLORREF crTabSelBack;      // Application defined selected tab background color.
  52. COLORREF crTabSelText;      // Application defined selected tab text color.
  53. };
  54. //{{AFX_CODEJOCK_PRIVATE
  55. #define XT_TCB_ITEM CXTTcbItem // deprecated
  56. //}}AFX_CODEJOCK_PRIVATE
  57. //=============================================================================
  58. // Summary:
  59. //     CXTNonClientMetrics is a self initializing NONCLIENTMETRICS derived
  60. //     class. It contains the scalable metrics associated with the
  61. //     non-client area of a non-minimized window.  This class is used by
  62. //     the SPI_GETNONCLIENTMETRICS and SPI_SETNONCLIENTMETRICS actions of
  63. //     SystemParametersInfo.
  64. // Example:
  65. //     The following example demonstrates using CXTNonClientMetrics.
  66. // <code>
  67. // CXTLogFont lfMenuFont;
  68. // CXTNonClientMetrics ncm;
  69. //
  70. // lfMenuFont.lfCharSet = (BYTE)::GetTextCharsetInfo (dc, NULL, 0);
  71. // lfMenuFont.lfHeight  = ncm.lfMenuFont.lfHeight;
  72. // lfMenuFont.lfWeight  = ncm.lfMenuFont.lfWeight;
  73. // lfMenuFont.lfItalic  = ncm.lfMenuFont.lfItalic;
  74. //
  75. // STRCPY_S(lfMenuFont.lfFaceName, LF_FACESIZE, ncm.lfMenuFont.lfFaceName);
  76. // </code>
  77. //=============================================================================
  78. class _XTP_EXT_CLASS CXTNonClientMetrics : public NONCLIENTMETRICS
  79. {
  80. public:
  81. //-------------------------------------------------------------------------
  82. // Summary:
  83. //     Constructs an CXTNonClientMetrics object
  84. //-------------------------------------------------------------------------
  85. CXTNonClientMetrics();
  86. };
  87. // --------------------------------------------------------------------
  88. // Summary:
  89. //     The CXTAuxDataTheme class is used by the CXTAuxData class
  90. //     to provide backward compatibility with older versions that still
  91. //     use <i>bXPMode</i> to provide Office XP theme support.
  92. // --------------------------------------------------------------------
  93. class _XTP_EXT_CLASS CXTAuxDataTheme
  94. {
  95. public:
  96. // ---------------------------------------------------------------------
  97. // Summary:
  98. //     Determines if Office XP themes are enabled for standard common
  99. //     controls.
  100. // Remarks:
  101. //     Returns BOOL (MFC typedef) value. TRUE means that Office XP
  102. //     themes are enabled for standard common controls; FALSE otherwise.
  103. // ---------------------------------------------------------------------
  104. operator BOOL();
  105. // -------------------------------------------------------------------
  106. // Summary:
  107. //     This operator will toggle the Office XP theme for standard
  108. //     controls.
  109. // Parameters:
  110. //     bXPMode -  [in] TRUE to enable Office XP theme.
  111. // Remarks:
  112. //     Use this operator overload to enable or disable Office XP theme
  113. //     support for standard common controls.
  114. // Returns:
  115. //     TRUE if Office XP themes are enabled; otherwise FALSE.
  116. // -------------------------------------------------------------------
  117. BOOL operator=(BOOL bXPMode);
  118. };
  119. //=============================================================================
  120. // Summary:
  121. //     CXTLogFont is a self initializing LOGFONT derived class. It
  122. //     will allow you to create or copy a LOGFONT object, and defines the
  123. //     attributes of a font.
  124. //=============================================================================
  125. class _XTP_EXT_CLASS CXTLogFont : public LOGFONT
  126. {
  127. public:
  128. //-------------------------------------------------------------------------
  129. // Summary:
  130. //     Constructs an CXTLogFont object.
  131. //     The copy constructor will construct an CXTLogFont object and copy
  132. //     the data specified by 'logfont' into the structure's data members.
  133. // Parameters:
  134. //     logfont - Valid address of a LOGFONT structure.
  135. //-------------------------------------------------------------------------
  136. CXTLogFont();
  137. CXTLogFont(LOGFONT& logfont); //<combine CXTLogFont::CXTLogFont>
  138. public:
  139. //-------------------------------------------------------------------------
  140. // Summary:
  141. //     This overloaded operator will copy the data specified by 'logfont'
  142. //     into the structure's data members.
  143. // Parameters:
  144. //     logfont - Valid address of a LOGFONT structure.
  145. //-------------------------------------------------------------------------
  146. void operator=(LOGFONT& logfont);
  147. public:
  148. DWORD dwType;  // Used to hold the font type, i.e. TT_FONT, DEVICE_FONT.
  149. };
  150. class CXTAuxData;
  151. //---------------------------------------------------------------------------
  152. // Summary:
  153. //     The XTAuxData function is used for access to the
  154. //     CXTAuxData class.
  155. // Remarks:
  156. //     Call this function to access CXTAuxData members. Since
  157. //     this class is designed as a single instance object you can only
  158. //     access its members through this method. You cannot directly
  159. //     instantiate an object of type CXTAuxData.
  160. // Returns:
  161. //     A pointer to the one and only CXTAuxData instance.
  162. // Example:
  163. //     The following example demonstrates the use of XTAuxData.
  164. // <code>
  165. // bool bIsWinNT = XTAuxData().bWinNT;
  166. // </code>
  167. // See Also:
  168. //     CXTAuxData
  169. //---------------------------------------------------------------------------
  170. _XTP_EXT_CLASS CXTAuxData& AFXAPI XTAuxData();
  171. // ---------------------------------------------------------------------
  172. // Summary:
  173. //     CXTAuxData is a stand alone global item data structure
  174. //     class. It is used by the toolkit to initialize and store resource
  175. //     and item data shared by all objects. Items include system colors,
  176. //     icons, fonts and OS flags.
  177. // ---------------------------------------------------------------------
  178. class _XTP_EXT_CLASS CXTAuxData
  179. {
  180. private:
  181. // ------------------------------------------
  182. // Summary:
  183. //     Constructs an CXTAuxData object
  184. // ------------------------------------------
  185. CXTAuxData();
  186. public:
  187. // -------------------------------------------------------------
  188. // Summary:
  189. //     Destroys an CXTAuxData object, handles cleanup and
  190. //     deallocation
  191. // -------------------------------------------------------------
  192. virtual ~CXTAuxData();
  193. public:
  194. // ------------------------------------------------
  195. // Summary:
  196. //     Initializes cursors used by the library.
  197. // Returns:
  198. //     TRUE if successful, otherwise returns FALSE.
  199. // ------------------------------------------------
  200. BOOL LoadSysCursors();
  201. // ------------------------------------------------------------------------------
  202. // Summary:
  203. //     Initializes fonts used by the library.
  204. // Parameters:
  205. //     lpszHorzFaceName -  [in] Points to a NULL terminated font name that is used
  206. //                         to create the horizontal fonts used by the library.
  207. //     lpszVertFaceName -  [in] Points to a NULL terminated font name that is used
  208. //                         to create the vertical fonts used by the library.
  209. // Remarks:
  210. //     Call this member function to update all of the fonts used by the
  211. //     library.
  212. // Returns:
  213. //     TRUE if successful, otherwise returns FALSE if a font fails to
  214. //     load.
  215. // ------------------------------------------------------------------------------
  216. BOOL LoadSysFonts(LPCTSTR lpszHorzFaceName = NULL, LPCTSTR lpszVertFaceName = NULL);
  217. //-------------------------------------------------------------------------
  218. // Summary:
  219. //     This member function frees font resources.
  220. //-------------------------------------------------------------------------
  221. void FreeSysFonts();
  222. // -------------------------------------------------------------------
  223. // Summary:
  224. //     This member function updates system colors used by the library.
  225. // -------------------------------------------------------------------
  226. void UpdateSysColors();
  227. // --------------------------------------------------------------------
  228. // Summary:
  229. //     This member function updates system metrics used by the library.
  230. // --------------------------------------------------------------------
  231. void UpdateSysMetrics();
  232. //-------------------------------------------------------------------------
  233. // Summary:
  234. //     This member function is called to retrieve the version information
  235. //     for the common control dll (comctl32.dll).
  236. // Returns:
  237. //     A DWORD value.
  238. //-------------------------------------------------------------------------
  239. DWORD GetComCtlVersion();
  240. //-------------------------------------------------------------------------
  241. // Summary:
  242. //     This member function is called to check the current version of
  243. //     the common control dll (comctl32.dll).
  244. // Returns:
  245. //     Returns TRUE if the version is 4.72 or higher, otherwise FALSE.
  246. //-------------------------------------------------------------------------
  247. BOOL IsComCtlValid() const;
  248. //-------------------------------------------------------------------------
  249. // Summary:
  250. //     This member function is called by the library to initialize resources.
  251. // Parameters:
  252. //     hInst - Instance handle for resources.
  253. //-------------------------------------------------------------------------
  254. void InitResources(HINSTANCE hInst);
  255. // ---------------------------------------------------------------------
  256. // Summary:
  257. //     Enables or Disables Tahoma font usage for the library.
  258. // Parameters:
  259. //     bOfficeFont -  [in] True to use the "Tahoma" font if found on the
  260. //                    operating system.
  261. // Remarks:
  262. //     Call this member function to use the Office font (Tahoma) if it
  263. //     exists on the operating system.
  264. // ---------------------------------------------------------------------
  265. void UseOfficeFont(BOOL bOfficeFont);
  266. // --------------------------------------------------------------------------------------
  267. // Summary:
  268. //     Determines if a font is installed.
  269. // Parameters:
  270. //     lpszFaceName -  [in] NULL terminated string that represents the font
  271. //                    name to search for.
  272. // Remarks:
  273. //     Call this member function to determine if the font specified by <i>strFaceName</i>
  274. //     has been installed on the operating system.
  275. // Returns:
  276. //     TRUE if the font is installed, otherwise FALSE.
  277. // --------------------------------------------------------------------------------------
  278. BOOL FontExists(LPCTSTR lpszFaceName);
  279. // -------------------------------------------------------------------------
  280. // Summary:
  281. //     Initializes fonts used by the library.
  282. // Parameters:
  283. //     lf -             [in] Reference to a CXTLogFont or LOGFONT structure.
  284. //     font -           [in] Reference to a CFont object.
  285. //     lfWeight -       [in] Optional, specifies font weight.
  286. //     lfUnderline -    [in] Optional, specifies font underline.
  287. //     lfOrientation -  [in] Optional, specifies font orientation.
  288. //     lfEscapement -   [in] Optional, specifies font escapement.
  289. // Remarks:
  290. //     Call this member function to create a CFont object from an
  291. //     existing CXTLogFont or LOGFONT structure. You can specify
  292. //     additional values to set that will override what is specified in
  293. //     the LOGFONT structure passed in.
  294. // Returns:
  295. //     TRUE if the font was successfully created, otherwise FALSE.
  296. // -------------------------------------------------------------------------
  297. BOOL CreateSysFont(const CXTLogFont& lf, CFont& font, long lfWeight = -1, char lfUnderline = -1, long lfOrientation = -1, long lfEscapement = -1);
  298. // ----------------------------------------------------------------------------------
  299. // Summary:
  300. //     Initializes fonts used by the library.
  301. // Parameters:
  302. //     pHorzFont -         [in] Points to a valid CFont object that is used to define
  303. //                         the fonts the library will use.
  304. //     pVertFont -         [in] Points to a valid CFont object that is used to define
  305. //                         the vertical fonts used by the library. If NULL, 'pFont'
  306. //                         will be used.
  307. //     lpszFaceName -      [in] Points to a NULL terminated font name that is used to
  308. //                         create the horizontal fonts used by the library.
  309. //     lpszVertFaceName -  [in] Points to a NULL terminated font name that is used to
  310. //                         create the vertical fonts used by the library.
  311. // Remarks:
  312. //     Call this member function to update fonts used by the library.
  313. //     This function will not update the fonts used for Icon Title,
  314. //     Marlett Icon or Small Captions. To change these fonts as well use
  315. //     the CreateSysFont method.
  316. // Returns:
  317. //     TRUE if successful, otherwise returns FALSE if a font fails to
  318. //     load.
  319. // ----------------------------------------------------------------------------------
  320. BOOL SetGlobalFont(CFont* pHorzFont, CFont* pVertFont = NULL);
  321. BOOL SetGlobalFont(LPCTSTR lpszFaceName, LPCTSTR lpszVertFaceName = NULL); //<combine CXTAuxData::SetGlobalFont@CFont*@CFont*>
  322. // ---------------------------------------------------------------------
  323. // Summary:
  324. //     Retrieves the library version.
  325. // Parameters:
  326. //     bVerNumOnly -  [in] true to return the version number only, minus
  327. //                    "Xtreme Toolkit v".
  328. // Remarks:
  329. //     Call this member function to retrieve a CString object that
  330. //     represents the current version of the Xtreme Toolkit. The string
  331. //     returned is formatted like so: "Xtreme Toolkit v1.94".
  332. // Returns:
  333. //     A NULL terminated string that indicates the version of the Xtreme
  334. //     Toolkit.
  335. // ---------------------------------------------------------------------
  336. CString GetXTVersion(bool bVerNumOnly = false);
  337. private:
  338. static int CALLBACK EnumFontFamExProc(ENUMLOGFONTEX* pelf,
  339. NEWTEXTMETRICEX*, int, LPVOID pThis);
  340. DISABLE_COPY_OPERATOR(CXTAuxData)
  341. public:
  342. //=======================================================================
  343. //## (RGB) System colors used by Xtreme Toolkit
  344. //=======================================================================
  345. COLORREF clr3DFace;                   // An RGB value that represents the face color for three dimensional display elements.
  346. COLORREF clr3DShadow;                 // An RGB value that represents the shadow color for three dimensional display elements.
  347. COLORREF clr3DDkShadow;               // An RGB value that represents the dark shadow for three dimensional display elements.
  348. COLORREF clr3DHilight;                // An RGB value that represents the highlight color for three dimensional display elements.
  349. COLORREF clr3DLight;                  // An RGB value that represents the light color for three dimensional display elements.
  350. COLORREF clrBtnText;                  // An RGB value that represents the text color on push buttons.
  351. COLORREF clrGrayText;                 // An RGB value that represents the grayed (disabled) text.
  352. COLORREF clrHighlight;                // An RGB value that represents the item(s) selected in a control.
  353. COLORREF clrHighlightText;            // An RGB value that represents the text color of item(s) selected in a control.
  354. COLORREF clrMenu;                     // An RGB value that represents the menu background.
  355. COLORREF clrMenuText;                 // An RGB value that represents the text color in menus.
  356. COLORREF clrWindow;                   // An RGB value that represents the window background.
  357. COLORREF clrWindowFrame;              // An RGB value that represents the window frame.
  358. COLORREF clrWindowText;               // An RGB value that represents the text color in windows.
  359. COLORREF clrActiveCaption;            // An RGB value that represents the active window title bar.
  360. COLORREF clrInActiveCaption;          // An RGB value that represents the inactive window title bar.
  361. COLORREF clrGradActiveCapt;           // An RGB value that represents the gradient active title bar.
  362. COLORREF clrGradInActiveCapt;         // An RGB value that represents the gradient inactive title bar.
  363. COLORREF clrActiveCaptText;           // An RGB value that represents the active caption text.
  364. COLORREF clrInactiveCaptText;         // An RGB value that represents the inactive caption text.
  365. COLORREF clrXPBarFace;                // An RGB value that represents the XP toolbar background color.
  366. COLORREF clrXPHighlight;              // An RGB value that represents the XP menu item selected color.
  367. COLORREF clrXPHighlightBorder;        // An RGB value that represents the XP menu item selected border color.
  368. COLORREF clrXPHighlightPushed;        // An RGB value that represents the XP menu item pushed color.
  369. COLORREF clrXPIconShadow;             // An RGB value that represents the XP menu item icon shadow.
  370. COLORREF clrXPGrayText;               // An RGB value that represents the XP menu item disabled text color.
  371. COLORREF clrXPHighlightChecked;       // An RGB value that represents the XP menu item checked color.
  372. COLORREF clrXPHighlightCheckedBorder; // An RGB value that represents the XP menu item checked border color.
  373. COLORREF clrXPGripper;                // An RGB value that represents the XP toolbar gripper color.
  374. COLORREF clrXPSeparator;              // An RGB value that represents the XP toolbar separator color.
  375. COLORREF clrXPDisabled;               // An RGB value that represents the XP menu icon disabled color.
  376. COLORREF clrXPMenuTextBack;           // An RGB value that represents the XP menu item text background color.
  377. COLORREF clrXPMenuExpanded;           // An RGB value that represents the XP hidden menu commands background color.
  378. COLORREF clrXPMenuBorder;             // An RGB value that represents the XP menu border color.
  379. COLORREF clrXPMenuText;               // An RGB value that represents the XP menu item text color.
  380. COLORREF clrXPHighlightText;          // An RGB value that represents the XP menu item selected text color.
  381. COLORREF clrXPBarText;                // An RGB value that represents the XP toolbar text color.
  382. COLORREF clrXPBarTextPushed;          // An RGB value that represents the XP toolbar pushed text color.
  383. COLORREF clrXPTabInactiveBack;        // An RGB value that represents the XP inactive tab background color.
  384. COLORREF clrXPTabInactiveText;        // An RGB value that represents the XP inactive tab text color.
  385. //=======================================================================
  386. //## Cursors used by Xtreme Toolkit
  387. //=======================================================================
  388. HCURSOR hcurDragCopy;  // Drag copy cursor handle.
  389. HCURSOR hcurDragMove;  // Drag move cursor handle.
  390. HCURSOR hcurDragNone;  // Drag none cursor handle.
  391. HCURSOR hcurHand;      // Hand cursor handle.
  392. HCURSOR hcurHSplitBar; // Horizontal Splitter cursor handle.
  393. HCURSOR hcurVSplitBar; // Vertical Splitter cursor handle.
  394. HCURSOR hcurMove;      // 4 way move cursor handle.
  395. //=======================================================================
  396. //## System metrics
  397. //=======================================================================
  398. int cxSmIcon;   // cx small icon size (width).
  399. int cySmIcon;   // cy small icon size (height).
  400. int cxSize;     // Width, in pixels, of a button in a window's caption or title bar.
  401. int cySize;     // Height, in pixels, of a button in a window's caption or title bar.
  402. int cxHThumb;   // Width, in pixels, of the thumb box in a horizontal scroll bar.
  403. int cyVThumb;   // Height, in pixels, of the thumb box in a vertical scroll bar.
  404. int cyMenuItem; // Height, in pixels, of single-line menu bar.
  405. //=======================================================================
  406. //## Fonts used by Xtreme Toolkit
  407. //=======================================================================
  408. CFont font;              // Menu font.
  409. CFont fontBold;          // Menu bold font.
  410. CFont fontULine;         // Menu underlined font.
  411. CFont fontVert;          // Vertical menu font.
  412. CFont fontVertBold;      // Vertical menu bold font.
  413. CFont fontIconTitle;     // Icon title font.
  414. CFont fontIconTitleBold; // Icon title bold font.
  415. CFont fontMarlettIcon;   // Marlett icon font.
  416. CFont fontStatus;        // Status bar font.
  417. CFont fontSmCaption;     // Small caption font.
  418. //=======================================================================
  419. //## Flags used by Xtreme Toolkit
  420. //=======================================================================
  421. BOOL bWin95;           // TRUE if Windows 95.
  422. BOOL bWin98;           // TRUE if Windows 98.
  423. BOOL bWinNT;           // TRUE if Windows NT.
  424. BOOL bWin2K;           // TRUE if Windows 2000.
  425. BOOL bWinXP;           // TRUE if Windows XP.
  426. BOOL bUseOfficeFont;   // TRUE to use the Tahoma font if found, good for Office style applications by default.
  427. BOOL bUseSolidShadows; // TRUE to use solid shadows for operating systems that do not supported layered windows.
  428. BOOL bMenuShadows;     // TRUE to use shadows under the menus.
  429. CXTAuxDataTheme bXPMode;          // TRUE to use XP style menus.
  430. //=======================================================================
  431. //## Miscellaneous settings
  432. //=======================================================================
  433. int       iComCtlVersion;  // Common control dll (comctl32.dll) version information.
  434. friend _XTP_EXT_CLASS CXTAuxData& AFXAPI XTAuxData();
  435. };
  436. //////////////////////////////////////////////////////////////////////
  437. #endif // #if !defined(__XTGLOBALS_H__)