|
|
/*****************************************************************************\
* * * custcntl.h - Custom Control Library header file * * * * Copyright (c) 1992-1999, Microsoft Corp. All rights reserved * * * \*****************************************************************************/
#ifndef _INC_CUSTCNTL
#define _INC_CUSTCNTL
#if _MSC_VER > 1000
#pragma once
#endif
#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 */
|