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