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;