Contrôle EDIT retour à la ligne forcé [Résolu]

Signaler
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009
-
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009
-
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

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
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.
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009

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
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009

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.
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Faut que tu crées le bouton envoyer avec style BS_DEFPUSHBUTTON.
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009

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!
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
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.
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009

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