209 lines
8.1 KiB
C
209 lines
8.1 KiB
C
/*****************************************************************************\
|
||
* *
|
||
* custcntl.h - Custom Control Library header file *
|
||
* *
|
||
* Copyright (c) 1992-1993, Microsoft Corp. All rights reserved *
|
||
* *
|
||
\*****************************************************************************/
|
||
|
||
#ifndef _INC_CUSTCNTL
|
||
#define _INC_CUSTCNTL
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" { /* Assume C declarations for C++ */
|
||
#endif /* __cplusplus */
|
||
|
||
|
||
/*
|
||
* General size defines.
|
||
*/
|
||
#define CCHCCCLASS 32 // Max chars in a class name.
|
||
#define CCHCCDESC 32 // Max chars in a control description.
|
||
#define CCHCCTEXT 256 // Max chars in a text field.
|
||
|
||
|
||
/*
|
||
* CCSTYLE - Custom Control Style structure. This structure is passed
|
||
* tp the Custom Control Style function when the user wants to edit the
|
||
* styles of the custom control.
|
||
*/
|
||
typedef struct tagCCSTYLEA {
|
||
DWORD flStyle; // Style of the control.
|
||
DWORD flExtStyle; // Extended style of the control.
|
||
CHAR szText[CCHCCTEXT]; // Text of the control.
|
||
LANGID lgid; // Language Id of the control's dialog.
|
||
WORD wReserved1; // Reserved value. Do not change.
|
||
} CCSTYLEA, *LPCCSTYLEA;
|
||
|
||
typedef struct tagCCSTYLEW {
|
||
DWORD flStyle; // Style of the control.
|
||
DWORD flExtStyle; // Extended style of the control.
|
||
WCHAR szText[CCHCCTEXT]; // Text of the control.
|
||
LANGID lgid; // Language Id of the control's dialog.
|
||
WORD wReserved1; // Reserved value. Do not change.
|
||
} CCSTYLEW, *LPCCSTYLEW;
|
||
|
||
#ifdef UNICODE
|
||
#define CCSTYLE CCSTYLEW
|
||
#define LPCCSTYLE LPCCSTYLEW
|
||
#else
|
||
#define CCSTYLE CCSTYLEA
|
||
#define LPCCSTYLE LPCCSTYLEA
|
||
#endif // UNICODE
|
||
|
||
|
||
/*
|
||
* The Style function prototype. This will be called when the user
|
||
* wants to edit the styles of a custom control. It should display a
|
||
* dialog to edit the styles, update the styles in the pccs structure,
|
||
* then return TRUE for success. If an error occurs or the user
|
||
* cancels the dialog, FALSE should be returned.
|
||
*/
|
||
typedef BOOL (CALLBACK* LPFNCCSTYLEA)(HWND hwndParent, LPCCSTYLEA pccs);
|
||
typedef BOOL (CALLBACK* LPFNCCSTYLEW)(HWND hwndParent, LPCCSTYLEW pccs);
|
||
|
||
#ifdef UNICODE
|
||
#define LPFNCCSTYLE LPFNCCSTYLEW
|
||
#else
|
||
#define LPFNCCSTYLE LPFNCCSTYLEA
|
||
#endif // UNICODE
|
||
|
||
|
||
/*
|
||
* The SizeToText function prototype. This will be called if the user
|
||
* requests that the custom control be sized to fit it's text. It
|
||
* should use the specified styles, text and font to determine how
|
||
* large the control must be to accommodate the text, then return this
|
||
* value in pixels. The value of -1 should be returned if an error
|
||
* occurs.
|
||
*/
|
||
typedef INT (CALLBACK* LPFNCCSIZETOTEXTA)(DWORD flStyle, DWORD flExtStyle,
|
||
HFONT hfont, LPSTR pszText);
|
||
typedef INT (CALLBACK* LPFNCCSIZETOTEXTW)(DWORD flStyle, DWORD flExtStyle,
|
||
HFONT hfont, LPWSTR pszText);
|
||
|
||
#ifdef UNICODE
|
||
#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTW
|
||
#else
|
||
#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTA
|
||
#endif // UNICODE
|
||
|
||
|
||
/*
|
||
* CCSTYLEFLAG - Custom Control Style Flag structure. A table of these
|
||
* structures is used to specify the define strings that match the
|
||
* different styles for a custom control.
|
||
*/
|
||
typedef struct tagCCSTYLEFLAGA {
|
||
DWORD flStyle; // Style bits for this style.
|
||
DWORD flStyleMask; // Mask for the style. Can be zero.
|
||
LPSTR pszStyle; // Points to the style define string.
|
||
} CCSTYLEFLAGA, *LPCCSTYLEFLAGA;
|
||
|
||
typedef struct tagCCSTYLEFLAGW {
|
||
DWORD flStyle; // Style bits for this style.
|
||
DWORD flStyleMask; // Mask for the style. Can be zero.
|
||
LPWSTR pszStyle; // Points to the style define string.
|
||
} CCSTYLEFLAGW, *LPCCSTYLEFLAGW;
|
||
|
||
#ifdef UNICODE
|
||
#define CCSTYLEFLAG CCSTYLEFLAGW
|
||
#define LPCCSTYLEFLAG LPCCSTYLEFLAGW
|
||
#else
|
||
#define CCSTYLEFLAG CCSTYLEFLAGA
|
||
#define LPCCSTYLEFLAG LPCCSTYLEFLAGA
|
||
#endif // UNICODE
|
||
|
||
|
||
/*
|
||
* CCF_* defines. These flags are used for the flOptions field of the
|
||
* CCINFO structure, and describe some basic characteristics of the
|
||
* custom control.
|
||
*/
|
||
#define CCF_NOTEXT 0x00000001 // Control cannot have text.
|
||
|
||
|
||
/*
|
||
* CCINFO - Custom Control Info structure. This structure provides
|
||
* the dialog editor with information about the control types that the
|
||
* DLL supports.
|
||
*/
|
||
typedef struct tagCCINFOA {
|
||
CHAR szClass[CCHCCCLASS]; // Class name for the control.
|
||
DWORD flOptions; // Option flags (CCF_* defines).
|
||
CHAR szDesc[CCHCCDESC]; // Short, descriptive text for the ctrl.
|
||
UINT cxDefault; // Default width (in dialog units).
|
||
UINT cyDefault; // Default height (in dialog units).
|
||
DWORD flStyleDefault; // Default style (WS_CHILD | WS_VISIBLE).
|
||
DWORD flExtStyleDefault; // Default extended style.
|
||
DWORD flCtrlTypeMask; // Mask for control type styles.
|
||
CHAR szTextDefault[CCHCCTEXT]; // Default text.
|
||
INT cStyleFlags; // Entries in the following style table.
|
||
LPCCSTYLEFLAGA aStyleFlags; // Points to style flag table.
|
||
LPFNCCSTYLEA lpfnStyle; // Pointer to the Styles function.
|
||
LPFNCCSIZETOTEXTA lpfnSizeToText; // Pointer to the SizeToText function.
|
||
DWORD dwReserved1; // Reserved. Must be zero.
|
||
DWORD dwReserved2; // Reserved. Must be zero.
|
||
} CCINFOA, *LPCCINFOA;
|
||
|
||
typedef struct tagCCINFOW {
|
||
WCHAR szClass[CCHCCCLASS]; // Class name for the control.
|
||
DWORD flOptions; // Option flags (CCF_* defines).
|
||
WCHAR szDesc[CCHCCDESC]; // Short, descriptive text for the ctrl.
|
||
UINT cxDefault; // Default width (in dialog units).
|
||
UINT cyDefault; // Default height (in dialog units).
|
||
DWORD flStyleDefault; // Default style (WS_CHILD | WS_VISIBLE).
|
||
DWORD flExtStyleDefault; // Default extended style.
|
||
DWORD flCtrlTypeMask; // Mask for control type styles.
|
||
INT cStyleFlags; // Entries in the following style table.
|
||
LPCCSTYLEFLAGW aStyleFlags; // Points to style flag table.
|
||
WCHAR szTextDefault[CCHCCTEXT]; // Default text.
|
||
LPFNCCSTYLEW lpfnStyle; // Pointer to the Styles function.
|
||
LPFNCCSIZETOTEXTW lpfnSizeToText; // Pointer to the SizeToText function.
|
||
DWORD dwReserved1; // Reserved. Must be zero.
|
||
DWORD dwReserved2; // Reserved. Must be zero.
|
||
} CCINFOW, *LPCCINFOW;
|
||
|
||
#ifdef UNICODE
|
||
#define CCINFO CCINFOW
|
||
#define LPCCINFO LPCCINFOW
|
||
#else
|
||
#define CCINFO CCINFOA
|
||
#define LPCCINFO LPCCINFOA
|
||
#endif // UNICODE
|
||
|
||
|
||
/*
|
||
* The Info function prototype. This function is the first one
|
||
* called by the dialog editor. Custom control DLL's must export
|
||
* one or both of the following functions by name (the ordinal
|
||
* used for the export does not matter):
|
||
*
|
||
* UINT CALLBACK CustomControlInfoA(LPCCINFOA acci)
|
||
* UINT CALLBACK CustomControlInfoW(LPCCINFOW acci)
|
||
*
|
||
* This function must return the number of controls that the DLL
|
||
* supports, or NULL if an error occurs. If the acci parameter is
|
||
* not NULL, it will be pointing to an array of CCINFOA or CCINFOW
|
||
* structures that should be filled in with the information about
|
||
* the different control types supported by the DLL.
|
||
*
|
||
* If both functions are present, the CustomControlInfoW function
|
||
* will be used by the dialog editor.
|
||
*/
|
||
typedef UINT (CALLBACK* LPFNCCINFOA)(LPCCINFOA acci);
|
||
typedef UINT (CALLBACK* LPFNCCINFOW)(LPCCINFOW acci);
|
||
|
||
#ifdef UNICODE
|
||
#define LPFNCCINFO LPFNCCINFOW
|
||
#else
|
||
#define LPFNCCINFO LPFNCCINFOA
|
||
#endif // UNICODE
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif /* __cplusplus */
|
||
|
||
#endif /* _INC_CUSTCNTL */
|
||
|