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