PS:因为我现在用的电脑是WIN7 64位系统,所以没有实现功能,不知道XP是否可行。
1 //1.定义方法 2 procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT; 3 4 //2.实现方法 5 procedure TForm1.WMNCPaint(var Msg: TWMNCPaint); 6 var 7 dc:hDc; 8 Pen:hPen; 9 OldPen:hPen; 10 OldBrush:hBrush; 11 begin 12 inherited; 13 //获取本窗口设备上下文 14 dc:=GetWindowDC(Handle); 15 msg.Result:=1; 16 //创建画笔,实线、宽度为l、红色 17 Pen:=CreatePen(PS_SOLID,1,RGB(255,0,0)); 18 //将新创建的画笔选入窗体的设备上下文 19 OldPen:=SelectObject(dc,Pen); 20 //将系统库存的空画刷入窗体的设备上下文 21 OldBrush:=SelectObject(dc,GetStockObject(NULL_BRUSH)); 22 //给窗体“镶边” 23 Rectangle(dc,0,0,Form1.Width,Form1.Height); 24 //恢复旧画笔和旧画刷 25 SelectObject(dc,OldBrush); 26 SelectObject(dc,oldPen); 27 //删除新创建的画笔,释放系统资源 28 DeleteObject(Pen); 29 //释放设备上下文 30 ReleaseDC(Handle,Canvas.Handle); 31 end; 32 33 34 //3.DBGrid控件描边 35 procedure TForm1.FormPaint(Sender: TObject); 36 var 37 Rct: TRect; 38 begin 39 Rct:=Rect(Dbgrid1.Left-1,Dbgrid1.Top-1,Dbgrid1.Left+Dbgrid1.Width+1,Dbgrid1.top+Dbgrid1.Height+1); 40 with Form1.Canvas do 41 begin 42 Pen.Color := clRed; 43 Pen.Width := 1; 44 Brush.Style := bsClear; 45 Rectangle(Rct); 46 end; 47 end;