Solved

Setting background color for line of text

Posted on 1998-04-13
8
628 Views
Last Modified: 2012-05-07
Hi there:

I'd like to highlight a line of text in a CRichEditCtrl window red (the background of the entire window being white).  Also when the user scrolls, I'd like for the highlighted line to stick w/ the line it is supposed to be highlighting.  I believe that I've come across a couple of pieces of advice w/ SetBackground, but I've reached an impass.  Also the situation will arise where mulitple lines of text will be highlighted in different colors.

I am part of a team writing an assembler w/ a debug gui.

Any suggestions?

Thanks,

Charlton Purvis
0
Comment
Question by:purvis
  • 5
  • 3
8 Comments
 

Author Comment

by:purvis
ID: 1184239
Edited text of question
0
 

Author Comment

by:purvis
ID: 1184240
Edited text of question
0
 
LVL 10

Accepted Solution

by:
RONSLOW earned 100 total points
ID: 1184241
First select the whole line (in code - use SetSel).
Then use SetSelectionCharFormat to set the background color.  NOTE: you have to use a CHARFORMAT2 object (with a cast and cbSize set correctly) with the crBackColor set to the color you require.
NOTE: you need to have Rich Edit 2.0 on your system.

Alternatively, why not try setting the foreground color for the text instead of the background color?
0
 

Author Comment

by:purvis
ID: 1184242
Hi, Ronslow:

Yes, I've been able to set the font color (fg), but it is more eye-catching to set the background color of the line, I believe -- but I may have to be satisfied w/ that.  I am not sure what version of Rich Edit I have, but crBackColor is not anywhere to be found on the online help, so I guess that I don't have the latest and greatest.  I am using vc++ 5.0.

Thanks for your help.
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 10

Expert Comment

by:RONSLOW
ID: 1184243
Rich Edit 2.0 is in RichEd20.DLL - if you have this, then you have V2.0

The help on CHARFORMAT2 is part of the Win32 (Platform) SDK documentation.

The tree to the particular page is:
SDK Documentation | Platform SDK | User Interface Services | Controls | Rich Edit Controls | Rich Edit Control Reference | Rich Edit Structures | CHARFORMAT2

Here is the text of that page...

CHARFORMAT2
[This is preliminary documentation and subject to change.]

The CHARFORMAT2 structure contains information about character formatting in a rich edit control. CHARFORMAT2 is a Rich Edit version 2.0 extension of the CHARFORMAT structure. Rich Edit 2.0 allows you to use either structure with the EM_GETCHARFORMAT and EM_SETCHARFORMAT messages.

typedef struct _charformat2 {
    UINT        cbSize;
    _WPAD       _wPad1;
    DWORD       dwMask;
    DWORD       dwEffects;
    LONG        yHeight;
    LONG        yOffset;
    COLORREF    crTextColor;
    BYTE        bCharSet;
    BYTE        bPitchAndFamily;
    WCHAR       szFaceName[LF_FACESIZE];
    _WPAD       _wPad2;
    WORD        wWeight;
    SHORT       sSpacing;
    COLORREF    crBackColor;
    LCID        lcid;
    DWORD       dwReserved;
    SHORT       sStyle;
    WORD        wKerning;
    BYTE        bUnderlineType;
    BYTE        bAnimation;
    BYTE        bRevAuthor;
    BYTE        bReserved1;
} CHARFORMAT2;

Members
cbSize
Specifies the size, in bytes, of this structure. Before passing this structure to a rich edit control, set cbSize to the size of the CHARFORMAT or CHARFORMAT2 structure. If cbSize equals the size of a CHARFORMAT structure, the control uses only the CHARFORMAT members.
dwMask
Specifies the parts of the CHARFORMAT2 structure that contain valid information. The dwMask member can be a combination of the values from two sets of bit flags. One set indicates the structure members that are valid. Another set indicates the valid attributes in the dwEffects member.
Set the following values to indicate the valid structure members. Value Meaning
CFM_ANIMATION The bAnimation member is valid.
CFM_BACKCOLOR The crBackColor member is valid.
CFM_CHARSET The bCharSet member is valid.
CFM_COLOR The crTextColor member is valid unless the CFE_AUTOCOLOR flag is set in the dwEffects member.
CFM_FACE The szFaceName member is valid.
CFM_KERNING The wKerning member is valid.
CFM_LCID The lcid member is valid.
CFM_OFFSET The yOffset member is valid.
CFM_REVAUTHOR The bRevAuthor member is valid.
CFM_SIZE The yHeight member is valid.
CFM_SPACING The sSpacing member is valid.
CFM_STYLE The sStyle member is valid.
CFM_UNDERLINETYPE The bUnderlineType member is valid.
CFM_WEIGHT The wWeight member is valid.


Set the following values to indicate the valid attributes of the dwEffects member:

Value Meaning
CFM_ALLCAPS The CFE_ALLCAPS value is valid.
CFM_BOLD The CFE_BOLD value is valid.
CFM_COLOR The CFE_AUTOCOLOR value is valid, or the crTextColor member is valid.
CFM_DISABLED The CFE_DISABLED value is valid.
CFM_EMBOSS The CFE_EMBOSS value is valid.
CFM_HIDDEN The CFE_HIDDEN value is valid.
CFM_IMPRINT The CFE_IMPRINT value is valid.
CFM_ITALIC The CFE_ITALIC value is valid.
CFM_LINK The CFE_LINK value is valid.
CFM_OUTLINE The CFE_OUTLINE value is valid.
CFM_PROTECTED The CFE_PROTECTED value is valid.
CFM_REVISED The CFE_REVISION value is valid.
CFM_SHADOW The CFE_SHADOW value is valid.
CFM_SMALLCAPS The CFE_SMALLCAPS value is valid.
CFM_STRIKEOUT The CFE_STRIKEOUT value is valid.
CFM_SUBSCRIPT The CFE_SUBSCRIPT and CFE_SUPERSCRIPT values are valid.
CFM_SUPERSCRIPT Same as CFM_SUBSCRIPT.
CFM_UNDERLINE. The CFE_UNDERLINE value is valid.


dwEffects
A set of bit flags that specify character effects. Some of the flags are included only for compatibility with Microsoft Text Object Model (TOM) interfaces; the rich edit control stores the value but does not use it to display text.
This member can be a combination of the following values. Value Meaning
CFE_ALLCAPS Characters are all capital letters. Does not affect the way the control displays the text.  
CFE_AUTOCOLOR The text color is the return value of GetSysColor (COLOR_WINDOWTEXT). If this flag is set, the crTextColor member is ignored.
CFE_BOLD Characters are bold.
CFE_DELETED Marks the characters as deleted.
CFE_EMBOSS Characters are embossed. Does not affect how the control displays the text.  
CFE_HIDDEN Characters are not displayed. Does not affect how the control displays the text.  
CFE_IMPRINT Characters are displayed as imprinted characters. Does not affect how the control displays the text.  
CFE_ITALIC Characters are italic.
CFE_LINK A rich edit control can send EN_LINK notification messages when it receives mouse messages while the mouse pointer is over text with the CFE_LINK effect.
CFE_OUTLINE Characters are displayed as outlined characters. Does not affect how the control displays the text.  
CFE_PROTECTED Characters are protected; an attempt to modify them will cause an EN_PROTECTED notification message.
CFE_REVISION Marks the characters as revised.
CFE_SHADOW Characters are displayed as shadowed characters. Does not affect how the control displays the text.  
CFE_SMALLCAPS Characters are in small capital letters. Does not affect how the control displays the text.  
CFE_STRIKEOUT Characters are struck out.
CFE_SUBSCRIPT Characters are subscript. The CFE_SUPERSCRIPT and CFE_SUBSCRIPT values are mutually exclusive. For both values, the control automatically calculates an offset and a smaller font size. Alternatively, you can use the yHeight and yOffset members to explicitly specify font size and offset for subscript and superscript characters.
CFE_SUPERSCRIPT Characters are superscript.  
CFE_UNDERLINE Characters are underlined.


yHeight
Specifies the character height, in twips. A twip is 1/1440 of an inch, or 1/20 of a printer's point. To use this member, set the CFM_SIZE flag in the dwMask member.
yOffset
Specifies the character offset, in twips, from the baseline. If this member is positive, the character is a superscript; if it is negative, the character is a subscript. To use this member, set the CFM_OFFSET flag in the dwMask member.
crTextColor
Specifies the text color. To use this member, set the CFM_COLOR flag in the dwMask member. This member is ignored if the CFE_AUTOCOLOR character effect is specified.
bCharSet
Specifies the character set value, which can be one of the values specified for the lfCharSet member of the LOGFONT structure. To use this member, set the CFM_CHARSET flag in the dwMask member.
bPitchAndFamily
Specifies the font family and pitch. This member is the same as the lfPitchAndFamily member of the LOGFONT structure.
szFaceName
A null-terminated character array specifying the font face name. To use this member, set the CFM_FACE flag in the dwMask member.
wWeight
Specifies the font weight. This member is the same as the lfWeight member of the LOGFONT structure. To use this member, set the CFM_WEIGHT flag in the dwMask member.
sSpacing
Specifies the horizontal space, in twips, between letters. This value has no effect on the text displayed by a rich edit control; it is included for compatibility with Microsoft Text Object Model (TOM) interfaces. To use this member, set the CFM_SPACING flag in the dwMask member.
crBackColor
Specifies the background color. To use this member, set the CFM_BACKCOLOR flag in the dwMask member.
lcid
Specifies a 32-bit locale identifier that contains a language identifier in the lower word, and a sorting identifier and reserved value in the upper word. This member has no effect on the text displayed by a rich edit control, but spelling and grammar checkers can use it to deal with language-dependent problems. You can use the MAKELCID macro to create an LCID value. To use this member, set the CFM_LCID flag in the dwMask member.
dwReserved
Reserved; must be zero.
sStyle
Specifies a style handle. This value has no effect on the text displayed by a rich edit control; it is included for compatibility with Microsoft Text Object Model (TOM) interfaces. To use this member, set the CFM_STYLE flag in the dwMask member.
wKerning
Specifies the twip size above which to kern the character. This value has no effect on the text displayed by a rich edit control; it is included for compatibility with TOM interfaces. To use this member, set the CFM_KERNING flag in the dwMask member.
bUnderlineType
Specifies the underline type. To use this member, set the CFM_UNDERLINETYPE flag in the dwMask member. This member can be one of the following values. Value Meaning
CFU_CF1UNDERLINE Map CHARFORMAT's bit underline to CHARFORMAT2.  
CFU_INVERT For IME composition fake a selection.  
CFU_UNDERLINE Solid underline.
CFU_UNDERLINEDOTTED Dotted underlined text. The rich edit control displays the text with a solid underline.
CFU_UNDERLINEDOUBLE Double-underlined text. The rich edit control displays the text with a solid underline.
CFU_UNDERLINENONE No underline. This is the default.
CFU_UNDERLINEWORD Underline words only. The rich edit control displays the text with a solid underline.

bAnimation
Specifies the text animation. This value has no effect on the text displayed by a rich edit control; it is included for compatibility with TOM interfaces. To use this member, set the CFM_ANIMATION flag in the dwMask member.
bRevAuthor
Specifies an index that identifies the author making a revision. The rich edit control uses different text colors for each different author index. To use this member, set the CFM_REVAUTHOR flag in the dwMask member.
bReserved1
Reserved; must be zero.
QuickInfo
  Windows NT: Use version 4.0 or later.
  Windows: Use Windows 95 or later.
  Windows CE: Unsupported.
  Header: Declared in richedit.h.

See Also
Rich Edit Controls Overview, Rich Edit Structures, CHARFORMAT, EM_GETCHARFORMAT, EM_SETCHARFORMAT, EN_PROTECTED, GetSysColor, LOGFONT, MAKELCID

0
 

Author Comment

by:purvis
ID: 1184244
RichEd20.DLL is nowhere to be found on my box, so it looks like I'm out of luck.  Wouldn't you agree that changing the font color is my best bet?
0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1184245
It is distributed with Office 97 et al.

You might like to try COM40UPD.EXE (or is it 40COMUPD.EXE) from MS.  This gives you the latest common controls and may include RICHED20.DLL


0
 

Author Comment

by:purvis
ID: 1184246
Ah, Office 97.  I've been trying to put that off until absolutely necessary.  I plan to upgrade my box and 97 will definitely be part of the package.  Oh well, my friends' jeers were justified then, weren't they?!

I'll give those .exe's a look.

Thanks again.
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticall…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now