Probleme mit Richedit Callback-Funktion.



  • Hallo,
    ich lese eine Datei zeilenweise ein und möchte jede Zeile nacheinander in einem Edit-Control anzeigen.
    Ich initialisiere die EDITSTREAM Struktur

    editstream.dwCookie=(DWORD)buf;
    editstream.dwError=0;
    editstream.pfnCallback = EditStreamCallback;
    

    Meine Callback-Funktion sieht so aus:

    DWORD CALLBACK EditStreamCallback (DWORD dwCookie,LPBYTE pbBuff,LONG cb,LONG *pcb)
    {	 
    	pbBuff = (LPBYTE)dwCookie;
    	*pcb = strlen((char*)pbBuff);
    
    	MessageBox(NULL,(char*)pbBuff,NULL,MB_OK);
    	return 0;
    }
    

    Den Text versuche ich so an das Edit-Control zu schicken:

    while(fgets(buf, sizeof(buf),fp))
    	SendMessage(hTop,EM_STREAMIN,SF_TEXT|SF_UNICODE,(LPARAM)&editstream); //tell it to start stream in
    fclose(fp);
    

    Die Ausgabe in der Messagebox funktioniert ( aber auch nur mit der ersten Zeile der Datai ), aber der Text landet nicht im Edit-Control.
    Sobald ich die Zeile

    *pcb = strlen((char*)pbBuff);
    

    auskommentiere, wird die komplette Datei zeilenweise in der Messagebox angezeigt. Aber auch hier landet der Text nicht im Edit-Control.
    Weiss jemand, was ich falsch mache?
    Gruß,
    e.n.



  • Ok, habe meine Callback geändert:

    DWORD CALLBACK EditStreamCallback (DWORD dwCookie,LPBYTE pbBuff,LONG cb,LONG *pcb)
    {	 
    	char* p = (char*)dwCookie;
    	if (!p)	return 1; 
    	strcpy((char*)pbBuff,p);
    	*pcb=strlen(p);
     	MessageBox(NULL,(char*)pbBuff,NULL,MB_OK);
    	return 0;
    }
    

    Aber der Text landet immer noch nicht wo er soll!



  • Das Ctrl hatte nicht aufgehört die Callback-Funktion aufzurufen.
    Ein *p=0; hat das Problem behoben.


Anmelden zum Antworten