ユーザが入力したプロパティ編集ボックス(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. ユーザーが入力した文字列を分割する方法
- 7. ユーザが入力として入力したときを検出する方法
- 8. 引数でユーザが入力した文字列を分割する
- 9. ユーザが入力したデータをテキストファイルに保存する方法
- 10. 各文字入力で入力を送信
- 11. Javaのベクトルを使用したユーザ入力文字列
- 12. ユーザ入力から分割文字列
- 13. 1文字のユーザ入力とfgets
- 14. ユーザ名、パスワード、db名をバッチファイルのユーザ入力で入力する方法
- 15. SQL文のパラメータとしてユーザ入力を与える方法
- 16. ユーザーが小文字で入力しても大文字で入力する方法は?
- 17. アルファベットの最初の文字を入力から探し出し、入力した文字を数える方法
- 18. LC-3 - 入力文字を保存して文字列の後に入力と出力の両方で入力文字を印刷する方法は?
- 19. ユーザ入力の数字だけを許可する方法
- 20. ユーザ名を入力する方法
- 21. 文字列に必要な文字を入力する方法
- 22. EditTextで文字が入力されたときのトースト方法
- 23. PHPアクションメソッド:ユーザ入力をユーザ入力+必須拡張にリダイレクトする方法は?
- 24. ユーザが十進数区切り文字を入力する前にキーボードから小数点区切り文字を入力する方法
- 25. DataGripで文字を繰り返し入力する方法は?
- 26. ユーザが入力したブール検索文字列をmySQLに変換
- 27. ユーザ入力に文字列が含まれているとPython
- 28. ユーザPHPの入力をMySQLに入力する方法
- 29. ユーザが入力した後に入力プロンプトに追加する
- 30. ユーザは、次のようなユーザ入力から文字
PreTranslateMessageをオーバーライドしてWM_CHARのメッセージを処理することはできませんか?ドキュメントによると、それはPTMメソッドをサポートしています:https://msdn.microsoft.com/en-us/library/bb983759.aspx –
'CEdit :: OnChar()'はあなたが探しているものでも、 'CMFCPropertyGridCtrl'に相当します。両方とも、キーボード以外のソースからの入力(例えば、マウスペースト操作)を説明することができない。変更通知に応答する必要があります。 – IInspectable
@IInspectable:自分自身の 'CMFCPropertyGridCtrl :: PreTranslateMessage'によってオーバーライドされているので、キーボードから来てもOnCharではできないと思います。 – sergiol