begin process at 2012 05 30 19:53:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

[win 32] DLL - Problème de coloration d'une sélection seule dans un RichEdit


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[win 32] DLL - Problème de coloration d'une sélection seule dans un RichEdit

mardi 24 février 2009 à 01:15:36 | [win 32] DLL - Problème de coloration d'une sélection seule dans un RichEdit

uaip

Bonsoir à tous,

J'ai une petite question désespérée, avant d'aller dormir.
Je code une DLL qui est censée faire un hook sur un éditeur de script (mIRC) et colorer le RichEdit. Tout se passe bien, or lorsque je colore tout le texte (SCF_ALL) c'est okay, mais quand je ne colore qu'une sélection (SCF_SELECTION), le SendMessage(); me retourne 0.
Je ne peux pas donner tout le code de la DLL, mais voici la fonction qui parcourt toutes les lignes du RichEdit, et colore une ligne en rouge si le mot "alias" est contenu, sinon en bleu :

void Color_All() {
    //Masquage des sélections
    SendMessage(edit,EM_HIDESELECTION,1,0);
    //Début
    CHARRANGE select,curSelect;
    CHARFORMAT cFormat;
    ZeroMemory(&cFormat,sizeof(CHARFORMAT));
    cFormat.cbSize=sizeof(CHARFORMAT);
    cFormat.dwMask=CFM_COLOR|CFM_BOLD;
    cFormat.dwEffects=0;//CFE_BOLD;
    //Récupération de la sélection
    SendMessage(edit,EM_EXGETSEL,0,(LPARAM)&curSelect);
    //Boucle ligne par ligne
    int lines=SendMessage(edit,EM_GETLINECOUNT,0,0);
    for(int line=0;line < lines;line++) {
        //Récupération du texte de la ligne
        int place=SendMessage(edit,EM_LINEINDEX,line,0);
        char buffa[9999]="9999";
        SendMessage(edit,EM_GETLINE,line,(LPARAM)buffa);
        select.cpMin=place;
        place+=strlen(buffa);
        select.cpMax=place;
        SendMessage(edit,EM_EXSETSEL,0,(LPARAM)&select);
        //Alias
        if (strstr(buffa,"alias") != NULL) cFormat.crTextColor=RGB(255,0,0);
        //Autre
        else cFormat.crTextColor=RGB(100,100,250);
        SendMessage(edit,EM_SETCHARFORMAT,SCF_ALL,(LPARAM)&cFormat);
    }
    //Remise en place de la sélection courante
    SendMessage(edit,EM_EXSETSEL,0,(LPARAM)&curSelect);
    //Réaffichage des sélections
    SendMessage(edit,EM_HIDESELECTION,0,0);
}


C'est le SendMessage(); en rouge qui pose problème, il fonctionne bien avec SCF_ALL mais pas avec SCF_SELECTION.
Je note que chaque ligne est bien sélectionnée, et ce morceau de code fonctionne très bien dans mes autres programmes.
Mon code étant donc (selon moi) correct, je me suis dit que peut-être le RichEdit avait été paramétré avec une option incompatible avec ce que j'essaye de faire.
Je voulais simplement avoir vos idées concernant ce problème, moi ayant mal au crane
Merci d'avance.

Cordialement, uaip.
samedi 7 mars 2009 à 11:51:47 | Re : [win 32] DLL - Problème de coloration d'une sélection seule dans un RichEdit

uaip

Réponse acceptée !
Trouvé.

Cordialement, uaip.


Cette discussion est classée dans : sendmessage, edit, sélection, em, cformat


Répondre à ce message

Sujets en rapport avec ce message

couleur de texte avec un richedit [ par minet03 ] coucou, voilà j'ai un edit et je voudrais changer la couleur du texte, seulement ma fonction n'a pas l'air de marché, et j'ai pourtant fait tout ce qu combobox [ par fignon ] Bonjour à tous,j'ai un petit souci avec les combobox, dont je suis sûr vous n'aurez aucun mal à résoudre.Je déclare ma combobox comme suit :edit_port_ prendre le text d'une sélection [ par deck_bsd ] Yop à tous,Voila , ceci est p-e une question stupide mais j'ai chercher après un message qui me permet de récupérer le text d'une selection faite avec pourquoi le result de EM_FINDWORDBREAK au dessus de 65500 repasse a 0 [ par youpiyoyo ] j'ai ceciWORD hLine=SendMessage( hWnd,EM_CHARFROMPOS,0,(LPARAM)&ptlCursor);DWORD nWordStart = SendMessage(hWnd, EM_FINDWORDBREAK, WB_LEFT, hLine);DWOR Erreur : Importer un bitmap dans une toolbar [win32] [ par julien_boss ] Bonjour, mon probleme est que les icones de ma barre d'icones sont toutes noires ... :/Voici le code qui crée la toolbar :void InitToolbar(HWND hwnd){ créer un edit en opengl [ par sebastienmz ] bonjourj'aimerais pourvoire saisire du texte en opengl comment faire ps je me base sur ce soft http://www.cppfrance.com/codes/CPLUSPLUS-DEVCPP-EXPLORA Evenement touche presse sur edit [ par NairodDorian ] Bonjour,Je rencontre un petit blocage avec l'API Win32.BOOL CALLBACK AppDlg(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam){switch ( Combox Box [ par IH2MCBETA ] Bonjour, je désir remplir une combo box (listes déroulantes) avec une variable que j'ai créé.Quand dans une edit control je met 6 je veu que dans ma c listes chainées avec combobox [ par IH2MCBETA ] Bonjour , j'ai une interface qui se compose d'edit boxes et de combo box.Quand je change ma valeur dans mon combo je veu que ça sauvegarde (sous forme texte inversé lors de la sélection [ par hdaniel ] Bonjour, J'utilise une SDI RichEditView j' écris un texte dans ma SDI que je rafraichis périodiquement. pour effacer le texte avant de le rafraichi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales