Bonjour,
Je souhaiterais limiter la saisie des caractères dans ma combobox, comme pour un CEdit. Je n'utilise pas directement le CEdit mais une combo car suivant le choix de l'utilisateur je lui permet une saisie ou bien je lui propose une liste de choix sans possibilité de saisie.Pour cela je lui donne la propriété DROPDOWN et je suis la même méthode que pour une CEdit : je crée une classe fille et je capture le message WM_CHAR.
J'ai vérifié au débug je ne passe pas dans la fonction, pour tant la classe de base de la comboxBox est une Cwnd qui bien sur traite ce message.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 ------------- Dans le header class CComboBoxExt : public CComboBox { public: CComboBoxExt() ; protected: //{{AFX_MSG(CComboBoxExt) afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) ; //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ------------- Dans le cpp CComboBoxExt::CComboBoxExt():CComboBox(){} BEGIN_MESSAGE_MAP(CComboBoxExt, CWnd) // Essayé aussi avec CComboBox //{{AFX_MSG_MAP(CComboBoxExt) ON_WM_CHAR() //}}AFX_MSG_MAP END_MESSAGE_MAP() void CComboBoxExt::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { if( (nChar < '0' || nChar>'9') && (nChar < 'a' || nChar>'z') && (nChar < 'A' || nChar>'Z') && (nChar!=8) //backspace // (nChar!=32) ) //space ) return ; CComboBox::OnChar(nChar, nRepCnt, nFlags) ; }
Notes au modérateur : Sinon j'avais quelques remarques à ajouter pour la faq Visual C++, est-ce que c'est possible ?
Merci.
Partager