[AccessD] Just for fun! Playing With Regions!

Paul Rodgers Paul.Rogers at SummitMedia.co.uk
Thu Jun 24 02:50:34 CDT 2004


Could we all get the final authorised code when it's streamlined by our
experts, please, gentlemen? Sounds very good, and would be keen to learn
much from it. 

all the best 
paul 

-----Original Message-----
From: Rocky Smolin - Beach Access Software [mailto:bchacc at san.rr.com]
Sent: Wednesday, June 23, 2004 5:11 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Just for fun! Playing With Regions!


Arthur:

Shorten it to Application.hWndAccessApp

Rocky

----- Original Message ----- 
From: "Arthur Fuller" <artful at rogers.com>
To: "'Access Developers discussion and problem solving'"
<accessd at databaseadvisors.com>
Sent: Wednesday, June 23, 2004 8:38 AM
Subject: RE: [AccessD] Just for fun! Playing With Regions!


> I'm getting busted on the line that says "HoleOutForm
> Application.hWndAccessApplication". Any idea why? Am I supposed to
> include a reference or something? OS = XP.
>
> Arthur
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Jim Lawrence
> (AccessD)
> Sent: Tuesday, June 22, 2004 1:15 AM
> To: Access Developers discussion and problem solving
> Subject: RE: [AccessD] Just for fun! Playing With Regions!
>
>
> That is absolutely brilliant, Drew!
>
> Pure genius. Where did you ever come up with that idea?
>
> Amazed :-)
> Jim
>
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com]On Behalf Of
> DWUTKA at marlow.com
> Sent: Monday, June 21, 2004 2:32 PM
> To: AccessD at databaseadvisors.com
> Subject: [AccessD] Just for fun! Playing With Regions!
>
>
> Okay, here's a little code I whipped up for a friend.
>
> Just put this into a module (watch for word wrap):
>
> Option Compare Database
> Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long,
> ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Declare
> Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
> Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,
> lpRect As RECT) As Long Private Declare Function CreateEllipticRgn Lib
> "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2
> As Long) As Long Private Declare Function CombineRgn Lib "gdi32" (ByVal
> hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal
> nCombineMode As Long) As Long Private Declare Function CreateRectRgn Lib
> "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2
> As Long) As Long Private Type RECT
>     Left As Long
>     Top As Long
>     Right As Long
>     Bottom As Long
> End Type
> Private Const RGN_XOR = 3
> Function HoleOutForm(ByVal intHwnd As Long)
> Dim X As Long
> Dim rt As RECT
> Dim rtCircle As RECT
> Dim dwReturn As Long
> Dim InitialRegion As Long
> Dim i As Long
> Dim intMax As Long
> dwReturn = GetWindowRect(intHwnd, rt)
> rt.Bottom = rt.Bottom - rt.Top
> rt.Top = 0
> rt.Right = rt.Right - rt.Left
> rt.Left = 0
> InitialRegion = CreateRectRgn(rt.Left, rt.Top, rt.Right, rt.Bottom)
> rtCircle.Bottom = ((rt.Bottom - rt.Top) / 2) + rt.Top + 1 rtCircle.Top =
> ((rt.Bottom - rt.Top) / 2) + rt.Top - 1 rtCircle.Right = ((rt.Right -
> rt.Left) / 2) + rt.Left + 1 rtCircle.Left = ((rt.Right - rt.Left) / 2) +
> rt.Left - 1 If rt.Bottom > rt.Right Then
>     intMax = rt.Bottom
> Else
>     intMax = rt.Right
> End If
> For i = 1 To intMax
>     X = CreateEllipticRgn(rtCircle.Left, rtCircle.Top, rtCircle.Right,
> rtCircle.Bottom)
>     InitialRegion = CreateRectRgn(rt.Left, rt.Top, rt.Right, rt.Bottom)
>     dwReturn = CombineRgn(InitialRegion, InitialRegion, X, RGN_XOR)
>     SetMainWindowRegion InitialRegion, intHwnd
>     rtCircle.Bottom = rtCircle.Bottom + 1
>     rtCircle.Top = rtCircle.Top - 1
>     rtCircle.Left = rtCircle.Left - 1
>     rtCircle.Right = rtCircle.Right + 1
>     DeleteObject X
>     DeleteObject InitialRegion
> Next i
> DeleteObject X
> DeleteObject InitialRegion
> End Function
> Private Function SetMainWindowRegion(cRgn As Long, intHwnd As Long) Dim
> dwReturn As Long dwReturn = SetWindowRgn(intHwnd, cRgn, True) End
> Function
>
>
> Now, create a form, and put the following behind a command button:
>
> HoleOutForm Me.Hwnd
> DoCmd.Close acForm, Me.Name
>
> Then put a second button on the form, and put this code behind it:
>
> HoleOutForm Application.hWndAccessApplication
> DoCmd.Quit
>
> Save the form, and try out the buttons.
>
> Enjoy!
>
> Drew
> --
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
> -- 
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
> -- 
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>

-- 
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list