[Resuelto] Problema con while

Iniciado por Rhertz, 11 Abril 2011, 21:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Rhertz

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...
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.

Rhertz

Resuelto, hay que usar EM_LINEINDEX para obtener la diferencia de caracteres que hay que poner en LINELENGTH y así obtener el ancho correcto