(Phoenix) Masked Edit-Control

Started by Theo Gottwald, May 19, 2007, 03:43:06 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Theo Gottwald

The following Messages are from Phoenix-Controls.
To make them avaiable for Internet-Search I wanted to post them here.


'###############################################################################
' BEGIN MaskedEdit_Class32
'###############################################################################

' Masked Edit notifications
' -------------------------
'%NM_SETFOCUS                    = %NM_FIRST - 7
' Notifies the parent window of the control that the control has received the
' input focus.  NM_SETFOCUS is sent in the form of a WM_NOTIFY message.

'%NM_KILLFOCUS                   = %NM_FIRST - 8
' Notifies the parent window of the control that the control has lost the
' input focus.  NM_KILLFOCUS is sent in the form of a WM_NOTIFY message.

%MEDN_CHANGE                    = %WM_USER + &H5&
' Sent when the user has taken an action that may have altered text in the control.
' Unlike the MEDN_UPDATE notification message, this notification message is sent after
' Windows updates the screen.
' MEDN_CHANGE is sent in the form of a WM_NOTIFY message.

%MEDN_UPDATE                    = %WM_USER + &H6&
' Sent when the control is about to display altered text.  This notification message
' is sent after the control has formatted the text, but before it displays the text.
' This makes it possible TO resize the control window, if necessary.
' MEDN_UPDATE is sent in the form of a WM_NOTIFY message.

%MEDN_MAXTEXT                   = %WM_USER + &H7&
' Sent when the current text insertion has exceeded the maximum number of characters
' allowed for the control.  MEDN_MAXTEXT is sent in the form of a WM_NOTIFY message.
' This message is also sent when the control does not have the MEDS_AUTOHSCROLL style
' and the number of characters to be inserted would exceed the width of the control.
' A control with the MEDS_CENTER or MEDS_RIGHT style sends this message when no more
' characters can be inserted to the left of the insertion point.

' The MASKEDITNOTIFY structure is used by the MEDN_VALIDATIONERROR notification.
TYPE MASKEDITNOTIFY    ' medn
  hdr             AS NMHDR        ' control handle and id information
  bStartPos       AS BYTE         ' zero-based index of the first invalid character
  pszInvalidText  AS ASCIIZ PTR   ' address of invalid text
END TYPE

%MEDN_VALIDATIONERROR           = %WM_USER + &H8&
' Sent when the control receives invalid input, as determined by the input mask.
' MEDN_VALIDATIONERROR is sent in the form of a WM_NOTIFY message.

' Masked Edit messages
' --------------------
%MEDM_SETTEXTCOLOR              = %WM_USER + &H3&
' Purpose: sets the text color.
' wParam:  TRUE - set text color of literals.
' lParam:  text color.
' Return:  old text color.

%MEDM_GETTEXTCOLOR              = %WM_USER + &H4&
' Purpose: gets the current text color.
' wParam:  TRUE - get text color of literals.
' lParam:  N/A
' Return:  text color.

%MEDM_SETBACKCOLOR              = %WM_USER + &H5&
' Purpose: sets the background color.
' wParam:  TRUE - set background color of literals.
' lParam:  back color.
' Return:  old background color.

%MEDM_GETBACKCOLOR              = %WM_USER + &H6&
' Purpose: gets the current background color.
' wParam:  TRUE - get background color of literals.
' lParam:  N/A
' Return:  background color.

%MEDM_SETMASK                   = %WM_USER + &HB&
' Purpose: sets the input mask.  The contents of the text buffer may change
'          or the buffer may be set to NULL when the input mask is changed.
' wParam:  N/A
' lParam:  address of buffer with mask.
' Return:  N/A

' The input mask can consist of the following characters.
' Character   Description
' ---------   -----------
' .           Decimal placeholder.
' ,           Thousands separator.
' :           Time separator.
' /           Date separator.
'             The actual character used for the decimal, thousands, time and
'             date separators depends on your international settings.  These
'             characters are treated as literals for masking purposes.

' 0           Digit, 0-9.  Entry is required.
' 9           Digit, 0-9 or space.  Entry is optional.
' #           Digit or space.  Plus or minus (+-) signs are allowed.  Entry is optional.

' L           Letter, A-Z or a-z.  Entry is required.
' ?           Letter or space.  Entry is optional.

' A           Letter or digit.  Entry is required.
' a           Letter, digit or space.  Entry is optional.

' &           Any character or space. Entry is required.
' C           Any character or space. Entry is optional.

' >           Convert characters that follow to uppercase.
' <           Convert characters that follow to lowercase.

' |           Stop converting characters to upper or lower case.

' []          Allow only the specified characters.  Entry is required.
' {}          Allow only the specified characters.  Entry is optional.
'             Also, stops the conversion of characters to uppercase or lowercase.
'             Examples,
'             [abcde]  allows a, b, c, d or e to be entered.
'             [a-e]    allows a, b, c, d or e to be entered.
'             [a-e0-3] allows a, b, c, d, 0, 1, 2 or 3 to be entered.

' ()          Allow only values within the specified numeric range.
'             This must be the first non-input characters in a field.
'
'             A field is one one more input characters delimited by literals.
'
'             A field with a numeric range, supports the following keyboard navigation.
'             Up Arrow key   - increases the value in the field.
'             Down Arrow key - decreases the value in the field.
'             Home key       - selects the minimum value.
'             End key        - selects the maximum value.

'             Minimum number supported = -999999999
'             Maximum number supported = 999999999
'
'             Examples,
'             (15,35)
'             (-100,75)

' !           Changes the default placement of spaces representing optional characters
'             in text retrieved from the control.  By default, optional characters are
'             represented as trailing blanks when the MEDS_LEFT style is set, and as
'             leading blanks when the MEDS_CENTER or MEDS_RIGHT style is set.  The
'             presence of this character causes optional characters to be represented as
'             leading blanks when MEDS_LEFT is set and as trailing blanks when MEDS_RIGHT
'             or MEDS_CENTER is set.

' \           Characters are displayed as themselves(literals).

'             Characters that are not input mask characters are treated as literals.

'             Examples,

'             Internet address
'             (0,255)###-(0,255)###-(100,255)###-(0,255)###

'             Phone number
'             \(000\)-000-0000 Ext.999

'             ISBN number
'             ISBN-(100,200)###-???->AAAA-[a-e1-5][789][wxyz]{aeiou1-4}

%MEDM_GETMASK                   = %WM_USER + &HC&
' Purpose: gets the current mask.  Set wParam or lParam to zero, to
'          have the message return the size of the buffer needed to
'          hold the text including the terminating NULL.
' wParam:  count of characters to copy including the terminating NULL.
' lParam:  address of buffer to receive the text.
' Return:  count of characters copied to the buffer.

%MEDM_SETPROMPTCHAR             = %WM_USER + &HD&
' Purpose: sets the character used to prompt the user for input.  If
'          lParam equals zero, the prompt character is set to the
'          default.  The underscore character "_" is the default.
' wParam:  new prompt character.
' lParam:  N/A
' Return:  previous prompt character

%MEDM_GETPROMPTCHAR             = %WM_USER + &HE&
' Purpose: gets the prompt character used to prompt the user for input.
' wParam:  N/A
' lParam:  N/A
' Return:  current prompt character.

%MEDM_SETSELTEXT                = %WM_USER + &HF&
' Purpose: sets the text contained in the control.  The text is inserted
'          at the location of the caret.  Any selected text in the control
'          is replaced with the new text.
'          The WM_SETTEXT or MEDM_SETTEXT messages can be used to replace the
'          entire contents of the control whether or not there is selected text
'          in the control.
' wParam:  N/A
' lParam:  address of null-terminated text or NULL.
' Return:  N/A

%MEDM_GETSELTEXT                = %WM_USER + &H10&
' Purpose: gets the selected text contained in the control.
'          The WM_GETTEXT or MEDM_GETTEXT messages can be used to retrieve the
'          entire contents of the control whether or not there is selected text
'          in the control.  The text retrieved by MEDM_GETSELTEXT and MEDM_GETTEXT
'          does not contain literal characters when the MEDS_CLIPLITERALS style is set.
'          WM_GETTEXT is not affected by the MEDS_CLIPLITERALS style and always returns
'          literal and prompt characters.
'          Set wParam or lParam to zero, to have the message return the size of
'          the buffer needed to hold the text including the terminating NULL.
' wParam:  count of characters to copy including the terminating NULL.
' lParam:  address of buffer to receive the text.
' Return:  count of characters copied to the buffer.

%MEDM_SETTEXT                   = %WM_USER + &H11&
' Purpose: replaces the entire contents of the control or the specified field whether
'          or not there is selected text in the control.  Literals are not affected.
' wParam:  loword = zero-based index of field.  Set to 0xff to replace all text in the
'          control.
' lParam:  address of null-terminated text or NULL.
' Return:  N/A

%MEDM_GETTEXT                   = %WM_USER + &H12&
' Purpose: retrieves the entire contents of the control or the specified field whether
'          or not there is selected text in the control.  The text retrieved does not
'          contain literal characters when the MEDS_CLIPLITERALS style is set.
'          Set lParam or the hiword of wParam to zero, to have the message return the
'          size of the buffer needed to hold the text including the terminating NULL.
'          Because the hiword of wParam is used to specify the buffer size, this message
'          cannot be used to retrieve more than 64K characters from the control.
' wParam:  loword = zero-based index of field.  Set to 0xff to retrieve all text in the
'                   control.
'          hiword = count of characters to copy including the terminating NULL.
' lParam:  address of buffer to receive the text.
' Return:  count of characters copied to the buffer.

%MEDM_SETPASSWORDCHAR           = %WM_USER + &H13&
' Purpose: sets the character that is displayed for each character typed into
'          the control when the control has the MEDS_PASSWORD style.
'          If lParam equals zero, the password character is set to the default.
'          The asterisk character "*" is the default.
' wParam:  new password character.
' lParam:  N/A
' Return:  previous password character.

%MEDM_GETPASSWORDCHAR           = %WM_USER + &H14&
' Purpose: gets the password character that is displayed for each character typed
'          into the control.
' wParam:  N/A
' lParam:  N/A
' Return:  current password character.

%MEDM_SETLIMITTEXT              = %WM_USER + &H15&
' Purpose: sets the text limit for the control.  The text limit is the maximum amount
'          of text, in bytes, that the control can contain.
' wParam:  new text limit in bytes.
' lParam:  N/A
' Return:  previous text limit.

%MEDM_GETLIMITTEXT              = %WM_USER + &H16&
' Purpose: gets the current text limit, in bytes.
' wParam:  N/A
' lParam:  N/A
' Return:  current text limit.

%MEDM_SETSEL                    = %WM_USER + &H17&
' Purpose: selects a range of characters.
'          If the start position is 0 and the end position is -1, all the text
'          in the control is selected.  If the start position is -1, any current
'          selection is removed.  The caret is placed at the end of the selection
'          indicated by the greater of the two values wParam and lParam.
' wParam:  starting position.
' lParam:  ending position.
' Return:  N/A

%MEDM_GETSEL                    = %WM_USER + &H18&
' Purpose: retrieves the starting and ending character positions of the current selection.
' wParam:  address of variable to receive the starting position.
' lParam:  address of variable to receive the ending position.
' Return:  N/A

%MEDM_SETCURFIELD               = %WM_USER + &H19&
' Purpose: moves the caret to the specified field.  All text in the field is selected
'          if the control has the MEDS_AUTOSELECTFIELD style.
'          A field is one one more input characters delimited by literals.
' wParam:  zero-based index of field.
' lParam:  N/A
' Return:  N/A

%MEDM_GETCURFIELD               = %WM_USER + &H1A&
' Purpose: gets the index of the field the caret is currently in.
'          A field is one one more input characters delimited by literals.
' wParam:  N/A
' lParam:  N/A
' Return:  zero-based index of field or 0xff if the caret is not in a field.

%MEDM_SETVALUE                  = %WM_USER + &H1B&
' Purpose: sets the value of the specified field.
'          A field is one one more input characters delimited by literals.
' wParam:  zero-based index of field.
' lParam:  new value of field.
' Return:  N/A

%MEDM_GETVALUE                  = %WM_USER + &H1C&
' Purpose: gets the value of the specified field.
'          A field is one one more input characters delimited by literals.
' wParam:  zero-based index of field.
' lParam:  N/A
' Return:  value of specified field.

%MEDM_SETMARGINS                = %WM_USER + &H1D&
' Purpose: sets the widths of the left and right margins.
' wParam:  specifies the margins to set.
'          This parameter can be a combination of the following values:
'          EC_LEFTMARGIN  - sets the left margin.
'          EC_RIGHTMARGIN - sets the right margin.
'          EC_USEFONTINFO - uses information about the current font to set the margins.
' lParam:  loword = width of left margin in pixels. Ignored if EC_LEFTMARGIN is not specified.
'          hiword = width of right margin in pixels. Ignored if EC_RIGHTMARGIN is not specified.
'          lParam is ignored if EC_USEFONTINFO is specified.
' Return:  N/A

%MEDM_GETMARGINS                = %WM_USER + &H1E&
' Purpose: gets the widths of the left and right margins.
' wParam:  N/A
' lParam:  N/A
' Return:  loword = width of left margin in pixels.
'          hiword = width of right margin in pixels.

' Masked Edit styles
' ------------------
%MEDS_LEFT                                     = &H0??
' Text is aligned on the left.  The control is filled from left to
' right.  Optional characters are represented in text retrieved from
' the control as trailing blanks.

%MEDS_CENTER                                   = &H1??
' Text is centered.  The control is filled from right to left.
' Optional characters are represented in text retrieved from the
' control as leading blanks.

%MEDS_RIGHT                                    = &H2??
' Text is aligned on the right.  The control is filled from right to
' left.  Optional characters are represented in text retrieved from
' the control as leading blanks.

%MEDS_AUTOTAB                                  = &H4??
' The next control in the tab order receives the input focus as
' soon as the control is filled with valid data by the user.

%MEDS_TABADVANCE                               = &H8??
' Pressing the Tab key within the control moves the caret to the
' next field and Shift+Tab moves the caret to the previous field.

%MEDS_ALLOWPROMPT                              = &H10??
' Allows the prompt character to be a valid input character.

%MEDS_PASSWORD                                 = &H20??
' Displays an asterisk "*" for each character typed into the edit control.
' The MEDM_SETPASSWORDCHAR message can be used to change the character that
' is displayed.

%MEDS_CLIPLITERALS                             = &H40??
' Literal characters in the input mask are not included when doing
' a cut or copy command.

%MEDS_AUTOHSCROLL                              = &H80??
' Automatically scrolls text to the right when the user types a character
' at the end of the line.  When this style is not set, the amount of text
' that can be entered into the control is limited by the size of its display
' area.
' The text is always scrollable when an input mask is defined.

%MEDS_SHOWSELALWAYS                            = &H100??
' Selected text remains highlighted even when the control loses the
' input focus.

%MEDS_AUTOSELECT                               = &H200??
' All text in the control is selected when the control gains the input
' focus.  If the MEDS_TABADVANCE style is set, all text in a field is
' selected when the Tab key is used to moved to the field.

%MEDS_AUTOSELECTFIELD                          = &H400??
' All text in a field is selected when the Tab key is used to move the
' caret to the field.

%MEDS_READONLY                                 = &H800??
' Prevents the user from editing or entering text in the control.  Text
' can still be selected and copied.

%MEDS_UNDERLINE                                = &H1000??
' The underline character is used as a placeholder for user input,
' and valid characters that are entered remain underlined.  If this
' style is not set, the prompt character disappears when a valid
' character is entered.

%MEDS_SILENT                                   = &H2000??
' The control does not beep when an error occurs.  If this style is
' not set, the control beeps whenever an error occurs.

DECLARE FUNCTION InitMaskEdit LIB "MASKED32.DLL" ALIAS "InitMaskEdit" () AS LONG

'###############################################################################
' END MaskedEdit_Class32
'###############################################################################