SECCurrencyEdit Class

class SECCurrencyEdit: public SECDropEdit public CWnd

The SECCurrencyEdit provides an extensible class for entering and displaying custom-formatted currency data. Input data parsing and output display formatting can be customized by descending new classes from SECCurrencyEdit::Format and SECCurrencyEdit.

The SECCurrencyEdit class supports some of the EM_* edit control message interface, and it can thus be manipulated to some degree using a Cedit object (not recommended, but possible if required for compatibility with existing code). Messages supported are listed below.

See the CURRENCY sample in the \SAMPLES\TOOLKIT\STANDARD\CONTROLS\CURRENCY directory for a demonstration of this class.

Defined in: curredit.h

Windows Messages

WM_COPY, WM_CUT, WM_GETFONT, WM_PASTE, WM_SETFONT, WM_SETREDRAW, WM_SETTEXT, WM_UNDO,

Edit Control Messages

EM_CANUNDO, EM_EMPTYUNDOBUFFER, EM_GETSEL, EM_SETREADONLY EM_SETSEL, EM_UNDO, EM_SETMARGINS

Class Members

Construction/destruction

SECCurrencyEdit()

Constructs a SECCurrencyEdit object.

SECCurrencyEdit(Format* pFmt)

Constructs a SECCurrencyEdit object.

BOOL  Initialize(CWnd* pwndParent, UINT uiControlID)

Replaces an existing edit control.

Attributes

void  GetValue(double& d) const

Gets the actual numeric value directly.

void  SetValue(double d, BOOL bRedraw = TRUE)

Sets the actual numeric value directly.

void  GetFormat(Format& f)

Gets the display formatting data.

void  SetFormat(const Format& f)

Sets the display formatting data.

enum  Align

Alignments

Align  GetAlignment() const

The alignment is actually maintained via edit control

void  SetAlignment(Align a)

The alignment is actually maintained via edit control

BOOL  IsReadOnly() const

The read-only feature is actually maintained via the normal

void  SetReadOnly(BOOL b)

The read-only feature is actually maintained via the normal

void  SetMargins(UINT nLeft, UINT nRight)

Sets the margins for the control.

DWORD  GetMargins() const

Retrieves the margins for the control.

Overridable

virtual BOOL  HitTestBtn(CPoint point, BOOL bClient = FALSE) const

Performs hit testing for the button.

virtual BOOL  PrepareTextForPaste(CString& strText)

Pre-paste processing.

virtual CMenu*  CreatePopupMenu() const

Creates the popup menu.

virtual void  DeletePopupMenu(CMenu* p) const

Deletes the popup menu.

virtual void  DoBackspace()

Processes backspace key press.

virtual void  DoDelete()

Processes delete key press.

virtual void  DoInsert(LPCTSTR pcsz)

Processes insert key press.

virtual void  EraseBackground(CDC* pDC)

Erases the control background.

virtual void  SaveDataForUndo(LPCTSTR p = NULL, int iCaret = -1)

Stores data for undo operation.

virtual void  StartEdit(int iCaretPos)

Begins edit mode.

virtual void  StopEdit()

Ends edit mode.

virtual void  DrawDecimalSeparatorLine(CDC& DC, int x)

Draws a vertical decimal separator on the control.

virtual void  HandleNegativeSignKey()

Handles a minus sign key press.

virtual void  ToggleOverstrikeMode()

Toggles overstrike mode state.

virtual BOOL  ShowCalculator()

Displays calculator.

virtual void  OnClicked()

Method called when the button has been clicked.

Implementation

void  NotifyParent(UINT uiCode)

Notify parent of control state change.

BOOL  IsNegative() const

Determines if current value is negative.

BOOL  HasSel() const

Detemines if edit control has highlighted (selected) text.

BOOL  SetSel(int iStart, int iStop)

Sets the selected text.

BOOL  SetSelNone()

Deselects all text in the control.

BOOL  SetSelAll()

Selects all text in the control

BOOL  IsMouseSelecting() const

Returns whether text is currently being selected with the mouse.

BOOL  IsEntireNumberSelected(BOOL* pbMore = NULL) const

Returns whether the entire number is selected.

BOOL  IsOverstrikeEnabled() const

Returns whether overstrike mode is enabled.

COLORREF  GetBackgroundColor() const

Returns the background color of the edit control.

COLORREF  GetTextColor() const

Returns the text color for the edit control.

int  PointToCaretPos(const CPoint& pt)

Points to the caret’s position.

void  CalculateTextRect(CRect& rc)

Calculates the rectangle for text in the edit control.

void  DoInsert(TCHAR c)

Makes an insertion in the edit control.

void  GetSelectedText(CString& s) const

Gets text selected in the edit control.

void  MoveCaret(int iChar, BOOL bUpdateSel = FALSE)

Relocates the caret in the edit control.

void  PaintingCore(CDC& DC)

Redraws the core currency formatting on the specified display device context.

void  QueueRedraw(BOOL bEraseBackground = TRUE)

Redraws queued data.

void  ReplaceSelString(LPCTSTR pcszNew, CString& str)

Replaces the currently selected string with the specified text.

void  SetWindowTextNoParse(LPCTSTR p)

Sets text that does not require parsing.

void  MoveCaretToNumber()

Positions the caret near the number.

void  SetValue(double d, BOOL bNegative, BOOL bRedraw)

Sets the value of the number in the control.

Protected data members

BOOL  m_bNegative

Is the data value negative?

BOOL  m_bCanUndo

Undo buffer has something?

BOOL  m_bParseOnSetText

Parse value on WM_SETTEXT?

BOOL  m_bRedraw

Is redraw allowed?

BOOL  m_bMouseSelect

Are we mouse selecting?

BOOL  m_bOverstrike

Is overstrike mode enabled?

UNDODATA  m_Undo

Undo buffer

double  m_dValue

Numeric value

Format*  m_pFormat

Current format settings

HFONT  m_hFont

Font set via WM_SETFONT

int  m_iCaretPos

Caret character position

SELDATA  m_Sel

Selection information

UINT  m_uiRightMargin

The right margin in pixels.

UINT  m_uiLeftMargin

The left margin in pixels.