Como desenhar retângulo de seleção com estilo do TTreeView durante AdvancedCustomDrawItem?

Estou fazendo customTTreeView desenho a partir do zero usandoOnAdvancedCustomDrawItem evento, e eu me pergunto como processar esses retângulos quente e seleção corretamente no fundo do meu proprietário desenhar itens? Eles são do estilo Vista / 7, então não posso simplesmente preencher o fundo em alguma cor sólida.

Eu tentei desenhar meus itens emcdPostPaint estágio, mas se eu sairDefaultDraw := True acdPrePaint fase para desenhar fundo de seleção, o desenho padrão completo ocorre, incluindo o texto dos itens.

procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages,
  DefaultDraw: Boolean);
begin
  case Stage of
    cdPreErase:
    begin
      DefaultDraw := True;
    end;

    cdPostErase:
    begin
      DefaultDraw := True;
    end;

    cdPrePaint:
    begin
      // I thought this will paint only the selected/hot backgrounds, 
      // however this will paint whole item, including text.
      DefaultDraw := True;
    end;

    cdPostPaint:
    begin
      DefaultDraw := False;

      // painting my owner-draw text
      // .........
    end;
  end;

  PaintImages := False;
end;

questionAnswers(1)

yourAnswerToTheQuestion