Desenha no Canvas de outro aplicativo

Delphi

11/05/2006

Como faço para desenha um retângulo ao redor de uma janela que não faz parte do meu aplicativo? Eu só tenho o Handle da janela, que pode ser um botão, um painel, um form ou qualquer outra janela do Windows.

Tentei usar as funções FrameRect, DrawFocusRect e DrawEdge, mas nenhum dele fez o retângulo, alguém tem alguma idéia?


Rodc

Rodc

Curtidas 0

Respostas

Marcelo Saviski

Marcelo Saviski

11/05/2006

Tente usar essas funções mas passe como primeiro parametro, GedDC(Handle) ao invés de handle


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

11/05/2006

ou talvez...

var
  r: TRect;
begin
  GetWindowRect(Handle, R);
  with TCanvas.Create do
  try
    Handle := GetDC(0);
    Rectamgle(r); //por exemplo
  finally
    Free;
  end;
end;


não testei...


GOSTEI 0
Rodc

Rodc

11/05/2006

Valeu pela ajuda, as duas formas funcionaram. O problema agora é que eu preciso retirar o retângulo que fiz na janela.
Na verdade eu estou pintando o retângulo no Canvas, aguado um Sleep(100) e depois envio a função abaixo para o componente ser repintado
RedrawWindow(HandleObjeto, Rect, nil, RDW_INVALIDATE);
Isto, dentro de um timer, dá a sensação do retângulo estar piscando. Na maioria dos componentes funciona normal, mas quando é um TMenu, TForm ou TToolBar não funciona, o componente continua com a borda que eu fiz.


GOSTEI 0
POSTAR