Bonjour,

J'utilise C++builder et:
J'aimerai surligner (style Stabilo) des parties de textes dans un RichEdit.

J'avais cela dans Delphi mais pas moyen de le transformer pour c++builder,
car Fillchar SizeOf etc... n'existe pas dans cbuilder.

Quelqu'un aurait-il une piste ?
Merci d'avance...

Le code pour delphi était:
------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, RichEdit;
type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    procedure Surligne(const RE: TRichEdit; const Color: TColor);
    procedure SupprSurligne(const RE: TRichEdit);
  end;
var
  Form1: TForm1;          
implementation
{$R *.dfm}
procedure TForm1.SupprSurligne(const RE: TRichEdit);
var
  Format : CHARFORMAT2;
begin
  FillChar(Format, SizeOf(CHARFORMAT2), 0);  
  memset(Format.cbSize := SizeOf(CHARFORMAT2);
  SendMessage(RE.Handle, EM_GETCHARFORMAT, WPARAM(True), LPARAM(@Format));
  Format.dwMask := CFM_BACKCOLOR;
  Format.dwEffects := CFE_AUTOBACKCOLOR;
  SendMessage(RE.Handle, EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(@Format))
end;
procedure TForm1.Surligne(const RE: TRichEdit; const Color: TColor);
var
  Format : CHARFORMAT2;
begin
  FillChar(Format, SizeOf(CHARFORMAT2), 0);
  Format.cbSize := SizeOf(CHARFORMAT2);
  SendMessage(RE.Handle, EM_GETCHARFORMAT, WPARAM(True), LPARAM(@Format));
  Format.dwMask := CFM_BACKCOLOR;
  Format.crBackColor := ColorToRGB(Color);
  Format.dwEffects := 0; // CFE_AUTOBACKCOLOR
  SendMessage(RE.Handle, EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(@Format))
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Surligne(RichEdit1, clRed);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  SupprSurligne(RichEdit1);
end;
end.