home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windoware
/
WINDOWARE_1_6.iso
/
source
/
adg_4-6
/
spindlg.c
< prev
Wrap
C/C++ Source or Header
|
1991-02-21
|
4KB
|
125 lines
/****************************************************************************
Module name: SpinDlg.C
Programmer : Jeffrey M. Richter.
*****************************************************************************/
#include "..\nowindws.h"
#define OEMRESOURCE
#undef NOCOLOR
#undef NOCTLMGR
#undef NOGDI
#undef NOKERNEL
#undef NOLSTRING
#undef NOMEMMGR
#undef NORASTEROPS
#undef NOUSER
#undef NOVIRTUALKEYCODES
#undef NOWINMESSAGES
#undef NOWINOFFSETS
#undef NOWINSTYLES
#include <windows.h>
#include <custcntl.h>
#include "cntl-de.h"
#include "spin.h"
#include "dialog.h"
extern HANDLE _hInstance;
extern char _szControlName[];
BOOL FAR PASCAL SpinDlgFn (HWND hDlg, WORD wMessage, WORD wParam, LONG lParam);
GLOBALHANDLE FAR PASCAL SpinInfo (void) {
GLOBALHANDLE hCtlInfo = NULL;
hCtlInfo = ControlInfo(0x0100, _szControlName, _szControlName);
if (hCtlInfo == NULL) return(hCtlInfo);
AddControlType(hCtlInfo, 0, 7, 12, WS_BORDER | WS_CHILD, _szControlName);
return(hCtlInfo);
}
BOOL FAR PASCAL SpinStyle (HWND hWnd, GLOBALHANDLE hCtlStyle,
LPFNSTRTOID lpfnStrToId, LPFNIDTOSTR lpfnIdToStr) {
return(ShowStyleDlg(_hInstance, "StyleDlg", hWnd, (FARPROC) SpinDlgFn, 0,
hCtlStyle, lpfnStrToId, lpfnIdToStr));
}
BOOL FAR PASCAL SpinDlgFn (HWND hDlg, WORD wMsg, WORD wParam, LONG lParam) {
BOOL fProcessed = TRUE;
char szId[20];
DWORD dwResult;
LPCTLSTYLE lpCtlStyle;
switch (wMsg) {
case WM_INITDIALOG:
// Fill the "EDIT" control with the name of the this control's ID.
GetIdString(hDlg, szId, sizeof(szId));
SetDlgItemText(hDlg, ID_VALUE, szId);
// Initialize check box reflecting Spin control's styles.
lpCtlStyle = CtlStyleLock(hDlg);
SendDlgItemMessage(hDlg, ID_WRAP, BM_SETCHECK,
(BOOL) (lpCtlStyle->dwStyle & SPNS_WRAP), 0l);
CtlStyleUnlock(hDlg);
break;
case WM_COMMAND:
switch(wParam) {
case IDOK:
// Convert the string ID value to its numeric equivalent.
GetDlgItemText(hDlg, ID_VALUE, szId, sizeof(szId));
dwResult = SetIdValue(hDlg, szId);
// If string ID not found or added, do NOT end 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_WRAP, BM_GETCHECK, 0, 0l))
lpCtlStyle->dwStyle |= SPNS_WRAP;
CtlStyleUnlock(hDlg);
// Fall through to IDCANCEL case.
case IDCANCEL:
// Terminate dialog box returning IDOK or 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: fProcessed = FALSE; break;
}
break;
default: fProcessed = FALSE; break;
}
return(fProcessed);
}
WORD FAR PASCAL SpinFlags (DWORD dwFlags, LPSTR szString, WORD wMaxString) {
WORD x;
*szString = 0;
if (dwFlags & SPNS_WRAP) lstrcat(szString, "SPNS_WRAP | ");
x = lstrlen(szString);
if (x > 0) { x -= sizeof(" | ") - 1; *(szString + x) = 0; }
return(x);
}