Jump to content

Checking the return value from a GUICreate|GUIDelete function


Go to solution Solved by argumentum,

Recommended Posts

Posted (edited)

Hello,

I require a means of properly checking|deteermining  the return value from a GUICreate function.

For example:

;https://www.autoitscript.com/forum/topic/194544-gui-in-gui/#findComment-1396548
; Filename: Update3
; Adding a button to Form2
; -----------------------------------------------
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; -----------------------------------------------
$Form1 = GUICreate("Form1", 125, 45, 190, 120)
; -----------------------------------------------
$Button1 = GUICtrlCreateButton("Button1", 10, 10, 105, 25)
; -----------------------------------------------
GUISetState(@SW_SHOW)
; -----------------------------------------------
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _form2()
    EndSwitch
WEnd
; -----------------------------------------------
Func _form2()
    $Form2 = GUICreate("Form2", 125, 45, 190, 220)
    ; -----------------------------------------------
    $Button = GUICtrlCreateButton("Button", 10, 10, 105, 25)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 2
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $Button
                GUIDelete($Form2)
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>_form2
; -----------------------------------------------

Question: How would I go about determining the return value of Form2?

Would the following be appropriate?

While 2
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $Button
                $Value = GUIDelete($Form2)
                ExitLoop
        EndSwitch
    WEnd
    ConsoleWrite($Value & @CRLF)

The above displays a value of "1", which I understand to be "Success".

Edited by mr-es335
  • mr-es335 changed the title to Checking the return value from a GUICreate|GUIDelete function
Posted
1 hour ago, mr-es335 said:

I require a means of properly checking|deteermining  the return value from a GUICreate function.

What does the help file tell you how GUICreate returns success or failure?
The answer shouldn't be too hard to find and incorporate into your script :)

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Posted

water,

All the HelpFile for GUICreatestates is:

Return Value

Success: a windows handle.
Failure: 0 if the window cannot be created and sets the @error flag to 1.

However, how do you actually determine|check for the success|failure of those return codes?

PS: I DID provide an example...what that example of note? And I am more interested in GUIDelete at the moment. I need to ensure that I have existed the form [Form2] correctly.

 

 

  • Solution
Posted (edited)
47 minutes ago, mr-es335 said:

However, how do you actually determine|check for the success|failure of those return codes?

47 minutes ago, mr-es335 said:

Success: a windows handle.
Failure: 0 if the window cannot be created and sets the @error flag to 1.

There :lol:

; -----------------------------------------------
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; -----------------------------------------------
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
; -----------------------------------------------
Opt("MustDeclareVars", 1)
; -----------------------------------------------
_Form1()
; -----------------------------------------------
Func _Form1()
    Local $vVal, $iW = 270, $iH = 100
    ConsoleWrite("Inside _Form1()" & @CRLF)
    GUICreate("_Form1", $iW, $iH)
    GUISetFont(14, 800, 0, "Calibri")
    ; -----------------------------------------------
    Local $sCol1Row1 = GUICtrlCreateButton("Go to Form2", 10, 10, $iW - 20, 25)
    Local $sCol1Row2 = GUICtrlCreateButton("Exit Me", 10, 40, $iW - 20, 25)
    Local $sCol1Row3 = GUICtrlCreateLabel("The time returned by Form2", 10, 70, $iW - 20, 25)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        ; -----------------
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $sCol1Row2
                _ExitMe()
            Case $sCol1Row1
                GUISetState(@SW_HIDE)
                $vVal = _Form2($iW, $iH)
                If @error Then
                    ConsoleWrite("@@ Debug (" & @ScriptLineNumber & " : OMG, it failed !" & @CRLF)
                Else
                    ConsoleWrite("@@ Debug (" & @ScriptLineNumber & ") : all good: " & $vVal & @CRLF)
                EndIf
                GUICtrlSetData($sCol1Row3, $vVal)
                GUISetState(@SW_SHOW)
        EndSwitch
    WEnd
EndFunc   ;==>_Form1
; -----------------------------------------------
Func _Form2($iW, $iH)
    ConsoleWrite("Inside _Form2()" & @CRLF)
    Local $MainGui2 = GUICreate("_Form2", $iW, $iH) ; GUICreate() returns 0 if the window cannot be created and sets the @error flag to 1.
    If @error Or Not $MainGui2 Then Return SetError(1, 0, "") ; ..so we check for any and all, just to make sure.
    GUISetFont(14, 800, 0, "Calibri")
    ; -----------------------------------------------
    Local $sColRow = GUICtrlCreateButton("Return to Form1", 10, 10, $iW - 20, 25)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        ; -----------------
        Switch GUIGetMsg()
            Case $sColRow, $GUI_EVENT_CLOSE
                GUIDelete($MainGui2)
                ConsoleWrite("Returning to Form1" & @CRLF)
                Return "Time in Form2 was: " & @MIN & ':' & @SEC & '.' & @MSEC ; return something back
        EndSwitch
    WEnd
EndFunc   ;==>_Form2
; -----------------------------------------------
Func _ExitMe()
    ConsoleWrite("Inside _ExitMe()" & @CRLF)
    GUIDelete() ; last GUI in the stack of GUIs
    Exit
EndFunc   ;==>_ExitMe
; -----------------------------------------------

PS: those lines with "@@ Debug", you can double-click on the console to jump to the line that is at.

Edited by argumentum

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Posted

Good day,

Well...I do believe that - with the assistance of pixelsearch and argumentum...with gratitude...I might say, I have finally completed my project...at least this portion of a much larger work.

What this script does:
1) Presents a UI with three buttons, Launch App, Go to Form2, and Exit Me.
2) Launch App: Launches a test application.
3) Go to Form2: Launches Form2
• The "Go to Form2" button from Form1 is disabled.
• Form2 display a border-less UI with only the text "Enable Exit" displayed.
• Selecting the text "toggles" the text to display "Exit"
• Selecting "Exit", exits the text test application.
• The "Go to Form2" button from Form1 is enabled.
4) Exit Me: Exits the script.

Dependencies
A test application, which must reside in the script folder. [Click_Me]

Let me know what you think...

; -----------------------------------------------
; With the assistance of pixelsearch and argumentum...with gratitude!
; Date: 12/30/24
; -----------------
; Filename: Update6c
; For testing with MyApp
; -----------------------------------------------
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; -----------------------------------------------
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
; -----------------------------------------------
Opt("MustDeclareVars", 1)
; ----------------------------------------------
Global $iW = 170, $iH = 100
Global $MainGui2
Global $sColRow
; -----------------------------------------------
_MainGui1()
; -----------------------------------------------
Func _MainGui1()
    GUICreate("_MainGui1", $iW, $iH, 875, -1)
    GUISetFont(14, 800, 0, "Calibri")
    ; -----------------------------------------------
    Local $sCol1Row1 = GUICtrlCreateButton("Launch App", 10, 10, $iW - 20, 25)
    Local $sCol1Row2 = GUICtrlCreateButton("Go to Form2", 10, 40, $iW - 20, 25)
    Local $sCol1Row3 = GUICtrlCreateButton("Exit Me", 10, 70, $iW - 20, 25)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        Switch GUIGetMsg()
            Case $sCol1Row3, $GUI_EVENT_CLOSE
                _ExitMe()
            Case $sCol1Row1
                _LaunchMyApp()
            Case $sCol1Row2
                GUICtrlSetState($sCol1Row2, $GUI_DISABLE)
                _MainGui2()
                GUICtrlSetState($sCol1Row2, $GUI_ENABLE)
        EndSwitch
    WEnd
EndFunc   ;==>_MainGui1
; -----------------------------------------------
Func _MainGui2()
    $MainGui2 = GUICreate("", 100, 25, 910, 400, $WS_POPUP, $WS_EX_TOPMOST)
    GUISetFont(14, 800, 0, "Calibri")
    GUISetBkColor(0x505050)
    ; -----------------------------------------------
    $sColRow = GUICtrlCreateLabel("Enable Exit", 1, 1, 100, 20, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFFFFFF)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        Switch GUIGetMsg()
            Case $sColRow
                Local $bButtonStatus = _EnableTextToggle()
                If $bButtonStatus = True Then ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>_MainGui2
; -----------------------------------------------
Func _EnableTextToggle()
    Local Static $hbToggleEnabled = True
    ; -----------------------------------------------
    If $hbToggleEnabled = True Then
        GUICtrlSetData($sColRow, "Exit")
        $hbToggleEnabled = False
    Else
        GUICtrlSetData($sColRow, "")
        GUIDelete($MainGui2)
        _ExitMyApp()
        $hbToggleEnabled = True
    EndIf
    Return $hbToggleEnabled
EndFunc   ;==>_EnableTextToggle
; -----------------------------------------------
Func _ExitMe()
    GUIDelete()
    Exit
EndFunc   ;==>_ExitMe
; -----------------------------------------------
Func _LaunchMyApp()
    Local $sSrcAppPath = @ScriptDir & "\_MyApp.exe"
    ; -----------------------------------------------
    Run($sSrcAppPath)
    ; -----------------------------------------------
    Sleep(20)
    ; -----------------
    WinMove("  MyApp", "", 875, 325, 176, 130)
EndFunc   ;==>_LaunchMyApp
; -----------------------------------------------
Func _ExitMyApp()
    Local $sAppTitle = "  MyApp"
    ; -----------------------------------------------
    WinClose($sAppTitle)
EndFunc   ;==>_ExitMyApp
; -----------------------------------------------

Thanks again to pixelsearch for his assistance with the "_EnableTextToggle" section, and argumentum for his assistance with the "2 Forms" functionality!

 

Posted (edited)

Would someone be so kind as to check this script out...in particular 1) the While|Wend of _MainGui2, and 2) the _EnableHotKey of _MainGui2...thanks!!
• Ensure that Notepad is launched first.

#cs
Filename: Example1d1
For testing purposes only!!
Modifed the script for emplopyment with Notepad.
#ce
; -----------------------------------------------
#include <AutoItConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; -----------------------------------------------
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
; -----------------------------------------------
Opt("MustDeclareVars", 1)
; ----------------------------------------------
Global $iW = 170, $iH = 45
Global $MainGui2
Global $sColRow
; -----------------------------------------------
_MainGui1()
; -----------------------------------------------
Func _MainGui1()
    GUICreate("_MainGui1", $iW, $iH, 875, -1)
    GUISetFont(14, 800, 0, "Calibri")
    ; -----------------------------------------------
    Local $sCol1Row1 = GUICtrlCreateButton("Add SoundFile", 10, 10, $iW - 20, 25)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                _ExitMe()
            Case $sCol1Row1
                GUICtrlSetState($sCol1Row1, $GUI_DISABLE)
                _MainGui2()
                GUICtrlSetState($sCol1Row1, $GUI_ENABLE)
        EndSwitch
    WEnd
EndFunc   ;==>_MainGui1
; -----------------------------------------------
Func _MainGui2()
    _LaunchNP() ; Add for testing purposes only!!!
    $MainGui2 = GUICreate("", 130, 30, 895, 400, $WS_POPUP, $WS_EX_TOPMOST)
    GUISetFont(14, 800, 0, "Calibri")
    GUISetBkColor(0x3D3D3D)
    ; -----------------------------------------------
    $sColRow = GUICtrlCreateLabel("Enable HotKey", 1, 3, 130, 25, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFFFFFF)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        Switch GUIGetMsg()
            Case $sColRow
                Local $hbHotKeyEnabled = _EnableHotKey()
                If $hbHotKeyEnabled = True Then ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>_MainGui2
; -----------------------------------------------
Func _AccessMenuOption()
    WinActivate("[CLASS:Notepad]", "")
    WinMenuSelectItem("[CLASS:Notepad]", "", "&File", "Page Set&up...")
EndFunc   ;==>_AccessMenuOption
; -----------------------------------------------
Func _EnableHotKey()
    Local Static $hbHotKeyEnabled = True
    ; -----------------------------------------------
    If $hbHotKeyEnabled = True Then
        HotKeySet("{APPSKEY}", "_AccessMenuOption")
        GUICtrlSetData($sColRow, "Disable HotKey")
        GUICtrlSetTip($sColRow, "HotKey is now enabled!")
        $hbHotKeyEnabled = False
        ToolTip("Select [APPSKEY] to add SoundFile!", 852, 232, "HotKey Enabled", 1, $TIP_BALLOON)
        Sleep(1500)
        ToolTip("")
    Else
        HotKeySet("{APPSKEY}")
        GUICtrlSetData($sColRow, "Enable HotKey")
        GUICtrlSetData($sColRow, "")
        GUICtrlSetTip($sColRow, "HotKey is now disabled!")
        GUIDelete($MainGui2)
        $hbHotKeyEnabled = True
        ToolTip("Select [Add SoundFile] to re-enable.", 852, 232, "HotKey Disabled", 1, $TIP_BALLOON)
        Sleep(1500)
        ToolTip("")
    EndIf
    Return $hbHotKeyEnabled
EndFunc   ;==>_EnableHotKey
; -----------------------------------------------
Func _ExitMe()
    GUIDelete()
    Exit
EndFunc   ;==>_ExitMe
; -----------------------------------------------
Func _LaunchNP()
    Local $sSrcAppPath = "C:\Windows\System32\notepad.exe"
    ; -----------------------------------------------
    Run($sSrcAppPath)
    ; -----------------------------------------------
    Sleep(1)
    ; -----------------
    WinMove("[CLASS:Notepad]", "", 835, 200, 250, 250)
EndFunc   ;==>_LaunchNP
; -----------------------------------------------
Edited by mr-es335
Updated script
Posted
Spoiler
#cs
Filename: Example1d1
For testing purposes only!!
Modifed the script for emplopyment with Notepad.
#ce
; -----------------------------------------------
#include <AutoItConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; -----------------------------------------------
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
; -----------------------------------------------
Opt("MustDeclareVars", 1)
; ----------------------------------------------
Global $iW = 170, $iH = 45
Global $MainGui2
Global $sColRow, $sHotKey = "m" ; "{APPSKEY}" ..I don't have that key on my keyboard  =(
; -----------------------------------------------
_MainGui1()
; -----------------------------------------------
Func _MainGui1()
    GUICreate("_MainGui1", $iW, $iH, 875, -1)
    GUISetFont(14, 800, 0, "Calibri")
    ; -----------------------------------------------
    Local $sCol1Row1 = GUICtrlCreateButton("Add SoundFile", 10, 10, $iW - 20, 25)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                _ExitMe()
            Case $sCol1Row1
                GUICtrlSetState($sCol1Row1, $GUI_DISABLE)
                _MainGui2()
                GUICtrlSetState($sCol1Row1, $GUI_ENABLE)
        EndSwitch
    WEnd
EndFunc   ;==>_MainGui1
; -----------------------------------------------
Func _MainGui2()
    _LaunchNP() ; Add for testing purposes only!!!
    $MainGui2 = GUICreate("", 130, 30, 895, 400, $WS_POPUP, $WS_EX_TOPMOST)
    GUISetFont(14, 800, 0, "Calibri")
    GUISetBkColor(0x3D3D3D)
    ; -----------------------------------------------
    $sColRow = GUICtrlCreateLabel("Enable HotKey", 1, 3, 130, 25, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFFFFFF)
    ; -----------------------------------------------
    GUISetState(@SW_SHOW)
    ; -----------------------------------------------
    While 1
        Switch GUIGetMsg()
            Case $sColRow
                Local $hbHotKeyEnabled = _EnableHotKey()
                If $hbHotKeyEnabled = True Then ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>_MainGui2
; -----------------------------------------------
Func _AccessMenuOption()
    WinActivate("[CLASS:Notepad]", "")
    WinMenuSelectItem("[CLASS:Notepad]", "", "&File", "Page Set&up...")
EndFunc   ;==>_AccessMenuOption
; -----------------------------------------------
Func _EnableHotKey()
    Local Static $hbHotKeyEnabled = True
    ; -----------------------------------------------
    If $hbHotKeyEnabled = True Then
        HotKeySet($sHotKey, "_AccessMenuOption")
        GUICtrlSetData($sColRow, "Disable HotKey")
        GUICtrlSetTip($sColRow, "HotKey is now enabled!")
        $hbHotKeyEnabled = False
        ToolTip("Select [APPSKEY] to add SoundFile!", 852, 232, "HotKey Enabled", 1, $TIP_BALLOON)
;~         Sleep(1500)
        AdlibRegister(ToolTipOff, 1500) ; ToolTip("")
    Else
        HotKeySet($sHotKey)
        GUICtrlSetData($sColRow, "Enable HotKey")
        GUICtrlSetData($sColRow, "")
        GUICtrlSetTip($sColRow, "HotKey is now disabled!")
        GUIDelete($MainGui2)
        $hbHotKeyEnabled = True
        ToolTip("Select [Add SoundFile] to re-enable.", 852, 232, "HotKey Disabled", 1, $TIP_BALLOON)
;~         Sleep(1500)
        AdlibRegister(ToolTipOff, 1500) ; ToolTip("")
    EndIf
    Return $hbHotKeyEnabled
EndFunc   ;==>_EnableHotKey
; -----------------------------------------------
Func ToolTipOff() ; AutoiIt3 is single threaded so, this timer/Adlib, will free the
    AdlibUnRegister(ToolTipOff) ; thread so it don have to wait X mSec just to do a: ToolTip("")
    ToolTip("")
EndFunc
; -----------------------------------------------

Func _ExitMe()
    GUIDelete()
    Exit
EndFunc   ;==>_ExitMe
; -----------------------------------------------
Func _LaunchNP()
    Local $sSrcAppPath = @WindowsDir & "\System32\notepad.exe"
    ; -----------------------------------------------
    ShellExecute($sSrcAppPath)
    ; -----------------------------------------------
    WinWait("[CLASS:Notepad]", "", 10) ; wait 10 sec. max. ; Sleep(1)
    ; -----------------
    WinMove("[CLASS:Notepad]", "", 835, 200, 250, 250)
EndFunc   ;==>_LaunchNP
; -----------------------------------------------

image.thumb.png.cfd254fe152a6dd21d8ce05baef94f6e.png

..it looks good I guess. This is what the Task Manager shows and the CPU looks good. So if it does what you coded, is perfect.
I did do change the hotKey as my keyboard does not have that key :(
Also change the window waiting a minimal amount of time to waiting for the window coming into existence.
Also changed the ToolTip("")  to an Adlib to make the script more responsive.

..other than my not-super-important edits, it looks good :)

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Posted (edited)

arugumentum,

You stated, "..well I guess I did, given that my edits are based on your edits, unless you've changed the edit again"...I have not!

Again, "But by just looking at it I see that your edits didn't change so, have you seen my edits ! gash darn it ! " No! I have not "seen these edits"! ! Are these edits in your last example? I do not observer them as such...[with the exception of employing "Return", instead of ExitLoop.]

;Mine:
    While 1
        Switch GUIGetMsg()
            Case $sColRow, $GUI_EVENT_CLOSE
                GUIDelete($MainGui2)
                ExitLoop
        EndSwitch
    WEnd

;Yours:
    While 1
        Switch GUIGetMsg()
            Case $sColRow, $GUI_EVENT_CLOSE
                GUIDelete($MainGui2)
                ConsoleWrite("Returning to Form1" & @CRLF)
                Return "Time in Form2 was: " & @MIN & ':' & @SEC & '.' & @MSEC ; return something back
        EndSwitch
    WEnd

 

Edited by mr-es335
Posted

My edits were in https://www.autoitscript.com/forum/topic/212579-checking-the-return-value-from-a-guicreateguidelete-function/#findComment-1539912
in the Reveal hidden contents.

 

..in any case. I feel aggravated. I will not participate with your coding for a while. Back to the ignore user list.

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Posted (edited)

Why? What have I done? If yo9u fell aggravated..please forgive me...this WAS NOT my intent to do so!

I was NOT aware of the "reveal" functionality!!

PS: Checking reveal...NOW I see your edits! Thanks!!

Func ToolTipOff() ; AutoiIt3 is single threaded so, this timer/Adlib, will free the
    AdlibUnRegister(ToolTipOff) ; thread so it do not have to wait X mSec just to do a: ToolTip("")
    ToolTip("")
EndFunc

"Wow!" And "Wow!"..."Wow!"...

Edited by mr-es335

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...