Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Rhertz en 11 Abril 2011, 21:18 pm



Título: [Resuelto] Problema con while
Publicado por: Rhertz en 11 Abril 2011, 21:18 pm
Estoy leyendo un Richbox de otra aplicación desde la mia, funciona perfecto hasta que intento obtener cada linea en un bucle, estoy seguro que es error mio en el bucle porque editando manualmente donde puse nbucle sale perfecto...
Código:
 DWORD dwlineas = SendMessage(hListWnd,EM_GETLINECOUNT,0,0); // Obtengo la cantidad de lineas del RichTextBox
   int nbucle=0; // marco el 0 en el bucle
  
    while(nbucle<=dwlineas){ // lo inicio
    DWORD dwCount = SendMessage(hListWnd,EM_LINELENGTH,0,0); // obtengo el largo de la linea
if(dwCount){ // si todo esta correcto
char* lpBuff = new char[dwCount+1]; // creo que es un puntero con el largo de la linea +1
if(!lpBuff){ // si no hay buffer, error
MessageBox(NULL,"Error with memory!",NULL,MB_OK);
return 1;
}
if(LB_ERR != SendMessage(hListWnd,EM_GETLINE,nbucle,(LPARAM)lpBuff)){ // si no hay error, obtengo la linea, nbucle es la linea que quiero
cout<< "Bucle: " << nbucle << endl; // me da el número de bucle
            cout << lpBuff << endl; // imprime la linea
}
delete [] lpBuff; // borro el puntero del buffer
}
    //
    nbucle++; // sumo uno al bucle
    Sleep(2000); // espero 2 segundos
    }

El código funciona sólo con la primer linea, si quito el while y pongo que me de otras lineas funciona perfectamente, dentro del bucle no obtiene más que la primera, a ver si alguien me puede ayudar.


Título: Re: Problema con while
Publicado por: Rhertz en 1 Mayo 2011, 02:44 am
Resuelto, hay que usar EM_LINEINDEX para obtener la diferencia de caracteres que hay que poner en LINELENGTH y así obtener el ancho correcto