IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Richeditctrl - problème de saisie clavier


Sujet :

MFC

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Richeditctrl - problème de saisie clavier
    Bonjour à tous,

    Je viens de m'inscrire sur ce forum et fais appel au spécialistes MFC de ce forum en éspèrant y trouver une réponse à mon problème. J'ai cherché partout sur le forum et sur le net mais nul part je trouve la réponse souhaitée.

    En bref mon problème est le suivant :

    Je voudrais créer un contrôle CRichEditCtrl pour un dictionnaire Tibétain. La saisie du Tibétain se fait au moyen de syllabes romanisés comme par exemples 'nga', 'kha', ... qui représenterais un caractère unique dans une fonte Tibétaine.

    Donc quand on tape 'nga' il faudrais qu'il y aies un caractère qui s'affiche dans le contrôle CRichEditCtrl.

    Pourriez-vous m'aider, ou m'aiguiller vers une site qui explique correctement le fonctionnement du CRichEditCtrl ????

    D'avance merci,
    Steph

  2. #2
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut
    tu dois surement regarder du coté d'unicode en utilisant des chaines de caracteres unicode pour pouvoir afficher tes caracteres speciaux
    "La vie ne vaut rien, mais rien ne vaut la vie"

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Quel est ton problème exactement ? L'affichage des caractères ou l'analyse de la saisie pour ensuite afficher le caractère voulu ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Tout d'abords merci d'avoir répondu ...

    En faite mon problème est le suivant :

    J'ai réussis à dévier les entrées claviers d'un contrôle CRichEditCtrl en utilisant la fonction OnChar du contröle.

    Après je traite mon caractère par une fonction qui traduit mon caractère dans l'équivalent de la fonte tibétaine. Mais rien ne se passe quand je renvoi le nouveau nChar dans la fonction de la classe de base. Ce seras peut-être plus clair avec la partie de code suivante:

    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
     
    void CTibEditCtrl::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    	CHARFORMAT2 cf;
    	cf.cbSize = sizeof(CHARFORMAT2);
    	cf.dwMask = CFM_FACE | CFM_SIZE | CFM_COLOR | CFM_WEIGHT;
    	cf.crTextColor = RGB(0,0,255);
    	if(m_nMode == CCE_TIBETAN)
    	{
    		lstrcpy(cf.szFaceName, "TibetanMachine");
    		cf.yHeight = 700;
    		cf.dwEffects = CFE_DISABLED;
    		cf.wWeight = FW_NORMAL;
    	} else {
    		lstrcpy(cf.szFaceName, "Arial");
    		cf.yHeight = 200;
    		cf.dwEffects = CFE_DISABLED;
    		cf.wWeight = FW_NORMAL;
    	}
    	SetWordCharFormat(cf);
     
    	nChar = TranslateKey(nChar); // traitement du caractère
    	CRichEditCtrl::OnChar(nChar, nRepCnt, nFlags);
    }
    Voila voila j'pense avoir résumé le mieux possible mon problème ...

    merci et @++
    Steph

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut
    Comme il est dit dans le MSDN, pour la fonction CRichEditCtrl::SetWordCharFormat :
    Citation Envoyé par MSDN
    Call this function to set the character formatting attributes for the currently selected word in this CRichEditCtrl object.
    Je ne suis pas sûr que lorsque tu traites le OnChar, il y ait un caractère/mot sélectionné.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    La fonction CRichEditCtrl::SetWordCharFormat fait bien son job : s'il y a un caractère séléctionné elle en modifie le style de caractère et s'il n'y a rien de séléctionné il modifie tout caractère suivant ... tout ceci réponds parfaitement à mes attentes ...

    Mon problème est que j'arrive pas à injecter un nouveau code caractère dans la fonction OnChar de la classe de base ... j'arrive à récupèrer le caractère tapé mais dès que j'réinjecte sa version modifié, il est rejeté et l'ancienne valeur est affiché dans le contröle.

    Donc si par exemple la caractère saisi au clavier a le code '0061', ce code caractère doit être modifié afin de reflèter son équivalent en typo Tibétaine ce qui pourrais être le code '0078' par exemple. Dès que j'réinjecte '0078' comme valeur pour la fonction OnChar elle est rejetée et c'est la valeur d'origine qui est utilisée (0061).

    Steph

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2015, 18h09
  2. Réponses: 5
    Dernier message: 23/12/2010, 00h58
  3. Problème saisie clavier
    Par PP(Team) dans le forum C++
    Réponses: 2
    Dernier message: 05/04/2007, 11h56
  4. Problème d'écouteur clavier
    Par m@t dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 19/01/2005, 23h05
  5. Saisie clavier marche pas
    Par Dokho1000 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 11/03/2004, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo