Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

160 lines
5.4 KiB

#include <windows.h>
#include <port1632.h>
#include <cpl.h>
#include <cphelp.h>
#include "snd.h"
/*---------------------------------------------------------------------------*/
#define NUM_APPLETS 1
/*---------------------------------------------------------------------------*/
typedef struct tagAppletInfo {
int idIcon;
int idName;
int idInfo;
BOOL bEnabled;
DWORD dwContext;
PSTR szHelp;
} APPLET_INFO;
/*---------------------------------------------------------------------------*/
char aszSoundHlp[24];
char aszErrorPlayTitle[32];
char aszErrorPlayMessage[64];
char aszWarningTitle[64];
char aszWarningMessage[128];
char aszNoSound[16];
char aszNoDevice[128];
char aszAppName[30];
char aszWriteErr[100];
DWORD dwContext;
HINSTANCE hInstance;
UINT uHelpMessage;
/*---------------------------------------------------------------------------*/
static SZCODE aszHelpMessage[] = "ShellHelp";
static APPLET_INFO applets[NUM_APPLETS];
/*---------------------------------------------------------------------------*/
BOOL DllInitialize( IN PVOID hmod
, IN DWORD ulReason
, IN PCONTEXT pctx OPTIONAL
)
{
if (ulReason != DLL_PROCESS_ATTACH)
return TRUE;
hInstance = hmod;
applets[0].idIcon = ID_ICON;
applets[0].idName = IDS_NAME;
applets[0].idInfo = IDS_INFO;
applets[0].bEnabled = TRUE;
applets[0].dwContext = IDH_CHILD_SND;
applets[0].szHelp = aszSoundHlp;
LoadString(hInstance, IDS_UNABLETITLE, aszErrorPlayTitle, sizeof(aszErrorPlayTitle));
LoadString(hInstance, IDS_UNABLEMESSAGE, aszErrorPlayMessage, sizeof(aszErrorPlayMessage));
LoadString(hInstance, IDS_WARNINGTITLE, aszWarningTitle, sizeof(aszWarningTitle));
LoadString(hInstance, IDS_WARNINGMESSAGE, aszWarningMessage, sizeof(aszWarningMessage));
LoadString(hInstance, IDS_NONE, aszNoSound, sizeof(aszNoSound));
LoadString(hInstance, IDS_APPNAME, aszAppName, sizeof(aszAppName));
LoadString(hInstance, IDS_HELPFILE, aszSoundHlp, sizeof(aszSoundHlp));
LoadString(hInstance, IDS_NODEVICE, aszNoDevice, sizeof(aszNoDevice));
LoadString(hInstance, IDS_WRITEERR, aszWriteErr, sizeof(aszWriteErr));
return TRUE;
}/* DllInitialize */
/*---------------------------------------------------------------------------*/
static void RunApplet( HWND hwnd, int cmd)
{
dwContext = applets[cmd].dwContext;
DialogBox(hInstance, MAKEINTRESOURCE(DLG_SOUND), hwnd, SoundDlg);
}/* RunApplet */
/*---------------------------------------------------------------------------*/
LRESULT CPlApplet( HWND hwnd
, UINT wMsg
, LPARAM lParam1
, LPARAM lParam2
)
{
LPCPLINFO lpCPlInfo; // was LPNEWCLPINFO in 3.1 -- LKG ???
int iApplet;
switch (wMsg) {
case CPL_INIT:
uHelpMessage = RegisterWindowMessage(aszHelpMessage);
return TRUE;
case CPL_GETCOUNT:
// second message to CPlApplet(), sent once only
return NUM_APPLETS;
case CPL_INQUIRE: // was NEWINQUIRE in 3.1 -- LKG ???
/* third message to CPlApplet(). It is sent as many times
as the number of applets returned by CPL_GETCOUNT message
*/
/* Your DLL must contain an icon and two string resources.
idIcon is the icon resource ID, idName and idInfo are
string resource ID's for a short name, and description.
*/
lpCPlInfo = (LPCPLINFO)lParam2; // was LPNEWCPLINFO in 3.1 ???
iApplet = (int)(LONG)lParam1;
/***************3.1*******************
lpCPlInfo->hIcon = LoadIcon( hInstance
, MAKEINTRESOURCE(applets[iApplet].idIcon)
);
if ( !LoadString( hInstance
, applets[iApplet].idName
, lpCPlInfo->szName
, sizeof(lpCPlInfo->szName)
)
)
lpCPlInfo->szName[0] = 0;
if( !LoadString( hInstance
, applets[iApplet].idInfo
, lpCPlInfo->szInfo
, sizeof(lpCPlInfo->szInfo)
)
)
lpCPlInfo->szInfo[0] = 0;
lpCPlInfo->dwSize = sizeof(NEWCPLINFO);
lpCPlInfo->dwHelpContext = applets[iApplet].dwContext;
lstrcpy(lpCPlInfo->szHelpFile, applets[iApplet].szHelp);
************************************/
lpCPlInfo->idIcon = ID_ICON;
lpCPlInfo->idName = IDS_NAME;
lpCPlInfo->lData = (LONG)iApplet;
lpCPlInfo->idInfo = IDS_INFO;
return TRUE;
case CPL_DBLCLK:
RunApplet(hwnd, (int)(LONG)lParam2);
break;
case CPL_SELECT:
/* One of your applets has been selected.
lParam1 is an index from 0 to (NUM_APPLETS-1)
lParam2 is the lData value associated with the applet
*/
break;
case CPL_STOP:
/* Sent once for each applet prior to the CPL_EXIT msg.
lParam1 is an index from 0 to (NUM_APPLETS-1)
lParam2 is the lData value associated with the applet
*/
break;
case CPL_EXIT:
/* Last message, sent once only, before CONTROL.EXE calls
FreeLibrary() on your DLL.
*/
break;
}
return 0;
}/* CPlApplet */