ユーザが入力したプロパティ編集ボックス(CMFCPropertyGridCtrl
)の各文字を検証して更新しようとしました。MSDNを検索しましたPushChar()
などの機能を見つけてください。しかし、それらの方法は私の問題を解決しませんでした。基本的に私はCMFCPropertyGridCtrl
編集ボックスのCEdit::OnChar()
機能を実装する必要があります。あなたは、プロパティのコンストラクタにlpszEditMask
またはlpszEditTemplate
またはlpszValidChars
パラメータを提供する場合
MFCプロパティグリッドコントロール(CMFCPropertyGridCtrl)でユーザが入力した各文字をバリデートする方法
答えて
これについてサンプルコードを提供します。 CustomProperties.h
において、クラスフォームCMFCPropertyGridProperty
class CMyEditProp : public CMFCPropertyGridProperty
{
public:
CMyEditProp (const CString& strName, const CString& strValue, LPCTSTR lpszDescr = NULL, DWORD dwData = 0);
protected:
virtual CWnd* CreateInPlaceEdit(CRect rectEdit, BOOL& bDefaultFormat);
virtual CString FormatProperty();
};
もCEdit
からクラスを派生し、それにOnChar()
方法を実装導出します。
class MyEdit:public CEdit
{
public:
void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(!IsCharAlpha(nChar))
return;
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
DECLARE_MESSAGE_MAP()
};
CustomProperties.cpp
ヘッダーファイルで宣言されたすべてのメソッドを実装します。
CMyEditProp ::CPasswordProp(const CString& strName, const CString& strValue, LPCTSTR lpszDescr, DWORD dwData)
: CMFCPropertyGridProperty(strName, (LPCTSTR) strValue, lpszDescr, dwData)
{
}
CWnd* CMyEditProp ::CreateInPlaceEdit(CRect rectEdit, BOOL& bDefaultFormat)
{
MyEdit pWndEdit;
DWORD dwStyle = WS_VISIBLE | WS_CHILD | ES_AUTOHSCROLL ;
if (!m_bEnabled || !m_bAllowEdit)
{
dwStyle |= ES_READONLY;
}
pWndEdit.Create(dwStyle, rectEdit, m_pWndList, AFX_PROPLIST_ID_INPLACE);
bDefaultFormat = TRUE;
return &pWndEdit;
}
BEGIN_MESSAGE_MAP(MyEdit,CEdit)
ON_WM_CHAR()
END_MESSAGE_MAP()
これは編集コントロールと同じように機能し、ユーザーが入力したすべての文字を検証できます。
は、そのプロパティの編集コントロールではなく、通常のCEdit
のCMFCMaskedEdit
になります。 CMFCPropertyGridProperty::CreateInPlaceEdit
の実装について私が言ったことを確認できます。私はあなたの場所にあった場合
だから、私は、入力にマスキングが、あなたがlpsz...
引数を指定するとき、それがどのように動作するかを確認するためにCMFCPropertyGridProperty::CreateInPlaceEdit
にブレークポイントを置く方法を知っているCMFCMaskedEdit
ドキュメントを読んでいましたし、その後にここに戻って来るだろう物事がどのようになったかを報告するページ。
CMFCPropertyGridProperty :: CreateInPlaceEditが正常に動作しています –
' CMFCPropertyGridProperty: :CreateInPlaceEdit'は仮想関数です。あなたが作成した派生クラスで上書きしましたか? – sergiol
- 1. ユーザが入力した句をPythonで入力する方法
- 2. CMFCPropertyGridCtrlクラスを使用してMFCで3列のグリッドビューを作成する方法?
- 3. ユーザが空の文字列を入力した場合に入力と終了を促す方法は?
- 4. ユーザーが入力した文字列を分割する方法
- 5. 引数でユーザが入力した文字列を分割する
- 6. Javaのベクトルを使用したユーザ入力文字列
- 7. 1文字のユーザ入力とfgets
- 8. ユーザ入力から分割文字列
- 9. ユーザ名、パスワード、db名をバッチファイルのユーザ入力で入力する方法
- 10. SQL文のパラメータとしてユーザ入力を与える方法
- 11. 文字列に必要な文字を入力する方法
- 12. ユーザが十進数区切り文字を入力する前にキーボードから小数点区切り文字を入力する方法
- 13. ユーザが入力したブール検索文字列をmySQLに変換
- 14. ユーザ入力に文字列が含まれているとPython
- 15. ユーザは、次のようなユーザ入力から文字
- 16. ユーザーが入力した文字列を検証する方法は? (Java)
- 17. ユーザ入力文字列を確認する
- 18. 開始文字を入力してセルにデータを入力する方法
- 19. テキスト文字列のユーザ入力から特殊文字をスキップし、Javascriptの
- 20. ユーザがセンチネル値を入力した後にループを終了する方法は?
- 21. ユーザ入力の日付文字列をdatetimeとして保存
- 22. ncursesメニュー - ユーザ入力の文字列を表示しません
- 23. ロボットを介してUnicode文字を入力する方法
- 24. 文字列を入力してコンテナをソートする方法は?
- 25. 各文字の別の入力フィールドの文字数を制限する
- 26. ユーザーが入力したフレーズから特定の文字を入力する方法
- 27. ユーザの文字数を制限するJavaの文字列でスキャナの文字を入力
- 28. ユーザを渡す方法別のアクティビティのTextviewでEditText入力を入力する
- 29. 同じ文で文字入力と浮動入力を行う方法は?
- 30. (Arraylist)ユーザ定義の文字列入力時にクラッシュする
PreTranslateMessageをオーバーライドしてWM_CHARのメッセージを処理することはできませんか?ドキュメントによると、それはPTMメソッドをサポートしています:https://msdn.microsoft.com/en-us/library/bb983759.aspx –
'CEdit :: OnChar()'はあなたが探しているものでも、 'CMFCPropertyGridCtrl'に相当します。両方とも、キーボード以外のソースからの入力(例えば、マウスペースト操作)を説明することができない。変更通知に応答する必要があります。 – IInspectable
@IInspectable:自分自身の 'CMFCPropertyGridCtrl :: PreTranslateMessage'によってオーバーライドされているので、キーボードから来てもOnCharではできないと思います。 – sergiol