begin process at 2012 05 29 10:39:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

Edit control et mouse over


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

Edit control et mouse over

mardi 27 février 2007 à 15:41:42 | Edit control et mouse over

youpiyoyo

je cherche a recuperer une chaine de caractères (ou un mot) dans une edit control ou rich edit peut importe lorsque je passe la souris dessus...

j'ai déjà sous classé mon edit control par prev_proc = SetWindowLongPtr(hDlist, GWLP_WNDPROC, (LONG)EditWindProc);
ou
hDlist pointe sur le HWND de l'edit control, ceci tant créer pour pouvoir capturer le mousemove.
bref j'arrive a ca:
Commentaire:
IDC_EDIT2 me permet de controler les lignes selectionner

LRESULT CALLBACK EditWindProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch (message)
    {

        case WM_MOUSEMOVE:
        {
            POINTS ptsCursor;
            int nCurrentLine=0;
            int nCharWidth = 0;
            int nLastLine=0;
            ptsCursor = MAKEPOINTS(lParam);
           
            nLastLine = SendMessage(hWnd,EM_GETLINECOUNT,0,0);
            /*hdc = GetDC(hWnd);
            GetCharWidth32(hdc, (UINT) wParam, (UINT) wParam, &nCharWidth);
            ReleaseDC(hWnd, hdc);*/

            nCurrentLine = min((int)(ptsCursor.y / dwLineHeight), nLastLine); //ou
dwLineHeight calculer dans WM_INITDIALOG  et est égal a tm.tmHeightou tm est un TEXTMETRIC...
           
           
            int pos = SendMessage(hWnd, EM_LINEINDEX, nCurrentLine, 0);
            pos = SendMessage(hWnd, EM_LINELENGTH, pos, 0);
            char * pmem;
            pmem = (char*) HeapAlloc(GetProcessHeap(), 0, pos + 1);
            *((WORD*) pmem) = pos;
            pos = SendMessage(hWnd, EM_GETLINE, nCurrentLine, (long) pmem);
            pmem[pos] = 0;
            SetDlgItemTextA (mainhwnd,IDC_EDIT2, pmem);

        return (0);
        }
        break;
    }

return CallWindowProc((WNDPROC)prev_proc, hWnd, message, wParam, lParam);

}


bref ca marche mais j'ai trois problemes:

le premier c que ca recupère que la ligne et je cherche a recup le mot, bon ca evidemment j'y suis pas encore mais déjà si je recupere la ligne je peut faire mes tests avec des boucles...

le deuxième c que mon min((int)(ptsCursor.y / dwLineHeight), nLastLine); ne fonctionne pas bienles première lignes fonctionnes mais a partir de la 5ème elle se décale, je pense parceque la taille de ma ligne ne correspond pas.

troisèmement lorque la scroll bar rentre en jeux, la evidement le x et le y du POINTS ne correspondent absolument plus aux index de lignes....


voila je galère pour le moment, je suis encore entrain de chercher, mais un coup de pousse m'aiderais bien

merci d'avance

youpi :)
mardi 27 février 2007 à 16:57:50 | Re : Edit control et mouse over

youpiyoyo

est-ce que un EM_CHARFROMPOSne serait pas ma solution???

avec ca j'arrive pas a grand chose pour le moment:
DWORD returnIndex=SendMessage( hWnd,EM_CHARFROMPOS,0,MAKELPARAM(ptsCursor.x,ptsCursor.y));

merci
youpi :)
mardi 27 février 2007 à 19:39:45 | Re : Edit control et mouse over
mardi 27 février 2007 à 19:46:42 | Re : Edit control et mouse over

youpiyoyo

en quoi setfocus pourrai m'aider????

en revanche je reste persuader que EM_CHARFROMPOS est la solution

j'ai essayé ca:
WORD vLine=HIWORD(SendMessage( hWnd,EM_CHARFROMPOS,0,MAKELPARAM(ptsCursor.x,ptsCursor.y)));
WORD hLine=LOWORD(SendMessage( hWnd,EM_CHARFROMPOS,0,MAKELPARAM(ptsCursor.x,ptsCursor.y)));

DWORD nWordStart = SendMessage(hWnd, EM_FINDWORDBREAK, WB_LEFT, hLine);
DWORD nWordEnd = SendMessage(hWnd, EM_FINDWORDBREAK, WB_RIGHTBREAK, hLine);

mais
nWordStart et nWordEnd reste toujours a zero

youpi :)


Cette discussion est classée dans : int, edit, hwnd, pos, pmem


Répondre à ce message

Sujets en rapport avec ce message

ressources et API !!!! [ par Xs ] salut !voila, pour me simplifier la tache, j'utlise les ressources pour creer une boite de dialog (sous VC++ 6).mais j'obtiens, lors de la compilation Priblème avec SetGlgItemTxt [ par thebigbang ] bonjour à vous tous ...J'ai un problème avec cette fonction : SetGlgItemTxtJ'ai une fenêtre Win32 avec une edit donc je voudrais modifier la valeur.J' Besoin d'aide pour créer des onglets [ par JazzBerri ] g insérer la source suivante a mon programme et lorsque je lance l'application ma boite de dialogue apparait mais mes onglets ne sont toujours pa crée [C++]Problème de pointeur ou de liste chainee [ par Arkko ] Bonjour... J'essaye de convertir une liste chainée du site en une liste chainée demandant comme parametre un new par exemple ajouter(new Test);Cela f SetDlgItemText pb! [ par toki127 ] Bonjour!bien qu il y ait deja qques posts sur cet API, impossible d afficher ce que je veu ds mon edit...dans une boucle for (i=1;ilorsqu un calcul es Erreur incompréhensible et insoluble pour moi.... [ par jb60 ] Voilà, je vais inscrire le source que j'ai tapé (une partie du source plutôt). J'ai l'impression que tout est correct, mais le compilo me fait une err tri tableau en ligne [ par TWITTI ] bonjour , je suis etudiant en mécanique et la programmtion c est embetant pour moi.J ai un probleme sur mon programme main().Je n arrive pas a faire transformer un int en HWND [ par hansmeier ] Bonsoir, je suis un debutant en C/C++ et j'aimerais savoir comment transformer un int en HWND Merci pour vos futures réponses ! DLL et SendMessage() [ par LordBob ] Bonsoir a tous,voila je continue le développement d'un petit projet. Je voudrais rajouter la possibilité que lorsque on appuie sur une touche a n'impo probleme de slider [ par shadow1779 ] Bonjour,pour mon mp3 je me suis fais un slider pour fais l'avancement de la position, j'ai donc dans mon WM_INITDIALOG ceci://initialisation de la pos


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 1,248 sec (4)

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