• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 659
  • Last Modified:

Setting background color for line of text

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
purvis
Asked:
purvis
  • 5
  • 3
1 Solution
 
purvisAuthor Commented:
Edited text of question
0
 
purvisAuthor Commented:
Edited text of question
0
 
RONSLOWCommented:
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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
purvisAuthor Commented:
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
 
RONSLOWCommented:
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
 
purvisAuthor Commented:
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
 
RONSLOWCommented:
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
 
purvisAuthor Commented:
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

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now