Bonjour,
Pour écrire le caractère 'A' dans un contrôle CEdit, j'utilise le code :
pEdit->PostMessage(WM_CHAR,'A');
Mon problème est que ce 'A' s'affiche en tête.
Or je voudrais qu'il s'insère à la position du curseur.
Comment faire ?
Merci d'avance
Bonjour,
Pour écrire le caractère 'A' dans un contrôle CEdit, j'utilise le code :
pEdit->PostMessage(WM_CHAR,'A');
Mon problème est que ce 'A' s'affiche en tête.
Or je voudrais qu'il s'insère à la position du curseur.
Comment faire ?
Merci d'avance
Bonjour,
Si j'ai bien compris ta question, ceci devrais fonctionner:
Hope it helps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CString strBuffer = pEdit->GetWindowText(); //récupère le contenu du CEdit pEdit->SetWindowText(strBuffer+"A"); //insère "A" à la fin
salut,
eventuellement avec un pEdit->SetSel(0,0) avant le postmessage.
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Oui, tu as bien compris la question, sauf que je veux écire la caractère à la position du curseur du CEdit.
moué bizarre .
que renvoie GetSel (nStartChar et nEndChar )?
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Malheureusement, GetSel ne me renvoie rien d'intéressant :
j'obtiens 0 et le nombre de caractères de la chaîne du CEdit.
Je n'obtiens pas la position du curseur (que j'aimerai bien récupérer).
C'est peut-être parce que je poste à partir d'une fonction OnButton() appelée par un clic sur un bouton ??
Donc, la question est : comment récupérer DebutSel et FinSel ?
Arf, je ne suis pas sûr d'avoir biezn comprisEnvoyé par Hepm
Pourrais-tu donner un exemple?
![]()
C'est vrai que je n'ai pas été très clair! Bon, alors j'explique tout :Envoyé par r0d
J'ai une CDialog comportant un CComboBox et des boutons qui doivent servir de touches (genre calculatrice).
Quand j'appuie sur Button0, ça lance OnButton0() que j'avais initialement écrite ainsi :
Mon problème, c'est que j'obtiens toujours Debut = 0 et Fin = Nombre de caractères de la chaîne.
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 void CSaisieExpression::OnButton0() //Insère un '0' dans la chaîne du ComboBox { CComboBox* pEdit = (CComboBox*) GetDlgItem(IDC_COMBO1); pEdit->SetFocus(); DWORD Selection = pEdit->GetEditSel(); int Debut = Selection & 0xFFFF;//partie basse de Selection int Fin = (Selection >> 16) & 0xFFFF;//partie haute de Selection CString Ch; pEdit->GetWindowText(Ch); Ch.Delete(Debut, Fin-Debut);//suppression partie sélectionnée Ch.Insert(Debut, '0'); pEdit->SetWindowText(Ch); }
Il me semble que le SetFocus est inutile. Que se passe-t-il si tu l'enlève?
Partager