TNB Library
公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
CEditValueT< TYP, TMIN, TMAX > クラステンプレート

数値専用 Edit コントロールテンプレート [詳解]

#include <TnbMfcEditValue.h>

+ CEditValueT< TYP, TMIN, TMAX > の継承関係図

公開型

typedef TYP TYPE
 型定義 [詳解]
 

公開メンバ関数

void AddSpinButton (int dummy=0)
 [設定] スピンボタン追加 [詳解]
 
 CEditValueT (void)
 コンストラクタ [詳解]
 
DWORD GetExStyle (void) const
 [取得] ウィンドウ拡張スタイル取得. [詳解]
 
void GetRange (TYPE &_xMin, TYPE &_xMax, TYPE &_step)
 [取得] 範囲取得 [詳解]
 
HWND GetSafeHwnd (void) const
 [取得] ウィンドウハンドル取得. [詳解]
 
DWORD GetStyle (void) const
 [取得] ウィンドウスタイル取得. [詳解]
 
CString GetText (void) const
 [取得] 入力文字取得 [詳解]
 
CString GetValidChars (void) const
 [取得] 入力可能文字取得. [詳解]
 
virtual bool GetValue (TYPE &_xValue) const
 [取得] 値取得 [詳解]
 
TYPE GetValue (void) const
 [取得] 値取得 [詳解]
 
BOOL ModifyStyle (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 [設定] ウィンドウスタイル変更. [詳解]
 
BOOL ModifyStyleEx (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 [設定] ウィンドウ拡張スタイル変更. [詳解]
 
void SetCutPasteMode (bool r)
 [設定] カットペーストモード. [詳解]
 
void SetPlace (int ii)
 [設定] ゼロパディング桁数設定 [詳解]
 
virtual void SetRange (TYPE xMin, TYPE xMax, TYPE step=0)
 [設定] 範囲指定 [詳解]
 
void SetText (LPCTSTR lpszText, bool boIsNomoveSel=false)
 [設定] 文字列設定 [詳解]
 
void SetValidChars (LPCTSTR chars)
 [設定] 入力可能文字設定. [詳解]
 
virtual void SetValue (TYPE xValue)
 [設定] 値設定 [詳解]
 
BOOL SetWindowPos (const CWnd *pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
 [設定] ウィンドウサイズポジション設定. [詳解]
 
BOOL ShowWindow (int nCmdShow)
 [設定] ウィンドウ表示状態. [詳解]
 
virtual CString ValueToString (TYPE xValue) const
 [変換] 値文字列化 [詳解]
 
virtual ~CEditValueT (void)
 デストラクタ [詳解]
 

限定公開メンバ関数

virtual LONGLONG AdjustValue (LONGLONG l) const
 [変換] 数値丸め. [詳解]
 
virtual bool IsValidChar (UINT &_nChar, LONG &_lFlags, const CString &strNowText)
 [確認] 入力許可チェック [詳解]
 
virtual void OnChangeRange (void)
 [通知] レンジが変わったときにコール [詳解]
 
virtual BOOL OnChildNotify (UINT message, WPARAM wParam, LPARAM lParam, LRESULT *_pResult)
 [通知] for notifications from parent [詳解]
 
virtual void OnEditEnd (void)
 [通知] フォーカスを失った時にコール [詳解]
 
virtual void OnEditStart (void)
 [通知] フォーカスを得た時に通知 [詳解]
 
virtual void OnInputInvalidChar (void)
 [通知] 禁止文字入力発生時に通知. [詳解]
 
virtual BOOL OnNotify (WPARAM wParam, LPARAM lParam, LRESULT *_pResult)
 [通知] for notifications from parent [詳解]
 
virtual void OnPasteChar (void)
 [通知] ペーストされた時 [詳解]
 
virtual void OnUpdateChar (void)
 [通知] 入力時にコール [詳解]
 
virtual void PreSubclassWindow (void)
 [通知] subclassing/unsubclassing functions. [詳解]
 
CSpinButtonCtrl & ReferSpinButton (void)
 [参照] スピンボタン参照. [詳解]
 
virtual LONGLONG ToInteger (LPCTSTR s) const
 [変換] 文字列から数値作成. [詳解]
 
virtual CString ToString (LONGLONG ll) const
 [変換] 数値から文字列作成. [詳解]
 
virtual LRESULT WindowProc (UINT message, WPARAM wParam, LPARAM lParam)
 [通知] for processing Windows messages. [詳解]
 

限定公開変数類

int m_iZeroPlace
 ゼロパディング [詳解]
 
CString m_lastText
 最終文字列 [詳解]
 
int m_step
 ステップ数 [詳解]
 
LONGLONG m_xMax
 入力可能最大値 [詳解]
 
LONGLONG m_xMin
 入力可能最小値 [詳解]
 

詳解

template<typename TYP, LONGLONG TMIN, LONGLONG TMAX>
class TNB::MFC::CEditValueT< TYP, TMIN, TMAX >

数値専用 Edit コントロールテンプレート

テンプレートクラスです。
数値で入出力できます。
範囲を指定できます。
ステップ数を指定できます(ただし基点は0)。初期値は1です。
スピンコントロールをつけることが出来ます。
使い方
リソースエディタでエディトボックスコントロールを張り、コントロール変数に割り当て後、 そのコントロール変数の型(CEdit)を本クラスに置き換えて使用します。
覚え書き
(CE固有);スピン付きの状態で上下で数値の加減、左右でエディトボックスコントロール内の移動、 および、フォーカスの移動を行います(スピンがない時は、上下でフォーカス移動します)。
todo:
スピン付きの状態でコントロールのサイズを変更すると、スピンの表示がおかしくなります。
引数
TYP
TMIN最小値
TMAX最大値
必要ファイル
TnbMfcEditValue.h
日付
06/01/01 新規作成
06/11/17 CStr の使用から CString に切り替え。
08/01/02 スピンが Editの位置に追従するように修正。
08/01/11 WM_PRINT にスピンボタンも書かれるように対応。
08/01/18 スピンボタン押下時に、フォーカスが来るように修正。
08/01/23 表示を最適化。
08/03/13 KillFocus時、範囲を下回っている時、Step値外など補正が 入った時も BEEP するように変更。
08/04/15 SetValue() 時に範囲チェックを追加。
09/03/25 EM_SETREADONLY でスピンボタンの状態も変化するようにした。
09/09/16 CE 対策。
10/03/17 GetValue() の亜種、追加。
11/06/02 スピンボタンがDisable 表示になってしまう件を修正。
11/07/22 OnChangeRange() を追加。
14/12/05 ReadOnlyでもホイールで数値が変更できる件を修正。
15/04/26 '-' 入力を改善。
19/04/11 OnEditEnd()で変更もないのに文字列を設定していたせいで、 キルフォーカス時にEN_CHANGEが出ていた不具合を修正。
19/06/17 GetValue() 時に GetText() を使わないように対応。

TnbMfcEditValue.h75 行目に定義があります。

型定義メンバ詳解

◆ TYPE

typedef TYP TYPE

型定義

TnbMfcEditValue.h80 行目に定義があります。

構築子と解体子

◆ CEditValueT()

CEditValueT ( void  )

コンストラクタ

TnbMfcEditValue.h83 行目に定義があります。

◆ ~CEditValueT()

virtual ~CEditValueT ( void  )
virtual

デストラクタ

TnbMfcEditValue.h90 行目に定義があります。

関数詳解

◆ AddSpinButton()

void AddSpinButton ( int  dummy = 0)

[設定] スピンボタン追加

引数
dummyDummy。省略可能。

TnbMfcEditValue.h206 行目に定義があります。

◆ AdjustValue()

virtual LONGLONG AdjustValue ( LONGLONG  l) const
protectedvirtual

[変換] 数値丸め.

覚え書き
内部用のメソッドです。
引数
l
戻り値
丸めた値

TnbMfcEditValue.h551 行目に定義があります。

◆ GetExStyle()

DWORD GetExStyle ( void  ) const
inherited

[取得] ウィンドウ拡張スタイル取得.

本インスタンスが管理しているウィンドウの拡張スタイルを返します。

戻り値
ウィンドウスタイル。 WS_EX_LEFT や WS_EX_TOPMOST などのシンボルが論理和(or)されている。

◆ GetRange()

void GetRange ( TYPE _xMin,
TYPE _xMax,
TYPE _step 
)

[取得] 範囲取得

引数
_xMin最小値
_xMax最大値
_stepステップ数。

TnbMfcEditValue.h156 行目に定義があります。

◆ GetSafeHwnd()

HWND GetSafeHwnd ( void  ) const
inherited

[取得] ウィンドウハンドル取得.

本インスタンスが管理しているウィンドウのハンドルを返します。

戻り値
ウィンドウハンドル

◆ GetStyle()

DWORD GetStyle ( void  ) const
inherited

[取得] ウィンドウスタイル取得.

本インスタンスが管理しているウィンドウのスタイルを返します。

戻り値
ウィンドウスタイル。 WS_CHILD や WS_MINIMIZE などのシンボルが論理和(or)されている。

◆ GetText()

CString GetText ( void  ) const
inherited

[取得] 入力文字取得

戻り値
文字列

TnbMfcEditAscii.h82 行目に定義があります。

◆ GetValidChars()

CString GetValidChars ( void  ) const
inherited

[取得] 入力可能文字取得.

戻り値
入力可能文字

TnbMfcEditAscii.h122 行目に定義があります。

◆ GetValue() [1/2]

virtual bool GetValue ( TYPE _xValue) const
virtual

[取得] 値取得

引数
[out]_xValue設定されている値
戻り値
true値有り。
戻り値
false Empty。

CEditFloatT< POW >で再実装されています。

TnbMfcEditValue.h124 行目に定義があります。

◆ GetValue() [2/2]

TYPE GetValue ( void  ) const

[取得] 値取得

覚え書き
値がない場合、 TYPE() が返ります。
戻り値
値。

TnbMfcEditValue.h140 行目に定義があります。

◆ IsValidChar()

virtual bool IsValidChar ( UINT &  _nChar,
LONG &  _lFlags,
const CString &  strNowText 
)
protectedvirtual

[確認] 入力許可チェック

引数
[in,out]_nCharWM_CHAR の WPARAM
[in,out]_lFlagsWM_CHAR の LPARAM
[in]strNowText入力済みの文字列
戻り値
true入力を認める。
false入力を認めない。

CEditAsciiを再実装しています。

CEditFloatT< POW >で再実装されています。

TnbMfcEditValue.h437 行目に定義があります。

◆ ModifyStyle()

BOOL ModifyStyle ( DWORD  dwRemove,
DWORD  dwAdd,
UINT  nFlags = 0 
)
inherited

[設定] ウィンドウスタイル変更.

引数
dwRemove除去するスタイルを指定する。
dwAdd追加するスタイルを指定する。
nFlagsSetWindowPos() に渡すフラグ。0なら SetWindowPos() を呼びません。
戻り値
TRUE成功.
FALSE失敗.

◆ ModifyStyleEx()

BOOL ModifyStyleEx ( DWORD  dwRemove,
DWORD  dwAdd,
UINT  nFlags = 0 
)
inherited

[設定] ウィンドウ拡張スタイル変更.

引数
dwRemove除去する拡張スタイルを指定する。
dwAdd追加する拡張スタイルを指定する。
nFlagsSetWindowPos() に渡すフラグ。0なら SetWindowPos() を呼びません。
戻り値
TRUE成功.
FALSE失敗.

◆ OnChangeRange()

virtual void OnChangeRange ( void  )
protectedvirtual

[通知] レンジが変わったときにコール

TnbMfcEditValue.h508 行目に定義があります。

◆ OnChildNotify()

virtual BOOL OnChildNotify ( UINT  message,
WPARAM  wParam,
LPARAM  lParam,
LRESULT *  _pResult 
)
protectedvirtual

[通知] for notifications from parent

覚え書き
CWndのメソッドをオーバーライドしています。 メッセージ受信したらコールされます。 WM_NOTIFYの処理をフックしています。
引数
[in]messageメッセージ
[in]wParamWPARAM
[in]lParamLPARAM
[out]_pResultリザルト
戻り値
TRUE処理済。
FALSE未処理。

CEditAsciiを再実装しています。

TnbMfcEditValue.h274 行目に定義があります。

◆ OnEditEnd()

virtual void OnEditEnd ( void  )
protectedvirtual

[通知] フォーカスを失った時にコール

CEditAsciiを再実装しています。

CEditFloatT< POW >で再実装されています。

TnbMfcEditValue.h486 行目に定義があります。

◆ OnEditStart()

virtual void OnEditStart ( void  )
protectedvirtualinherited

[通知] フォーカスを得た時に通知

覚え書き
継承して本メソッドに処理を記述します。 本関数内で GetText() で現在の文字を取得し SetText() を使い再設定することが可能。

TnbMfcEditAscii.h357 行目に定義があります。

◆ OnInputInvalidChar()

virtual void OnInputInvalidChar ( void  )
protectedvirtualinherited

[通知] 禁止文字入力発生時に通知.

TnbMfcEditAscii.h338 行目に定義があります。

◆ OnNotify()

virtual BOOL OnNotify ( WPARAM  wParam,
LPARAM  lParam,
LRESULT *  _pResult 
)
protectedvirtual

[通知] for notifications from parent

覚え書き
CWndのメソッドをオーバーライドしています。 メッセージ受信したらコールされます。 WM_NOTIFYの処理をフックしています。
引数
[in]wParamWPARAM
[in]lParamLPARAM
[out]_pResultリザルト
戻り値
TRUE処理済。
FALSE未処理。

TnbMfcEditValue.h245 行目に定義があります。

◆ OnPasteChar()

virtual void OnPasteChar ( void  )
protectedvirtualinherited

[通知] ペーストされた時

TnbMfcEditAscii.h267 行目に定義があります。

◆ OnUpdateChar()

virtual void OnUpdateChar ( void  )
protectedvirtual

[通知] 入力時にコール

覚え書き
範囲チェックし、超えていたら丸めちゃう

CEditAsciiを再実装しています。

CEditFloatT< POW >で再実装されています。

TnbMfcEditValue.h463 行目に定義があります。

◆ PreSubclassWindow()

virtual void PreSubclassWindow ( void  )
protectedvirtualinherited

[通知] subclassing/unsubclassing functions.

サブクラス化する時コールされます。

覚え書き
CWndのメソッドをオーバーライドしています。
IMEを無効化しています。

TnbMfcEditAscii.h146 行目に定義があります。

◆ ReferSpinButton()

CSpinButtonCtrl & ReferSpinButton ( void  )
protected

[参照] スピンボタン参照.

戻り値
スピンボタン.

< スピンコントロール

TnbMfcEditValue.h581 行目に定義があります。

◆ SetCutPasteMode()

void SetCutPasteMode ( bool  r)
inherited

[設定] カットペーストモード.

引数
rtrue ならペースト、カットを許可します。 false なら許可しません。 コンストラクタ時、「許可」になっています。

TnbMfcEditAscii.h133 行目に定義があります。

◆ SetPlace()

void SetPlace ( int  ii)

[設定] ゼロパディング桁数設定

引数
iiゼロパディング桁数

TnbMfcEditValue.h197 行目に定義があります。

◆ SetRange()

virtual void SetRange ( TYPE  xMin,
TYPE  xMax,
TYPE  step = 0 
)
virtual

[設定] 範囲指定

引数
xMin最小値
xMax最大値
stepステップ数。省略すると1になります。

CEditFloatT< POW >で再実装されています。

TnbMfcEditValue.h169 行目に定義があります。

◆ SetText()

void SetText ( LPCTSTR  lpszText,
bool  boIsNomoveSel = false 
)
inherited

[設定] 文字列設定

引数
lpszText設定する文字
boIsNomoveSeltrueならSELの位置を変えないようにする。 falseならSELは初期化される(普通にSetWindowTextした時と同じ動作)。

TnbMfcEditAscii.h95 行目に定義があります。

◆ SetValidChars()

void SetValidChars ( LPCTSTR  chars)
inherited

[設定] 入力可能文字設定.

引数
chars入力可能文字

TnbMfcEditAscii.h113 行目に定義があります。

◆ SetValue()

virtual void SetValue ( TYPE  xValue)
virtual

[設定] 値設定

引数
xValue設定する値

CEditFloatT< POW >で再実装されています。

TnbMfcEditValue.h113 行目に定義があります。

◆ SetWindowPos()

BOOL SetWindowPos ( const CWnd pWndInsertAfter,
int  x,
int  y,
int  cx,
int  cy,
UINT  nFlags 
)
inherited

[設定] ウィンドウサイズポジション設定.

子ウィンドウ、ポップアップ ウィンドウ、およびトップレベル ウィンドウのサイズ、位置、および Z オーダーを変更します。

引数
pWndInsertAfterZ オーダーでこの CWnd オブジェクトより前に配置される CWnd オブジェクトを識別します。このパラメータへは、 CWnd へのポインタか 次の値のいずれか 1 つを指定できます。
  • wndBottom ウィンドウを Z オーダーの一番下に置きます。この CWnd が最上位のウィンドウの場合、ウィンドウの最上位ステータスは失われます。 システムでは、このウィンドウをほかのすべてのウィンドウよりも下に置きます。
  • wndTop ウィンドウを Z オーダーの先頭に置きます。
  • wndTopMost ウィンドウを最上位でないすべてのウィンドウの上に置きます。 ウィンドウは、非アクティブになったときも、最上位の位置を保持します。
  • wndNoTopMost ウィンドウを最上位でないすべてのウィンドウの先頭に再配置します (つまり、一番手前のすべてのウィンドウの後ろに置きます)。 ウィンドウが既に非最上位ウィンドウとなっているときは、このフラグは無効です。
xウィンドウの新しい左辺の位置を指定します。
yウィンドウの新しい上辺の位置を指定します。
cxウィンドウの新しい幅を指定します。
cyウィンドウの新しい高さを指定します。
nFlagsサイズ変更オプションおよび位置指定オプションを指定します。このパラメータには、次の値を組み合わせて指定できます。
  • SWP_DRAWFRAME ウィンドウの周りにフレーム (ウィンドウ作成時に定義されます) を描画します。
  • SWP_FRAMECHANGED ウィンドウのサイズが変化されていない場合でも、ウィンドウに WM_NCCALCSIZE メッセージを送信します。このフラグが指定されていない場合、WM_NCCALCSIZE メッセージはウィンドウのサイズが実際に変化しているときにだけ送られます。
  • SWP_HIDEWINDOW ウィンドウを非表示にします。
  • SWP_NOACTIVATE ウィンドウをアクティブにしません。このフラグが設定されていないと、ウィンドウはアクティブになり、最上位または非最上位のウィンドウ グループのいずれかの先頭に移動されます (パラメータ pWndInsertAfter の設定に依存します)。
  • SWP_NOCOPYBITS クライアント領域の内容全体を破棄します。このフラグが指定されていない場合、クライアント領域の有効な内容はすべて保存されます。保存された内容は、ウィンドウのサイズや位置が再び変更されたときにクライアント領域に復元されます。
  • SWP_NOMOVE 現在位置を保持します (x パラメータと y パラメータを無視します)。
  • SWP_NOOWNERZORDER オーナー ウィンドウの Z オーダーの位置を変更しません。
  • SWP_NOREDRAW 変更があっても再描画しません。このフラグが設定されていると、どのような種類の再描画も行われません。このことは、クライアント領域、非クライアント領域 (タイトルやスクロール バーを含みます)、ウィンドウが移動したことにより覆われない親ウィンドウのあらゆる部分に適用されます。このフラグが設定されているときは、アプリケーションは再描画が必要なウィンドウや親ウィンドウのあらゆる部分を明示的に無効領域または再描画する必要があります。
  • SWP_NOREPOSITION SWP_NOOWNERZORDER と同じです。
  • SWP_NOSENDCHANGING ウィンドウが WM_WINDOWPOSCHANGING メッセージを受信しないようにします。
  • SWP_NOSIZE 現在のサイズを保持します (cx パラメータと cy パラメータを無視します)。
  • SWP_NOZORDER 現在の順序を保持します (pWndInsertAfter を無視します)。
  • SWP_SHOWWINDOW ウィンドウを表示します。
戻り値
TRUE成功.
FALSE失敗.

◆ ShowWindow()

BOOL ShowWindow ( int  nCmdShow)
inherited

[設定] ウィンドウ表示状態.

引数
nCmdShowCWnd を表示する方法を指定します。次の値のいずれかになります。
  • SW_HIDE このウィンドウを非表示にし、他のウィンドウをアクティブにします。
  • SW_MINIMIZE ウィンドウを最小化し、システムのリストのトップレベル ウィンドウをアクティブにします。
  • SW_RESTORE ウィンドウをアクティブにし、表示します。ウィンドウが最小化または最大化されている場合は、Windows によって元のサイズと位置に戻されます。
  • SW_SHOW ウィンドウをアクティブにし、現在のサイズと位置で表示します。
  • SW_SHOWMAXIMIZED ウィンドウをアクティブにし、最大表示します。
  • SW_SHOWMINIMIZED ウィンドウをアクティブにし、最小化して表示します。
  • SW_SHOWMINNOACTIVE ウィンドウを最小化して表示します。現在アクティブなウィンドウはアクティブなまま表示します。
  • SW_SHOWNA 現在の状態でウィンドウを表示します。現在アクティブなウィンドウはアクティブなまま表示します。
  • SW_SHOWNOACTIVATE ウィンドウを直前のサイズと位置で表示します。現在アクティブなウィンドウはアクティブなまま表示します。
  • SW_SHOWNORMAL ウィンドウをアクティブにし、表示します。ウィンドウが最小化または最大化されている場合は、Windows によって元のサイズと位置に戻されます。
戻り値
TRUE成功.
FALSE失敗.

◆ ToInteger()

virtual LONGLONG ToInteger ( LPCTSTR  s) const
protectedvirtual

[変換] 文字列から数値作成.

覚え書き
内部用のメソッドです。
引数
s文字列
戻り値
数値

CEditFloatT< POW >, CEditHexValueT< CEditByte, 2 >, CEditHexValueT< CEditDword, 8 >, CEditHexValueT< CEditWord, 4 >で再実装されています。

TnbMfcEditValue.h540 行目に定義があります。

◆ ToString()

virtual CString ToString ( LONGLONG  ll) const
protectedvirtual

[変換] 数値から文字列作成.

覚え書き
内部用のメソッドです。
引数
ll数値
戻り値
文字列

CEditFloatT< POW >, CEditHexValueT< CEditByte, 2 >, CEditHexValueT< CEditDword, 8 >, CEditHexValueT< CEditWord, 4 >で再実装されています。

TnbMfcEditValue.h518 行目に定義があります。

◆ ValueToString()

virtual CString ValueToString ( TYPE  xValue) const
virtual

[変換] 値文字列化

引数
xValue変換する値
戻り値
変換後の文字列

CEditFloatT< POW >で再実装されています。

TnbMfcEditValue.h103 行目に定義があります。

◆ WindowProc()

virtual LRESULT WindowProc ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
protectedvirtual

[通知] for processing Windows messages.

メッセージ受信したらコールされます。

覚え書き
CWndのメソッドをオーバーライドしています。
引数
messageメッセージ
wParamWPARAM
lParamLPARAM
戻り値
リザルト。

CEditAsciiを再実装しています。

TnbMfcEditValue.h315 行目に定義があります。

メンバ詳解

◆ m_iZeroPlace

int m_iZeroPlace
protected

ゼロパディング

TnbMfcEditValue.h588 行目に定義があります。

◆ m_lastText

CString m_lastText
protected

最終文字列

TnbMfcEditValue.h590 行目に定義があります。

◆ m_step

int m_step
protected

ステップ数

TnbMfcEditValue.h589 行目に定義があります。

◆ m_xMax

LONGLONG m_xMax
protected

入力可能最大値

TnbMfcEditValue.h587 行目に定義があります。

◆ m_xMin

LONGLONG m_xMin
protected

入力可能最小値

TnbMfcEditValue.h586 行目に定義があります。