home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / custcntl.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  9KB  |  215 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * custcntl.h -  Custom Control Library header file                            *
  4. *                                                                             *
  5. *               Copyright (c) 1992-1999, Microsoft Corp.  All rights reserved *
  6. *                                                                             *
  7. \*****************************************************************************/
  8.  
  9. #ifndef _INC_CUSTCNTL
  10. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  11. #define _INC_CUSTCNTL
  12.  
  13. #if _MSC_VER > 1000
  14. #pragma once
  15. #endif
  16.  
  17. #ifdef __cplusplus
  18. extern "C" {            /* Assume C declarations for C++ */
  19. #endif  /* __cplusplus */
  20.  
  21.  
  22. /*
  23.  * General size defines.
  24.  */
  25. #define CCHCCCLASS          32          // Max chars in a class name.
  26. #define CCHCCDESC           32          // Max chars in a control description.
  27. #define CCHCCTEXT           256         // Max chars in a text field.
  28.  
  29.  
  30. /*
  31.  * CCSTYLE - Custom Control Style structure.  This structure is passed
  32.  * tp the Custom Control Style function when the user wants to edit the
  33.  * styles of the custom control.
  34.  */
  35. typedef struct tagCCSTYLEA {
  36.     DWORD   flStyle;                    // Style of the control.
  37.     DWORD   flExtStyle;                 // Extended style of the control.
  38.     CHAR    szText[CCHCCTEXT];          // Text of the control.
  39.     LANGID  lgid;                       // Language Id of the control's dialog.
  40.     WORD    wReserved1;                 // Reserved value.  Do not change.
  41. } CCSTYLEA, *LPCCSTYLEA;
  42.  
  43. typedef struct tagCCSTYLEW {
  44.     DWORD   flStyle;                    // Style of the control.
  45.     DWORD   flExtStyle;                 // Extended style of the control.
  46.     WCHAR   szText[CCHCCTEXT];          // Text of the control.
  47.     LANGID  lgid;                       // Language Id of the control's dialog.
  48.     WORD    wReserved1;                 // Reserved value.  Do not change.
  49. } CCSTYLEW, *LPCCSTYLEW;
  50.  
  51. #ifdef UNICODE
  52. #define CCSTYLE     CCSTYLEW
  53. #define LPCCSTYLE   LPCCSTYLEW
  54. #else
  55. #define CCSTYLE     CCSTYLEA
  56. #define LPCCSTYLE   LPCCSTYLEA
  57. #endif // UNICODE
  58.  
  59.  
  60. /*
  61.  * The Style function prototype.  This will be called when the user
  62.  * wants to edit the styles of a custom control.  It should display a
  63.  * dialog to edit the styles, update the styles in the pccs structure,
  64.  * then return TRUE for success.  If an error occurs or the user
  65.  * cancels the dialog, FALSE should be returned.
  66.  */
  67. typedef BOOL (CALLBACK* LPFNCCSTYLEA)(HWND hwndParent,  LPCCSTYLEA pccs);
  68. typedef BOOL (CALLBACK* LPFNCCSTYLEW)(HWND hwndParent,  LPCCSTYLEW pccs);
  69.  
  70. #ifdef UNICODE
  71. #define LPFNCCSTYLE LPFNCCSTYLEW
  72. #else
  73. #define LPFNCCSTYLE LPFNCCSTYLEA
  74. #endif  // UNICODE
  75.  
  76.  
  77. /*
  78.  * The SizeToText function prototype.  This will be called if the user
  79.  * requests that the custom control be sized to fit it's text.  It
  80.  * should use the specified styles, text and font to determine how
  81.  * large the control must be to accommodate the text, then return this
  82.  * value in pixels.  The value of -1 should be returned if an error
  83.  * occurs.
  84.  */
  85. typedef INT (CALLBACK* LPFNCCSIZETOTEXTA)(DWORD flStyle, DWORD flExtStyle,
  86.     HFONT hfont, LPSTR pszText);
  87. typedef INT (CALLBACK* LPFNCCSIZETOTEXTW)(DWORD flStyle, DWORD flExtStyle,
  88.     HFONT hfont, LPWSTR pszText);
  89.  
  90. #ifdef UNICODE
  91. #define LPFNCCSIZETOTEXT    LPFNCCSIZETOTEXTW
  92. #else
  93. #define LPFNCCSIZETOTEXT    LPFNCCSIZETOTEXTA
  94. #endif  // UNICODE
  95.  
  96.  
  97. /*
  98.  * CCSTYLEFLAG - Custom Control Style Flag structure.  A table of these
  99.  * structures is used to specify the define strings that match the
  100.  * different styles for a custom control.
  101.  */
  102. typedef struct tagCCSTYLEFLAGA {
  103.     DWORD flStyle;                      // Style bits for this style.
  104.     DWORD flStyleMask;                  // Mask for the style.  Can be zero.
  105.     LPSTR pszStyle;                     // Points to the style define string.
  106. } CCSTYLEFLAGA, *LPCCSTYLEFLAGA;
  107.  
  108. typedef struct tagCCSTYLEFLAGW {
  109.     DWORD flStyle;                      // Style bits for this style.
  110.     DWORD flStyleMask;                  // Mask for the style.  Can be zero.
  111.     LPWSTR pszStyle;                    // Points to the style define string.
  112. } CCSTYLEFLAGW, *LPCCSTYLEFLAGW;
  113.  
  114. #ifdef UNICODE
  115. #define CCSTYLEFLAG     CCSTYLEFLAGW
  116. #define LPCCSTYLEFLAG   LPCCSTYLEFLAGW
  117. #else
  118. #define CCSTYLEFLAG     CCSTYLEFLAGA
  119. #define LPCCSTYLEFLAG   LPCCSTYLEFLAGA
  120. #endif // UNICODE
  121.  
  122.  
  123. /*
  124.  * CCF_* defines.  These flags are used for the flOptions field of the
  125.  * CCINFO structure, and describe some basic characteristics of the
  126.  * custom control.
  127.  */
  128. #define CCF_NOTEXT          0x00000001  // Control cannot have text.
  129.  
  130.  
  131. /*
  132.  * CCINFO - Custom Control Info structure.  This structure provides
  133.  * the dialog editor with information about the control types that the
  134.  * DLL supports.
  135.  */
  136. typedef struct tagCCINFOA {
  137.     CHAR    szClass[CCHCCCLASS];        // Class name for the control.
  138.     DWORD   flOptions;                  // Option flags (CCF_* defines).
  139.     CHAR    szDesc[CCHCCDESC];          // Short, descriptive text for the ctrl.
  140.     UINT    cxDefault;                  // Default width (in dialog units).
  141.     UINT    cyDefault;                  // Default height (in dialog units).
  142.     DWORD   flStyleDefault;             // Default style (WS_CHILD | WS_VISIBLE).
  143.     DWORD   flExtStyleDefault;          // Default extended style.
  144.     DWORD   flCtrlTypeMask;             // Mask for control type styles.
  145.     CHAR    szTextDefault[CCHCCTEXT];   // Default text.
  146.     INT     cStyleFlags;                // Entries in the following style table.
  147.     LPCCSTYLEFLAGA aStyleFlags;         // Points to style flag table.
  148.     LPFNCCSTYLEA lpfnStyle;             // Pointer to the Styles function.
  149.     LPFNCCSIZETOTEXTA lpfnSizeToText;   // Pointer to the SizeToText function.
  150.     DWORD   dwReserved1;                // Reserved.  Must be zero.
  151.     DWORD   dwReserved2;                // Reserved.  Must be zero.
  152. } CCINFOA, *LPCCINFOA;
  153.  
  154. typedef struct tagCCINFOW {
  155.     WCHAR   szClass[CCHCCCLASS];        // Class name for the control.
  156.     DWORD   flOptions;                  // Option flags (CCF_* defines).
  157.     WCHAR   szDesc[CCHCCDESC];          // Short, descriptive text for the ctrl.
  158.     UINT    cxDefault;                  // Default width (in dialog units).
  159.     UINT    cyDefault;                  // Default height (in dialog units).
  160.     DWORD   flStyleDefault;             // Default style (WS_CHILD | WS_VISIBLE).
  161.     DWORD   flExtStyleDefault;          // Default extended style.
  162.     DWORD   flCtrlTypeMask;             // Mask for control type styles.
  163.     INT     cStyleFlags;                // Entries in the following style table.
  164.     LPCCSTYLEFLAGW aStyleFlags;         // Points to style flag table.
  165.     WCHAR   szTextDefault[CCHCCTEXT];   // Default text.
  166.     LPFNCCSTYLEW lpfnStyle;             // Pointer to the Styles function.
  167.     LPFNCCSIZETOTEXTW lpfnSizeToText;   // Pointer to the SizeToText function.
  168.     DWORD   dwReserved1;                // Reserved.  Must be zero.
  169.     DWORD   dwReserved2;                // Reserved.  Must be zero.
  170. } CCINFOW, *LPCCINFOW;
  171.  
  172. #ifdef UNICODE
  173. #define CCINFO      CCINFOW
  174. #define LPCCINFO    LPCCINFOW
  175. #else
  176. #define CCINFO      CCINFOA
  177. #define LPCCINFO    LPCCINFOA
  178. #endif // UNICODE
  179.  
  180.  
  181. /*
  182.  * The Info function prototype.  This function is the first one
  183.  * called by the dialog editor.  Custom control DLL's must export
  184.  * one or both of the following functions by name (the ordinal
  185.  * used for the export does not matter):
  186.  *
  187.  *  UINT CALLBACK CustomControlInfoA(LPCCINFOA acci)
  188.  *  UINT CALLBACK CustomControlInfoW(LPCCINFOW acci)
  189.  *
  190.  * This function must return the number of controls that the DLL
  191.  * supports, or NULL if an error occurs.  If the acci parameter is
  192.  * not NULL, it will be pointing to an array of CCINFOA or CCINFOW
  193.  * structures that should be filled in with the information about
  194.  * the different control types supported by the DLL.
  195.  *
  196.  * If both functions are present, the CustomControlInfoW function
  197.  * will be used by the dialog editor.
  198.  */
  199. typedef UINT (CALLBACK* LPFNCCINFOA)(LPCCINFOA acci);
  200. typedef UINT (CALLBACK* LPFNCCINFOW)(LPCCINFOW acci);
  201.  
  202. #ifdef UNICODE
  203. #define LPFNCCINFO  LPFNCCINFOW
  204. #else
  205. #define LPFNCCINFO  LPFNCCINFOA
  206. #endif  // UNICODE
  207.  
  208.  
  209. #ifdef __cplusplus
  210. }
  211. #endif  /* __cplusplus */
  212.  
  213. #pragma option pop /*P_O_Pop*/
  214. #endif  /* _INC_CUSTCNTL */
  215.