Avatar billede reficul Nybegynder
05. februar 2002 - 23:01 Der er 5 kommentarer og
1 løsning

Farvekodning i RichEdit

Nogen, der ved om/hvordan man kan ændre farven på noget tekst i en RichEdit-kontrol UDEN at ændre på undo-listen??
Typisk ville man jo markere teksten med EM_EXSETSEL og så ændre formatere det markerede med EM_SETCHARFORMAT.
Jeg kan se at der er en message, der hedder EM_FORMATRANGE, men den ser umildbart ikke ud til at være til sådanne formål!

Jeg bruger VC++ 6.0.
Avatar billede jpk Nybegynder
06. februar 2002 - 09:51 #1
Du kan resette undo-listen med EM_EMPTYUNDOBUFFER, men det er sikker ikke det du vil..?
Avatar billede mbulow Nybegynder
06. februar 2002 - 15:22 #2
Hejsa :)

Sådan som du har formuleret dit indlæg, vil jeg gå stærkt ud fra at du sagtens kan ændre textfarven som du vil... Men du vil ha' undo-bufferen til at "Overse" at du gør det... Right?

Hvis ja, så se her:





//Den her definerer ITextDocument og tomTrue/tomFalse
#include "tom.h"

//Spørg mig ikke, bare noget der stod man skulle bruge for at definere
//IID_ITextDocument

#define DEFINE_GUIDXXX(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        EXTERN_C const GUID CDECL name \
                = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }

DEFINE_GUIDXXX(IID_ITextDocument,0x8CC497C0,0xA1DF,0x11CE,0x80,0x98,
                0x00,0xAA,0x00,0x47,0xBE,0x5D);





//Resten har jeg trukket ud af WndProc

//Fra starten af funktionen
static IUnknown *pUnk;
static ITextDocument *pDoc;

//Fra WM_CREATE
pUnk = NULL;
pDoc = NULL;
SendMessage(hRichEditWnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pUnk);
if(pUnk)
  pUnk->QueryInterface(IID_ITextDocument, (void**)&pDoc);

//I dunno... Det hvor du vil arbejde uden undo-buffer
if(pDoc){
  pDoc->Undo(tomFalse, NULL);  //Slå undo fra
  //Lav de ændringer du skal, uden om undo-bufferen
  pDoc->Undo(tomTrue, NULL);  //Slå undo til
}





PS!!! Jeg har ikke gennemtestet det, men det skulle gerne virke... Prøv det lige igennem, før du accepterer det ;) Hehe
Og husk så lige at ændre hRichEditWnd til det du kander din RichEdit
Avatar billede reficul Nybegynder
06. februar 2002 - 16:10 #3
Skod, nå den kom vist kun pr. E-mail (?)

pDoc->Undo slår fint undo-bufferen fra, men når den slåes til igen er bufferen tom!
Avatar billede mbulow Nybegynder
06. februar 2002 - 17:09 #4
Hmm... Det har du da helt ret i :(

Jeg læste bare at man med Undo(tomFalse, NULL) kunne "freeze" undo-bufferen, men jaja, man skal vel lære noget nyt hele tiden :)
Avatar billede mbulow Nybegynder
06. februar 2002 - 17:32 #5
Så prøv lige af skifte tomFalse ud med tomSuspend og tomTrue ud med tomResume
Avatar billede reficul Nybegynder
07. februar 2002 - 15:47 #6
Woohoo! Det virkede sq! Mange tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester