ProcedureTxpmenu. drawwindowborder (hwnd: hwnd; isrighttoleft: Boolean ); VaR Wrect: trect; Dcanvas: TCanvas; WDC: HDC; // + JTRegiontype: integer; // + JT R1, R2, wR, Region: hrgn; // + JT Rgnr: trect; // + JT Begin If(Hwnd <= 0)Or(Fsetting1_wrng)Then Begin Exit; End; // + JT WDC: = getwindowdc (hwnd); // getwindowtopwindow IfWDC = 0ThenExit; // + JT Fsetting1_wrng: = true; // + JT Dcanvas: = TCanvas. Create; Try Dcanvas. Handle: = WDC; // + JT Getwindowrect (hwnd, wrect ); // + JT Wrect. Right: = wrect. Right-WRect.Left; Wrect. Bottom: = wrect. Bottom-WRect.Top; Wrect. Top: = 0; Wrect. Left: = 0; IfGetwindowlong (hwnd, gwl_wndproc) <> INTEGER (@ menuwindowproc)Then Begin Setwindowlong (hwnd, gwl_userdata, getwindowlong (hwnd, gwl_wndproc )); Setwindowlong (hwnd, gwl_wndproc, INTEGER (@ menuwindowproc )); End; {Modify: conch 2004-11-04 the shadow is too ugly. If not iswxp then Begin WR: = createrectrgn (0, 0, 0 ); Regiontype: = getjavaswrgn (hwnd, wr ); Getrgnbox (WR, rgnr ); Deleteobject (WR ); If (regiontype = Error) or (ABS (rgnr. Right-WRect.Right)> 5) or (ABS (rgnr. Bottom-WRect.Bottom)> 5) then Begin Region: = createrectrgn (0, 0, 0 ); R1: = createrectrgn (wrect. Left, wrect. Top, wrect. Right-2, wrect. Bottom-2 ); R2: = createrectrgn (wrect. Left + 2, wrect. Top + 2, wrect. Right, wrect. Bottom ); Combinergn (Region, R1, R2, rgn_or ); Deleteobject (R1 ); Deleteobject (R2 ); Setjavaswrgn (hwnd, region, true ); End; // + JT Dec (wrect. Right, 2 ); Dec (wrect. Bottom, 2 ); End; // + JT } Dcanvas. Brush. Style: = bsclear; Dcanvas. Pen. Color: = fmenubordercolor; Dcanvas. rectangle (wrect. Left, wrect. Top, wrect. Right, wrect. Bottom ); IfIsrighttoleftThen Begin Dcanvas. Pen. Color: = fficonbackcolor; Dcanvas. moveTo (wrect. Right-3, wrect. Top + 2 ); Dcanvas. lineto (wrect. Right-2, wrect. Bottom-1 ); End Else Begin Dcanvas. Pen. Color: = fficonbackcolor; Dcanvas. rectangle (wrect. Left + 1, wrect. Top + 2, wrect. Left + 3, wrect. Bottom-1 ); End; // + JT Stretchblt (dcanvas. Handle, wrect. Left + 1, wrect. Top + 1, wrect. Right-wrect. Left-1, 2, Dcanvas. Handle, wrect. Left + 1, wrect. Top + 3, wrect. Right-wrect. Left-1, 1, srccopy ); IfIswxpThen Begin Stretchblt (dcanvas. Handle, wrect. Left + 1, wrect. Bottom-3, wrect. Right-wrect. Left-1, 2, Dcanvas. Handle, wrect. Left + 1, wrect. Top + 3, wrect. Right-wrect. Left-1, 1, srccopy ); Dcanvas. Pen. Color: = ffcolor; Dcanvas. rectangle (wrect. Right-3, wrect. Top + 1, wrect. Right-1, wrect. Bottom-1 ); End; // + JT {Modify: conch 2004-11-04 the shadow is too ugly. INC (wrect. Right, 2 ); INC (wrect. Bottom, 2 ); If not iswxp then // + JT Begin // + JT Dcanvas. Pen. Color: = fmenushadowcolor; Dcanvas. rectangle (wrect. Left + 2, wrect. Bottom, wrect. Right, wrect. Bottom-2 ); Dcanvas. rectangle (wrect. Right-2, wrect. Bottom, wrect. Right, wrect. Top + 2 ); End; // + JT } Finally Releasedc (hwnd, WDC); // + JT Dcanvas. Free; Fsettingtransferwrng: = false; End; End; |