Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Richeditbox

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.08.2002, 21:33 Uhr
Christian
C/C++ Master
(Operator)


Hallo!

Nachdem ich mich nun seit wahrscheinlich einem Jahr immer mal wieder mit der RichEditBox rumgeärgert habe muss ich jetzt mal hier im Forum euch etwas löchern:

Um Text in einer RichEditBox zu setzen muss man StreamIn() verwenden. Die CALLBACK Funktion, die ich hier angegeben habe, funktioniert.


Code:
DWORD CALLBACK EditStreamCallbackIn(
  DWORD dwCookie, // application-defined value
  LPBYTE pbBuff,  // pointer to a buffer
  LONG cb,        // number of bytes to read or write
  LONG *pcb       // pointer to number of bytes transferred
)
{
    CString text = (CString)dwCookie;
    
    for(int l = 0; l < text->GetLength(); l++)
    {
        pbBuff[l] = text->GetAt(l);
    }
    
    *pcb = text->GetLength();
    *text = "";
    return 0;

}



Lösche ich aber nun die Zeile

Code:
*text = "";


dann funktioniert nichts mehr und die Callback Funktion wird immer wieder aufgerufen. Die Abbruchbedingungen, die man in der MSDN finden kann, sagen nichts darüber aus warum die Funktion immer wieder aufgerunfen wird. Kann es sein, dass der Cookie auf jeden Fall geleert werden muss, dass die Funktion nicht mehr aufgerufen wird? Wie kann ich mir das sonst erklären?

Danke.
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.08.2002, 21:59 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Christian,
ich weiß das wir das Thema schon einmal hatten, aber nie richtig fertig geworden sind. Ich hab etwas Zeit, kannst Du mir das Projekt nochmal schicken? Bekomme es nicht mehr aus dem Gedächtnis zusammen.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.08.2002, 22:21 Uhr
Christian
C/C++ Master
(Operator)


Hi Uwe!

Ich habe da viele Projekte, die dieses Steuerelement austesten. *g*
Ich schicke dir gleich eins, welches genau diese Frage behandelt.

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.08.2002, 21:47 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Christian,
hmm... Ich hatte schon an mir selbst gezweifelt, da Du oben geschrieben hast, das die Funktion läuft. Muß

C++:
CString* text


heißen. Das nur Nebenbei
Die Callback wird nur abgebrochen, wenn
a) ein Fehler auftritt,
b) aus der Funktion nicht 0 zurückgegeben wird
c) der *pcb mit 0 zurück gegeben wird
Wenn Du die Zeile *text=""; löschst wird durch *pcb = text->GetLength();
c) nie erfüllt.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 13.08.2002 um 21:47 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.08.2002, 15:02 Uhr
Christian
C/C++ Master
(Operator)


hi Uwe!

Danke Danke Danke Danke

Das rettet mir das Leben!!! (und löst ein Problem, das ich schon seit Ewigkeiten nicht kapiere, ich dachte schon, dass da was an dem Verhalten des Steuerelements nicht stimmt... )
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: