Fórum Desenha no Canvas de outro aplicativo #321185

11/05/2006

0

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

Responder

Posts

11/05/2006

Marcelo Saviski

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


Responder

Gostei + 0

11/05/2006

Marcelo Saviski

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...


Responder

Gostei + 0

12/05/2006

Rodc

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar