Contrôle EDIT retour à la ligne forcé

Résolu
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009 - 23 oct. 2007 à 18:54
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009 - 25 oct. 2007 à 19:18
Bonjour,
J'ai créer une fenêtre (un peu comme msn) et j'ai créer un EDIT :

hEdit[0]=CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL | ES_AUTOVSCROLL | WS_THICKFRAME,
             0, 250, 300, 60,fenetrePrincipale,NULL,instance,NULL);

Dans mon EDIT, quand je tape du texte et que je fait Entrée, mon curseur revient à la ligne. Je voudrais que sa envoie le message avec ID_B_ENVOYER qui est à 1. J'aimerais ne pas changer les options de la création de mon EDIT.
Est-ce possible ?

De plus, j'aimerais changer la couleur de fond pour mon EDIT.
J'ai mis ce code :

        case WM_CTLCOLOREDIT:
            if((HWND)lParam == hEdit[0])
            {
                SetTextColor((HDC)wParam, RGB(213, 213, 222));
                SetBkColor((HDC)wParam, RGB(91, 33, 61));
                return (LRESULT)hbEdit;
            }
         else
            return DefWindowProc(fenetrePrincipale, message, wParam, lParam);
        return FALSE;

Le problème, sa ne change que la première ligne de couleur :S.
Merci de votre aide,
Damien

7 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
23 oct. 2007 à 20:00
Pour ton 1er problème faut que tu vires le style ES_WANTRETURN => quand tu fais entrée il appelera automatiquement le push boutton par défaut de la fenêtre. Tu peux toujours ajouter un CR dans le code après pour aller effectivement à la ligne dans l'edit.

Pour ton 2ème problème, si tu ne trouves pas mieux, tu peux sous-classer le contrôle et traiter le message WM_ERASEBKGND.
3
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009
25 oct. 2007 à 19:18
sa y est, j'ai trouvé ! J'ai rajouté des accelerateurs dans mon .rc :
CLAVIER ACCELERATORS
BEGIN
VK_RETURN, ID_B_ENVOYER, VIRTKEY
END

A+
dam
3
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009
23 oct. 2007 à 22:55
merci de ta réponse,
mon 2ièm problème est réglé.
Pour le premier, j'ai enlever ES_WANTRETURN et quand je fais Entrée, sa donne rien. Déjà sa va pas à la ligne c'est bien mais sa n'envoie pas le message. Pourtant le bouton Envoyer à l'ID 1.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
24 oct. 2007 à 20:56
Faut que tu crées le bouton envoyer avec style BS_DEFPUSHBUTTON.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009
24 oct. 2007 à 22:48
Mon bouton envoyer a déjà ce style.
Quand je crée un Edit avec une seule ligne, sa marche mais dès qu'il y a plusieurs lignes sa ne marche pas l'action du bouton sur Entrée !
Voici le code du bouton envoyer :

boutons[0] = CreateWindow("BUTTON", "Envoyer", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 300, 250, 94, 30, fenetrePrincipale, (HMENU)ID_B_ENVOYER, instance, NULL);

Le code de mon Edit est tout au début.
Merci de votre aide!
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
25 oct. 2007 à 17:55
Ah je crois que j'ai compris c'est à cause de ES_AUTOVSCROLL; si tu veux vraiment l'appel du bouton pas le choix faut le virer.
0
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009
25 oct. 2007 à 18:52
Si j'enlève ES_AUTOVSCROLL sa ne marche pas mieux. Par contre si j'enlève ES_MULTILINE, ma touche Entrée actionne le bouton Envoyer.
Mais je voudrais que mon je tape du texte dans mon edit, que sa aille à la ligne. Alors qu'en enlevant ES_MULTILINE, je ne peux écrire qu'une seule ligne.

Je sais qu'il y a une solution car DDpop de Dando Damien :
http://damien09.programmes.site.voila.fr/index.html
marche très bien. Par contre je ne vois pas ce qu'il a de plus dans son programme pour que sa fonctionne !
Si vous avez des idées...
Merci
0
Rejoignez-nous