169 lines
5.9 KiB
C
169 lines
5.9 KiB
C
/*****************************************************************************\
|
|
* *
|
|
* cpl.h - Control panel extension DLL definitions *
|
|
* *
|
|
* Version 3.10 *
|
|
* *
|
|
* Copyright (c) 1992-1994, Microsoft Corp. All rights reserved *
|
|
* *
|
|
******************************************************************************
|
|
* General rules for being installed in the Control Panel:
|
|
*
|
|
* 1) The DLL must export a function named CPlApplet which will handle
|
|
* the messages discussed below.
|
|
* 2) If the applet needs to save information in CONTROL.INI minimize
|
|
* clutter by using the application name [MMCPL.appletname].
|
|
* 2) If the applet is refrenced in CONTROL.INI under [MMCPL] use
|
|
* the following form:
|
|
* ...
|
|
* [MMCPL]
|
|
* uniqueName=c:\mydir\myapplet.dll
|
|
* ...
|
|
*
|
|
*
|
|
* The order applet DLL's are loaded by CONTROL.EXE is:
|
|
*
|
|
* 1) MAIN.CPL is loaded from the windows system directory.
|
|
*
|
|
* 2) Installable drivers that are loaded and export the
|
|
* CplApplet() routine.
|
|
*
|
|
* 3) DLL's specified in the [MMCPL] section of CONTROL.INI.
|
|
*
|
|
* 4) DLL's named *.CPL from windows system directory.
|
|
*
|
|
*/
|
|
#ifndef _INC_CPL
|
|
#define _INC_CPL
|
|
|
|
#ifndef RC_INVOKED
|
|
#pragma pack(1) /* Assume byte packing throughout */
|
|
#endif /* RC_INVOKED */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" { /* Assume C declarations for C++ */
|
|
#endif /* __cplusplus */
|
|
|
|
/*
|
|
* CONTROL.EXE will answer this message and launch an applet
|
|
*
|
|
* WM_CPL_LAUNCH
|
|
*
|
|
* wParam - window handle of calling app
|
|
* lParam - LPSTR of name of applet to launch
|
|
*
|
|
* WM_CPL_LAUNCHED
|
|
*
|
|
* wParam - TRUE/FALSE if applet was launched
|
|
* lParam - NULL
|
|
*
|
|
* CONTROL.EXE will post this message to the caller when the applet returns
|
|
* (ie., when wParam is a valid window handle)
|
|
*
|
|
*/
|
|
#define WM_CPL_LAUNCH (WM_USER+1000)
|
|
#define WM_CPL_LAUNCHED (WM_USER+1001)
|
|
|
|
/* A function prototype for CPlApplet() */
|
|
|
|
typedef LRESULT (CALLBACK *APPLET_PROC)(HWND hwndCpl, UINT msg, LPARAM lParam1, LPARAM lParam2);
|
|
|
|
/* The data structure CPlApplet() must fill in. */
|
|
|
|
typedef struct tagCPLINFO
|
|
{
|
|
int idIcon; /* icon resource id, provided by CPlApplet() */
|
|
int idName; /* name string res. id, provided by CPlApplet() */
|
|
int idInfo; /* info string res. id, provided by CPlApplet() */
|
|
LONG lData; /* user defined data */
|
|
} CPLINFO, *PCPLINFO, FAR *LPCPLINFO;
|
|
|
|
typedef struct tagNEWCPLINFO
|
|
{
|
|
DWORD dwSize; /* similar to the commdlg */
|
|
DWORD dwFlags;
|
|
DWORD dwHelpContext; /* help context to use */
|
|
LONG lData; /* user defined data */
|
|
HICON hIcon; /* icon to use, this is owned by CONTROL.EXE (may be deleted) */
|
|
char szName[32]; /* short name */
|
|
char szInfo[64]; /* long name (status line) */
|
|
char szHelpFile[128];/* path to help file to use */
|
|
} NEWCPLINFO, *PNEWCPLINFO, FAR *LPNEWCPLINFO;
|
|
|
|
|
|
/* The messages CPlApplet() must handle: */
|
|
|
|
#define CPL_INIT 1
|
|
/* This message is sent to indicate CPlApplet() was found. */
|
|
/* lParam1 and lParam2 are not defined. */
|
|
/* Return TRUE or FALSE indicating whether the control panel should proceed. */
|
|
|
|
|
|
#define CPL_GETCOUNT 2
|
|
/* This message is sent to determine the number of applets to be displayed. */
|
|
/* lParam1 and lParam2 are not defined. */
|
|
/* Return the number of applets you wish to display in the control */
|
|
/* panel window. */
|
|
|
|
|
|
#define CPL_INQUIRE 3
|
|
/* This message is sent for information about each applet. */
|
|
/* lParam1 is the applet number to register, a value from 0 to */
|
|
/* (CPL_GETCOUNT - 1). lParam2 is a far ptr to a CPLINFO structure. */
|
|
/* Fill in CPL_INFO's idIcon, idName, idInfo and lData fields with */
|
|
/* the resource id for an icon to display, name and description string ids, */
|
|
/* and a long data item associated with applet #lParam1. */
|
|
|
|
|
|
#define CPL_SELECT 4
|
|
/* This message is sent when the applet's icon has been clicked upon. */
|
|
/* lParam1 is the applet number which was selected. lParam2 is the */
|
|
/* applet's lData value. */
|
|
|
|
|
|
#define CPL_DBLCLK 5
|
|
/* This message is sent when the applet's icon has been double-clicked */
|
|
/* upon. lParam1 is the applet number which was selected. lParam2 is the */
|
|
/* applet's lData value. */
|
|
/* This message should initiate the applet's dialog box. */
|
|
|
|
|
|
#define CPL_STOP 6
|
|
/* This message is sent for each applet when the control panel is exiting. */
|
|
/* lParam1 is the applet number. lParam2 is the applet's lData value. */
|
|
/* Do applet specific cleaning up here. */
|
|
|
|
|
|
#define CPL_EXIT 7
|
|
/* This message is sent just before the control panel calls FreeLibrary. */
|
|
/* lParam1 and lParam2 are not defined. */
|
|
/* Do non-applet specific cleaning up here. */
|
|
|
|
|
|
#define CPL_NEWINQUIRE 8
|
|
/* this is the same as CPL_INQUIRE execpt lParam2 is a pointer to a */
|
|
/* NEWCPLINFO structure. this will be sent before the CPL_INQUIRE */
|
|
/* and if it is responed to (return != 0) CPL_INQUIRE will not be sent */
|
|
|
|
|
|
#define CPL_STARTWPARMS 9
|
|
/* this message parallels CPL_DBLCLK in that the applet should initiate
|
|
** its dialog box. where it differs is that this invocation is coming
|
|
** out of RUNDLL, and there may be some extra directions for execution.
|
|
** lParam1: the applet number.
|
|
** lParam2: an LPSTR to any extra directions that might exist.
|
|
** returns: TRUE if the message was handled; FALSE if not.
|
|
*/
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#ifndef RC_INVOKED
|
|
#pragma pack()
|
|
#endif /* RC_INVOKED */
|
|
|
|
#endif /* _INC_CPL */
|