Desenha no Canvas de outro aplicativo
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?
Tentei usar as funções FrameRect, DrawFocusRect e DrawEdge, mas nenhum dele fez o retângulo, alguém tem alguma idéia?
Rodc
Curtidas 0
Respostas
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
11/05/2006
ou talvez...
não testei...
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
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.
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