Category : Files from Magazines
Archive   : MAR92.ZIP
Filename : 3N03006A

 
Output of file : 3N03006A contained in archive : MAR92.ZIP
/*
File name: FADER2.C
Description: SDK Dialog Editor (DIALOG.EXE) support funcs.
*/

#include
#include
#include "fader.h"
#include "dialog.h"

/* Property string used internally for local handle of
CTLSTYLEDLG structure */
static char szFaderCtlProp[] = "CtlDlgStyleData";
extern HANDLE hGlobFaderInstance;
extern char szGlobControlName[];

/* Data structure used internally to access data in
the style dialog box function. */
typedef struct {
GLOBALHANDLE hCtlStyle; /* Handle holds CTLSTYLE */
LPFNSTRTOID lpfnStrToId; /* convert string to ID */
LPFNIDTOSTR lpfnIdToStr; /* convert ID to string */
} CTLSTYLEDLG, FAR *LPCTLSTYLEDLG, NEAR *NPCTLSTYLEDLG;

/* Forward declarations, for completeness */

LPCTLSTYLE FAR PASCAL CtlStyleLock (HWND hDlg);
VOID FAR PASCAL CtlStyleUnlock (HWND hDlg);
WORD FAR PASCAL GetIdString (HWND hDlg, LPSTR szId,
WORD wIdMaxLen);
DWORD FAR PASCAL PutIdValue (HWND hDlg, LPSTR szId);
BOOL FAR PASCAL FaderDlgFn (HWND hDlg, WORD wMessage,
WORD wParam, LONG lParam);
BOOL FAR PASCAL FaderDlgCmdFn (HWND hDlg, WORD wParam,
LONG lParam);


GLOBALHANDLE FAR PASCAL FaderInfo (void)
{
GLOBALHANDLE hCtlInfo = NULL;
LPCTLINFO lpCtlInfo; WORD wNumTypes;

hCtlInfo = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,
(DWORD) sizeof(CTLINFO));
if (hCtlInfo == NULL)
return NULL;
lpCtlInfo = (LPCTLINFO) GlobalLock(hCtlInfo);
lpCtlInfo->wVersion = 0x0100;

/* Initialize wCtlTypes to zero */
lpCtlInfo->wCtlTypes = 0;
lstrcpy(lpCtlInfo->szClass, szGlobControlName);
lstrcpy(lpCtlInfo->szTitle, szGlobControlName);
wNumTypes = lpCtlInfo->wCtlTypes;
if (wNumTypes == CTLTYPES) {
GlobalUnlock(hCtlInfo);
return hCtlInfo;
}
lpCtlInfo->Type[wNumTypes].wType = 0;
lpCtlInfo->Type[wNumTypes].wWidth = 12;
lpCtlInfo->Type[wNumTypes].wHeight = 24;
lpCtlInfo->Type[wNumTypes].dwStyle = WS_BORDER
| WS_CHILD | WS_TABSTOP;
lstrcpy(lpCtlInfo->Type[wNumTypes].szDescr,
szGlobControlName);
lpCtlInfo->wCtlTypes++;
GlobalUnlock(hCtlInfo);
return hCtlInfo;
}


BOOL FAR PASCAL FaderStyle (HWND hWnd, GLOBALHANDLE hCtlStyle,
LPFNSTRTOID lpfnStrToId, LPFNIDTOSTR lpfnIdToStr)
{
LOCALHANDLE hCtlStyleDlg;
NPCTLSTYLEDLG npCtlStyleDlg;
int x;

hCtlStyleDlg = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT,
sizeof(CTLSTYLEDLG));
if (hCtlStyleDlg == NULL)
return FALSE;
npCtlStyleDlg = (NPCTLSTYLEDLG) LocalLock(hCtlStyleDlg);
npCtlStyleDlg->hCtlStyle = hCtlStyle;
npCtlStyleDlg->lpfnStrToId = lpfnStrToId;
npCtlStyleDlg->lpfnIdToStr = lpfnIdToStr;
LocalUnlock(hCtlStyleDlg);

/* Associate property with Dialog Editor's window. */
SetProp(hWnd, szFaderCtlProp, hCtlStyleDlg);

/* Display control's Styles Dialog Box. */
x = DialogBoxParam(hGlobFaderInstance, "StyleDlg",
hWnd, FaderDlgFn, 0);
/* Remove property associated with
Dialog Editor's window. */
RemoveProp(hWnd, szFaderCtlProp);

LocalFree(hCtlStyleDlg);
/* Return whether CTLSTYLE structure has been changed.*/
return x==IDOK;
}


BOOL FAR PASCAL FaderDlgFn (HWND hDlg, WORD wMsg,
WORD wParam, LONG lParam)
{
BOOL bProcMsg = TRUE;
char szId[20];
LPCTLSTYLE lpCtlStyle;

switch (wMsg)
{
case WM_INITDIALOG:
/* Set the "EDIT" control with the name of
this control's ID. */
GetIdString(hDlg, szId, sizeof(szId));
SetDlgItemText(hDlg, ID_VALUE, szId);

/* Initialize check box w/Fader control's styles. */
lpCtlStyle = CtlStyleLock(hDlg);
SendDlgItemMessage(hDlg, ID_TRACK, BM_SETCHECK,
(BOOL) (lpCtlStyle->dwStyle & FDRS_TRACK), 1L);
CtlStyleUnlock(hDlg);
break;
case WM_COMMAND:
FaderDlgCmdFn(hDlg, wParam, lParam);
break;
default:
bProcMsg = FALSE;
break;
}
return bProcMsg;
}


BOOL FAR PASCAL FaderDlgCmdFn (HWND hDlg, WORD wParam,
LONG lParam)
{
DWORD dwResult;
char szId[20];
LPCTLSTYLE lpCtlStyle;

switch(wParam)
{
case IDOK:
/* Convert the string ID value to its numeric equivalent. */
GetDlgItemText(hDlg, ID_VALUE, szId, sizeof(szId));
dwResult = PutIdValue(hDlg, szId);

/* If string ID not found or added, stay in Dialog box. */
if (LOWORD(dwResult) == 0)
break;

/* Calculate the new control's styles. */
lpCtlStyle = CtlStyleLock(hDlg);

/* Clear control-specific flags */
lpCtlStyle->dwStyle &= 0xFFFF0000L;

if (SendDlgItemMessage(hDlg, ID_TRACK,
BM_GETCHECK, 0, 0L))
lpCtlStyle->dwStyle |= FDRS_TRACK;

CtlStyleUnlock(hDlg);
EndDialog(hDlg, wParam);
break;
case IDCANCEL:
EndDialog(hDlg, wParam);
break;
case ID_VALUE:
/* Disable IDOK button if no text exists in ID_VALUE box. */
if (HIWORD(lParam) == EN_CHANGE)
EnableWindow(GetDlgItem(hDlg, IDOK),
SendMessage(LOWORD(lParam), WM_GETTEXTLENGTH,
0, 0L) ? TRUE : FALSE);
break;
default:
return FALSE;
break;
}
return TRUE;
}


WORD FAR PASCAL FaderFlags (DWORD dwFlags, LPSTR szString,
WORD wMaxString)
{
*szString = 0;
if (dwFlags & FDRS_TRACK)
lstrcat(szString, "FDRS_TRACK");
return lstrlen(szString);
}


LPCTLSTYLE FAR PASCAL CtlStyleLock (HWND hDlg) {
LOCALHANDLE hCtlStyleDlg;
NPCTLSTYLEDLG npCtlStyleDlg;
LPCTLSTYLE lpCtlStyle;

if ( (hCtlStyleDlg=GetProp(GetParent(hDlg),
szFaderCtlProp)) == NULL)
return NULL;
npCtlStyleDlg = (NPCTLSTYLEDLG) LocalLock(hCtlStyleDlg);
lpCtlStyle = (LPCTLSTYLE) GlobalLock(
npCtlStyleDlg->hCtlStyle);
LocalUnlock(hCtlStyleDlg);
return lpCtlStyle;
}

VOID FAR PASCAL CtlStyleUnlock (HWND hDlg) {
LOCALHANDLE hCtlStyleDlg;
NPCTLSTYLEDLG npCtlStyleDlg;

if ((hCtlStyleDlg=GetProp(GetParent(hDlg),
szFaderCtlProp)) == NULL)
return;
npCtlStyleDlg = (NPCTLSTYLEDLG) LocalLock(hCtlStyleDlg);
GlobalUnlock(npCtlStyleDlg->hCtlStyle);
LocalUnlock(hCtlStyleDlg);
}

/* Convert number into ID string */
WORD FAR PASCAL GetIdString (HWND hDlg, LPSTR szId,
WORD wIdMaxLen) {
LOCALHANDLE hCtlStyleDlg;
NPCTLSTYLEDLG npCtlStyleDlg;
LPCTLSTYLE lpCtlStyle;
WORD wIdLen;

/* Property is associated with Dialog Editor's window.
Parent of the dialog box is the Dialog Editor. */
if (( hCtlStyleDlg=GetProp(GetParent(hDlg),
szFaderCtlProp)) == NULL)
return 0;

npCtlStyleDlg = (NPCTLSTYLEDLG) LocalLock(hCtlStyleDlg);
lpCtlStyle = (LPCTLSTYLE) GlobalLock(
npCtlStyleDlg->hCtlStyle);
/* Call the lpfnIdToStr function to convert the numeric
ID to its string equivalent. */
wIdLen = (*npCtlStyleDlg->lpfnIdToStr)
(lpCtlStyle->wId, szId, wIdMaxLen);
GlobalUnlock(npCtlStyleDlg->hCtlStyle);
LocalUnlock(hCtlStyleDlg);
return wIdLen;
}

/* Convert ID string value to int and store in CTLSTYLE */
DWORD FAR PASCAL PutIdValue (HWND hDlg, LPSTR szId) {
LOCALHANDLE hCtlStyleDlg;
NPCTLSTYLEDLG npCtlStyleDlg;
LPCTLSTYLE lpCtlStyle;
DWORD dwResult = 0;

if ((hCtlStyleDlg=GetProp(GetParent(hDlg),
szFaderCtlProp)) == NULL )
return NULL;
npCtlStyleDlg = (NPCTLSTYLEDLG) LocalLock(hCtlStyleDlg);

/* Call the lpfnStrToId function to convert the string
ID to its numeric equivalent. */
dwResult = (*npCtlStyleDlg->lpfnStrToId)(szId);

LocalUnlock(hCtlStyleDlg);

/* If LOWORD is zero, string NOT found. */
if (LOWORD(dwResult) == 0)
return dwResult;

/* LOWORD is not zero, numeric ID is in the HIWORD. */
lpCtlStyle = CtlStyleLock(hDlg);
lpCtlStyle->wId = HIWORD(dwResult);
CtlStyleUnlock(hDlg);
return dwResult;
}



  3 Responses to “Category : Files from Magazines
Archive   : MAR92.ZIP
Filename : 3N03006A

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/