Rocky Smolin - Beach Access Software
bchacc at san.rr.com
Wed Jun 23 11:11:03 CDT 2004
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 >