RichEdit, EM_STREAMOUT i obrazki



Widzisz wersję archiwalną tematu "RichEdit, EM_STREAMOUT i obrazki" z forum pl.comp.programming





Dariusz Zolna - 19 Lis 2004, 19:10

Kilka dni temu pytałem jak skopiować zawartość jednej kontrolki RichEdit do
innej, zadanie okazało się banalne, chyba aż tak bardzo, że nikt nie
udzielił mi konkretnej odpowiedzi, może tym razem będzie inaczej :-)

Problem swój rozwiązałem za pomocą sztuczki z uruchamianiem własnego kodu w
kontekście obcego procesu. Do przesłania danych używam właściwych temu
zadaniu komunikatów EM_STREAMOUT i EM_STREAMIN oraz pamięci współdzielonej.
Wszystko działa pięknie dopóki RichEdit nie zawiera obrazków (lub innych
obiektów OLE). Wtedy po prostu wszystko się wiesza. Góglownica niewiele wie
na ten temat, a ze szczątkowych informacji wywnioskowałem, że muszę
zaimplementować swoją klasę IRichEditOleCallback, co niby nie jest trudnym
zadaniem, ale... brakuje funkcji zwracającej wskaźnik do aktualnej
implementacji tej klasy, czyli jeśli podmienię ją w kontekście obcego
procesu, nie będę mógł jej przywrócić.
Wie ktoś jak rozwiązać ten problem? A może w inny sposób mogę przenieść
zawartość RichEdit wraz z obrazkami?

Darek Żołna



Adam - 19 Lis 2004, 20:21

Kilka dni temu pytałem jak skopiować zawartość jednej kontrolki RichEdit
do
innej, zadanie okazało się banalne, chyba aż tak bardzo, że nikt nie
udzielił mi konkretnej odpowiedzi, może tym razem będzie inaczej :-)



he, przeciez same konkety dawalem ;)

Problem swój rozwiązałem za pomocą sztuczki z uruchamianiem własnego kodu
w
kontekście obcego procesu. Do przesłania danych używam właściwych temu
zadaniu komunikatów EM_STREAMOUT i EM_STREAMIN oraz pamięci
współdzielonej.
Wszystko działa pięknie dopóki RichEdit nie zawiera obrazków (lub innych
obiektów OLE). Wtedy po prostu wszystko się wiesza. Góglownica niewiele
wie
na ten temat, a ze szczątkowych informacji wywnioskowałem, że muszę
zaimplementować swoją klasę IRichEditOleCallback, co niby nie jest trudnym
zadaniem, ale... brakuje funkcji zwracającej wskaźnik do aktualnej
implementacji tej klasy, czyli jeśli podmienię ją w kontekście obcego
procesu, nie będę mógł jej przywrócić.
Wie ktoś jak rozwiązać ten problem? A może w inny sposób mogę przenieść
zawartość RichEdit wraz z obrazkami?



pomysl na szybkiego: a moze zmienic wewnetrzny znacznik na TXT (z RTF) i
pobierac tekst jako tekst?
w ten sposob mozna olac OLE
chyba, ze formatowanie jest wazne, to wtedy sprawa jest trudniejsza.

hth, Adam., http://www.mykakee.com


Dariusz Zolna - 19 Lis 2004, 20:28


pomysl na szybkiego: a moze zmienic wewnetrzny znacznik na TXT (z RTF) i
pobierac tekst jako tekst?
w ten sposob mozna olac OLE
chyba, ze formatowanie jest wazne, to wtedy sprawa jest trudniejsza.



Tyle że ja nie chcę olewać OLE. Tekst bez obrazków ale z formatowaniem
przenoszę za pomocą ITextRange i clipboardu. Na upartego może być, ale nie
zadowala mnie to rozwiązanie. Nie lubię odstawiać tzw. chały :-)

Darek Żołna


Maciej Pilichowski - 20 Lis 2004, 07:41


Wie ktoÂś jak rozwiÂąza? ten problem? A mo?e w inny sposób mog? przenieÂś?
zawartoÂś? RichEdit wraz z obrazkami?



Poniewaz jestem krok za Toba /a problem mamy prawie ten sam/, wiec
moze glupia odpowiedz -- probowales WM_COPY wyslac do tego richedita?

Jesli chodzi o mnie, sprobowalem i dziala. Tyle, ze ja jestem na
etapie ekstrakcji richedita i konwersji to na HTML. Obrazki beda
pozniej ;-)

milego dnia zycze
hej



Dariusz Zolna - 20 Lis 2004, 09:10


Poniewaz jestem krok za Toba /a problem mamy prawie ten sam/, wiec
moze glupia odpowiedz -- probowales WM_COPY wyslac do tego richedita?



Dzisiaj w nocy rozwiązałem problem. Może nie w taki sposób jak chciałem, ale
działa. Skoro robisz to samo, to się podzielę :-)

Przy użyciu ITextRange-Copy / Paste kopiuję tekst (całe OLE dla RichEdit
jest naprawdę banalne), ale żeby w kontrolce docelowej wyświetlane były
obrazki, muszę zrobić dla niej interfejs IRichEditOleCallback ze szczególnym
uwzględnieniem metody GetNewStorage (w zasadzie nic innego nie mam
zrobione), której wnętrze wygląda tak:

    LPLOCKBYTES lpLockBytes = NULL;
    SCODE       sc  = ::CreateILockBytesOnHGlobal(NULL, TRUE, &lpLockBytes);
    if (sc != S_OK) return sc;
    sc = ::StgCreateDocfileOnILockBytes(lpLockBytes,
STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE, 0, lplpstg);
    if (sc != S_OK) lpLockBytes-Release();
    return sc;

Pozdrawiam i życzę sukcesów z RichEdit, którego dokumentacja (jak na
możliwości) jest nader uboga.

Darek Żołna


SJ - 22 Lis 2004, 03:08

Witam,
mam pytanko troche z innej beczki.
Mianowicie mecze sie z wyswietleniem zawartosci pliku rtf w TRichEdit.
Chodzi o to, że jak są tam obrazki i równanie MS Word - edytora równań
(obiekt OLE?) to pomija mi te rzeczy.
Możesz opisać jak to zrobiłeś.
Dzięki i pozdrawiam
SJ
Kilka dni temu pytałem jak skopiować zawartość jednej kontrolki RichEdit
do
innej, zadanie okazało się banalne, chyba aż tak bardzo, że nikt nie
udzielił mi konkretnej odpowiedzi, może tym razem będzie inaczej :-)

Problem swój rozwiązałem za pomocą sztuczki z uruchamianiem własnego kodu
w
kontekście obcego procesu. Do przesłania danych używam właściwych temu
zadaniu komunikatów EM_STREAMOUT i EM_STREAMIN oraz pamięci
współdzielonej.
Wszystko działa pięknie dopóki RichEdit nie zawiera obrazków (lub innych
obiektów OLE). Wtedy po prostu wszystko się wiesza. Góglownica niewiele
wie
na ten temat, a ze szczątkowych informacji wywnioskowałem, że muszę
zaimplementować swoją klasę IRichEditOleCallback, co niby nie jest trudnym
zadaniem, ale... brakuje funkcji zwracającej wskaźnik do aktualnej
implementacji tej klasy, czyli jeśli podmienię ją w kontekście obcego
procesu, nie będę mógł jej przywrócić.
Wie ktoś jak rozwiązać ten problem? A może w inny sposób mogę przenieść
zawartość RichEdit wraz z obrazkami?

Darek Żołna




Dariusz Zolna - 22 Lis 2004, 11:46


Możesz opisać jak to zrobiłeś.



Przeczytaj mój poprzedni post w tym wątku.

Darek Żołna

Jak utworzyć okno kontrolki RichEdit w API?
Zmiana tla w kontrolce RichEdit
kontrolka RichEdit w Vc++
Oceń obrazki - pomóż w projekcie kodeka!
  • telfon komorkowy
  • hymn juventusu
  • xray scanner
  • ksiazki somozy sa niezwykle
  • uw szczecinski
  • tatuaze com pl
  • alergolog
  • czy warto zaktualizowac debiana do wersji
  • copa de la vida
  • Katalog wypowiedzi z for internetowych ^^ Strona Główna