mirror of https://github.com/tongzx/nt5src
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.
270 lines
8.1 KiB
270 lines
8.1 KiB
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright(c) Microsoft Corp., 1991 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
bltsi.hxx
|
|
Header file for the BLT spin item
|
|
|
|
FILE HISTORY:
|
|
Terryk 16-Apr-1991 created
|
|
Terryk 20-Jun-1991 code review changed. Attend: beng
|
|
Terryk 05-Jul-1991 second code review changed. Attend:
|
|
beng chuckc rustanl annmc terryk
|
|
Terryk 23-Jul-1991 make QuerySmallXXXValue to virtual
|
|
Terryk 11-Nov-1991 Change the return type to LONG
|
|
TerryK 22-Mar-1992 Changed LONG to ULONG
|
|
|
|
*/
|
|
|
|
#ifndef _BLTSI_HXX_
|
|
#define _BLTSI_HXX_
|
|
|
|
#include "bltcc.hxx"
|
|
#include "bltgroup.hxx"
|
|
|
|
#include "string.hxx"
|
|
|
|
|
|
/**********************************************************************
|
|
|
|
NAME: SPIN_ITEM
|
|
|
|
SYNOPSIS: Spin button item - item which controlled by the SPIN_GROUP .
|
|
Each individual SPIN_ITEM should contained it original
|
|
function. For example, if a SPIN_ITEM is derived from
|
|
SLE, it will also able to handle any SLE input from the
|
|
user. However, it should also contained methods to
|
|
communicated with the SPIN_GROUP
|
|
|
|
INTERFACE: Here are a list of the memeber functions:
|
|
|
|
SPIN_ITEM() - constructor
|
|
~SPIN_ITEM() - destructor
|
|
|
|
IsStatic() - see whether the object is static
|
|
or not. If an object is not
|
|
static, it must belonged to
|
|
CHANGEABLE_SPIN_ITEM class.
|
|
|
|
SetAccKey() - Set the SPIN_ITEM accelerator keys
|
|
|
|
QueryAccCharPos() - Query the current accelerator
|
|
keys of the SPIN_ITEM. Given a
|
|
character as a parameter, the
|
|
routine will return the
|
|
position of the character
|
|
within the accelerator
|
|
character list. If the given
|
|
character is not in the list,
|
|
it will return -1.
|
|
QueryAccKey() - return the whole NLS accelerator
|
|
characters list
|
|
|
|
PARENT: CUSTOM_CONTROL
|
|
|
|
USES: NLS_STR, CONTROL_GROUP
|
|
|
|
HISTORY:
|
|
terryk 01-May-1991 creation
|
|
beng 04-Oct-1991 Win32 conversion
|
|
|
|
**********************************************************************/
|
|
|
|
DLL_CLASS SPIN_ITEM : public CUSTOM_CONTROL
|
|
{
|
|
private:
|
|
NLS_STR _nlsAccKey; // the accelerator key for the field
|
|
|
|
protected:
|
|
virtual BOOL OnFocus( const FOCUS_EVENT & );
|
|
virtual BOOL OnChar( const CHAR_EVENT & );
|
|
|
|
public:
|
|
SPIN_ITEM( CONTROL_WINDOW * pWin );
|
|
~SPIN_ITEM();
|
|
|
|
// Check whether the SPIN_ITEM is static or not
|
|
// CODEWORK: change it to inline to avoid the v-table
|
|
virtual BOOL IsStatic( ) const =0;
|
|
|
|
// Set and query the accelerator key
|
|
APIERR SetAccKey( const NLS_STR & nlsStr );
|
|
APIERR SetAccKey( MSGID nMsgID );
|
|
APIERR QueryAccKey( NLS_STR * pnlsAccKey ) ;
|
|
|
|
virtual LONG QueryAccCharPos( WCHAR wcInput );
|
|
CONTROL_GROUP *QueryGroup();
|
|
};
|
|
|
|
|
|
/**********************************************************************
|
|
|
|
NAME: STATIC_SPIN_ITEM
|
|
|
|
SYNOPSIS: static spin item object
|
|
|
|
INTERFACE: see SPIN_ITEM for more
|
|
STATIC_SPIN_ITEM() - constrcutor
|
|
|
|
IsStatic() - always return TRUE because it is a static
|
|
object.
|
|
|
|
PARENT: SPIN_ITEM
|
|
|
|
CAVEATS: This class is used as the base class for SPIN_SLE_SEPARATOR
|
|
|
|
NOTES:
|
|
|
|
HISTORY:
|
|
terryk 01-May-1991 creation
|
|
|
|
**********************************************************************/
|
|
|
|
DLL_CLASS STATIC_SPIN_ITEM: public SPIN_ITEM
|
|
{
|
|
protected:
|
|
virtual BOOL OnFocus( const FOCUS_EVENT & );
|
|
|
|
public:
|
|
STATIC_SPIN_ITEM( CONTROL_WINDOW *pWin );
|
|
virtual BOOL IsStatic( ) const
|
|
{ return TRUE; };
|
|
};
|
|
|
|
|
|
/**********************************************************************
|
|
|
|
NAME: CHANGEABLE_SPIN_ITEM
|
|
|
|
SYNOPSIS: changeable spin item object - SPIN_ITEM which is allowed
|
|
to changed by the user.
|
|
|
|
INTERFACE: see SPIN_ITEM for more functions.
|
|
CHANGEABLE_SPIN_ITEM() - constructor
|
|
~CHANGEABLE_SPIN_ITEM() - destructor
|
|
|
|
IsStatic() - always FALSE
|
|
|
|
// set object information functions
|
|
SetRange() - set the range of the object
|
|
SetMin() - set the min number of the object
|
|
SetValue() - set the current value of the object
|
|
SetWrapAround() - set the object wrapable or not
|
|
SetBigIncValue() - set the big increment value
|
|
Default = 10
|
|
SetSmallIncValue() - set the small increment value
|
|
Default = 1
|
|
SetModified() - set the modify flag
|
|
|
|
// Query Function
|
|
QueryValue() - return the current object value
|
|
QueryMin() - return the min value
|
|
QueryMax() - return the max value
|
|
QueryRange() - return the range value
|
|
QueryLimit() - return the limit
|
|
QueryWrap() - return whether the item is wrapable or not
|
|
QueryBigIncValue() - return the big increment value
|
|
QuerySmallIncValue() - return the small increment value
|
|
|
|
CheckRange() - given a number and check whether the
|
|
number is within the range or not
|
|
|
|
// operator
|
|
operator+=() - add an integer value to the object
|
|
operator-=() - subtract an ULONG value to the object
|
|
|
|
Update() - update the current item in the screen
|
|
SaveCurrentData() - save the current value within the item
|
|
and store it as the internal value
|
|
CheckValid() - check whether the spin item is valid or not
|
|
|
|
PARENT: SPIN_ITEM
|
|
|
|
NOTES: CODEWORK: create a base type. For exmaple, this class should
|
|
be multiple inheritance from SPIN_ITEM and NUM_CLASS.
|
|
Where NUM_CLASS provide the set min, range, value ...
|
|
functions.
|
|
|
|
HISTORY:
|
|
terryk 01-May-1991 creation
|
|
|
|
**********************************************************************/
|
|
|
|
DLL_CLASS CHANGEABLE_SPIN_ITEM: public SPIN_ITEM
|
|
{
|
|
private:
|
|
ULONG _nValue; // current vallue
|
|
ULONG _dRange; // the range of number
|
|
ULONG _nMin; // the min number
|
|
BOOL _fWrap; // see whether it is wrapable or not
|
|
ULONG _dBigIncValue; // Big increase value
|
|
ULONG _dSmallIncValue; // small increase value
|
|
ULONG _dBigDecValue; // Big decrease value
|
|
ULONG _dSmallDecValue; // small decrease value
|
|
ULONG _nSaveValue; // SaveValue
|
|
|
|
public:
|
|
|
|
CHANGEABLE_SPIN_ITEM( CONTROL_WINDOW *pWin, ULONG nValue = 0,
|
|
ULONG nMin = 0, ULONG dRange = 32767,
|
|
BOOL fWrap = TRUE );
|
|
virtual BOOL IsStatic( ) const
|
|
{ return FALSE; };
|
|
|
|
// setting object information
|
|
VOID SetRange( const ULONG dRange );
|
|
VOID SetMin( const ULONG nMin );
|
|
VOID SetValue( const ULONG nValue );
|
|
VOID SetWrapAround( const BOOL fWrap );
|
|
VOID SetBigIncValue( const ULONG dBigIncValue );
|
|
VOID SetSmallIncValue( const ULONG dSmallIncValue );
|
|
VOID SetBigDecValue( const ULONG dBigDecValue );
|
|
VOID SetSmallDecValue( const ULONG dSmallDecValue );
|
|
|
|
VOID SetModified();
|
|
|
|
// Query Function
|
|
inline ULONG QueryValue() const
|
|
{ return _nValue; };
|
|
|
|
inline ULONG QueryMin() const
|
|
{ return _nMin; };
|
|
|
|
inline ULONG QueryMax() const
|
|
{ return _nMin + _dRange - 1; };
|
|
|
|
inline BOOL QueryWrap() const
|
|
{ return _fWrap; };
|
|
|
|
inline ULONG QueryRange() const
|
|
{ return _dRange; };
|
|
|
|
inline ULONG QueryLimit() const
|
|
{ return _dRange + _nMin; };
|
|
|
|
// this maybe increase or decrease in different rate
|
|
virtual ULONG QueryBigIncValue() const;
|
|
virtual ULONG QuerySmallIncValue() const;
|
|
virtual ULONG QueryBigDecValue() const;
|
|
virtual ULONG QuerySmallDecValue() const;
|
|
|
|
INT CheckRange( const ULONG nValue ) const;
|
|
|
|
// operator
|
|
virtual VOID operator+=( const ULONG nValue );
|
|
virtual VOID operator-=( const ULONG nValue );
|
|
|
|
// misc function
|
|
virtual VOID Update();
|
|
|
|
virtual APIERR SaveCurrentData();
|
|
|
|
virtual BOOL CheckValid()
|
|
{
|
|
return TRUE;
|
|
}
|
|
};
|
|
|
|
#endif // _BLTSI_HXX_
|