如何给任意一个窗体画边框,且能让这个边框保持恒久。(20分)

  • 主题发起人 主题发起人 biku
  • 开始时间 开始时间
B

biku

Unregistered / Unconfirmed
GUEST, unregistred user!
用下面的函数能给任意窗口画边框,但如何能让这个边框保持恒久呢?

function HighlightWindow(pl_hwnd: Hwnd;cor:tColor):bool;
var
ll_hDC : HDC;
lu_RECT : TRECT;
ll_Pen : HPEN;
begin
GetWindowRect(pl_hWnd,lu_RECT);
ll_hDC := GetWindowDC(pl_hWnd);
SetROP2(ll_hDC, R2_NOTXORPEN);
ll_Pen := CreatePen(ps_solid, 2, cor);
SelectObject(ll_hDC, ll_Pen);
SelectObject(ll_hDC, GetStockObject(HOLLOW_BRUSH));
Rectangle(ll_hDC, 0, 0, lu_RECT.Right - lu_RECT.Left, lu_RECT.Bottom - lu_RECT.Top);
DeleteObject(ll_Pen);
ReleaseDC(pl_hWnd, ll_hDC);
result:=true;
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
HighlightWindow(XXX,XXX);
end;
 
这是给自己创建的窗口的,我要的是别的任意的窗口(比如IE,记事本等等)也可以。
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯
 
舉個例子:
procedure TForm1.FormPaint(Sender: TObject);
begin
HighlightWindow(form1.Handle,cllime);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
form1.Repaint
end;
初次解答。
 
简单说一下,你的要求不可能实现(具体原因就不解释了)
除非做一个继承窗体,加入边框的颜色,是否绘制等属性,然后所有的窗体都继承于它
 
hook windows重画消息,然后执行你的代码

delphi先锋网 文章更新了 www.topdelphi.net
 
如果只是在鼠标拖曳过程中绘制边框。由于时间比较短,目的窗口一般不会更新,所以不需要管维持图像的问题

如果一定要维持图像,那只能用SetWindowsHookEx建立全局钩子,自己处理目的窗口的WM_PAINT消息
 
晕菜,真的要用HOOK啊。
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯
 
看来就这样石沉大海了。再顶一下!谁能帮帮忙忙!
 
后退
顶部