zackrspv Posted May 11, 2009 Share Posted May 11, 2009 (edited) I have searched through many posts about transparent controls, transparent+control, backdrops, etc, and my brain is quite fried at the moment lol. What i would like to accomplish, is to have the ability to control the BACKDROP of a control to a specified transparency level. Not the ENTIRE control, just the backdrop. An example would be XChat's windows, for example, where you can make the background color semi transparent to show part of the desktop through the window, but the text in the control is still quite visible, and not transparent. Many of the posts here, esp the transparent ones, deal with making the entire control transparent. There is the WS_EX_Transparent extended style, but it doesn't work for all types of controls. Edits, for example, still have a white background, but no border when using that control. And even sending a redraw command using WinApi doesn't quite fill the necessary transparent look. I know it is possible to accomplish this, but how? Edited May 13, 2009 by zackrspv -_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë. Link to comment Share on other sites More sharing options...
martin Posted May 11, 2009 Share Posted May 11, 2009 I have searched through many posts about transparent controls, transparent+control, backdrops, etc, and my brain is quite fried at the moment lol. What i would like to accomplish, is to have the ability to control the BACKDROP of a control to a specified transparency level. Not the ENTIRE control, just the backdrop. An example would be XChat's windows, for example, where you can make the background color semi transparent to show part of the desktop through the window, but the text in the control is still quite visible, and not transparent. Many of the posts here, esp the transparent ones, deal with making the entire control transparent. There is the WS_EX_Transparent extended style, but it doesn't work for all types of controls. Edits, for example, still have a white background, but no border when using that control. And even sending a redraw command using WinApi doesn't quite fill the necessary transparent look. I know it is possible to accomplish this, but how?The easiest way I think is to have 2 windows. One which is transparent, or has some transparent areas, and a window below with th ebackground you want which has the semi transparent property. Here is an example of what I mean. expandcollapse popup#include <GUIConstants.au3> #include <windowsconstants.au3> #region - GUI Create Global $Topx = 300,$Topy = 400,$extMsg Global $Plusx = 15, $Plusy = 70 Global $gui1 = GUICreate("Parent GUI", 300, 300, $Topx, $Topy) GUISetFont(6) GUICtrlCreatePic(@SystemDir & "\oobe\images\mslogo.jpg", 0, 0, 300, 300) GUISetState() ;create layered window so we can have a transparent colour which will be applied to edit background as well as the window Global $gui2 = GUICreate("child", 200, 250, $Topx + 15,$Topy + 70, $WS_POPUP, BitOR(0x2000000, $WS_EX_LAYERED));$WS_EX_COMPOSITED = 0x2000000 GUICtrlCreateEdit("", 0, 0, 200, 250) GUICtrlSetFont(-1,16) GUICtrlSetBkColor(-1, 0xABCDEF);set background to a special colour $text = FileRead(@ScriptFullPath) GUICtrlSetData(-1, $text) _API_SetLayeredWindowAttributes($gui2,0xABCDEF,255);set special colour fully transparent GUISetState() winsetontop($gui2,'',1) GUIRegisterMsg($WM_MOVE,"Follow") #endregion WinSetTrans($gui1,"",120) #region - GUI SelectLoop While 1 $extMsg = GUIGetMsg(1) $msg = $extMsg[0] Switch $extMsg[1] Case $gui1 Select Case $msg = $GUI_EVENT_CLOSE Exit EndSelect EndSwitch WEnd #endregion ;=============================================================================== ; ; Function Name: _API_SetLayeredWindowAttributes ; Description:: Sets Layered Window Attributes:) See MSDN for more informaion ; Parameter(s): ; $hwnd - Handle of GUI to work on ; $i_transcolor - Transparent color ; $Transparency - Set Transparancy of GUI ; $isColorRef - If True, $i_transcolor is a COLORREF-Strucure, else an RGB-Color ; Requirement(s): Layered Windows ; Return Value(s): Success: 1 ; Error: 0 ; @error: 1 to 3 - Error from DllCall ; @error: 4 - Function did not succeed - use ; _WinAPI_GetLastErrorMessage or _WinAPI_GetLastError to get more information ; Author(s): Prog@ndy ; ;=============================================================================== ; Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False) Local Const $AC_SRC_ALPHA = 1 Local Const $ULW_ALPHA = 2 Local Const $LWA_ALPHA = 0x2 Local Const $LWA_COLORKEY = 0x1 If Not $isColorRef Then $i_transcolor = Hex(String($i_transcolor), 6) $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2)) EndIf Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA) Select Case @error Return SetError(@error, 0, 0) Case $Ret[0] = 0 Return SetError(4, 0, 0) Case Else Return 1 EndSelect EndFunc ;==>_API_SetLayeredWindowAttributes Func Follow($hWnd) Local $wp = WinGetPos($gui1) If $hWnd = $gui1 then WinMove($gui2,"",$wp[0] + $Plusx, $wp[1] + $Plusy) EndFunc Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
zackrspv Posted May 11, 2009 Author Share Posted May 11, 2009 The easiest way I think is to have 2 windows. One which is transparent, or has some transparent areas, and a window below with th ebackground you want which has the semi transparent property. Here is an example of what I mean. expandcollapse popup#include <GUIConstants.au3> #include <windowsconstants.au3> #region - GUI Create Global $Topx = 300,$Topy = 400,$extMsg Global $Plusx = 15, $Plusy = 70 Global $gui1 = GUICreate("Parent GUI", 300, 300, $Topx, $Topy) GUISetFont(6) GUICtrlCreatePic(@SystemDir & "\oobe\images\mslogo.jpg", 0, 0, 300, 300) GUISetState() ;create layered window so we can have a transparent colour which will be applied to edit background as well as the window Global $gui2 = GUICreate("child", 200, 250, $Topx + 15,$Topy + 70, $WS_POPUP, BitOR(0x2000000, $WS_EX_LAYERED));$WS_EX_COMPOSITED = 0x2000000 GUICtrlCreateEdit("", 0, 0, 200, 250) GUICtrlSetFont(-1,16) GUICtrlSetBkColor(-1, 0xABCDEF);set background to a special colour $text = FileRead(@ScriptFullPath) GUICtrlSetData(-1, $text) _API_SetLayeredWindowAttributes($gui2,0xABCDEF,255);set special colour fully transparent GUISetState() winsetontop($gui2,'',1) GUIRegisterMsg($WM_MOVE,"Follow") #endregion WinSetTrans($gui1,"",120) #region - GUI SelectLoop While 1 $extMsg = GUIGetMsg(1) $msg = $extMsg[0] Switch $extMsg[1] Case $gui1 Select Case $msg = $GUI_EVENT_CLOSE Exit EndSelect EndSwitch WEnd #endregion ;=============================================================================== ; ; Function Name: _API_SetLayeredWindowAttributes ; Description:: Sets Layered Window Attributes:) See MSDN for more informaion ; Parameter(s): ; $hwnd - Handle of GUI to work on ; $i_transcolor - Transparent color ; $Transparency - Set Transparancy of GUI ; $isColorRef - If True, $i_transcolor is a COLORREF-Strucure, else an RGB-Color ; Requirement(s): Layered Windows ; Return Value(s): Success: 1 ; Error: 0 ; @error: 1 to 3 - Error from DllCall ; @error: 4 - Function did not succeed - use ; _WinAPI_GetLastErrorMessage or _WinAPI_GetLastError to get more information ; Author(s): Prog@ndy ; ;=============================================================================== ; Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False) Local Const $AC_SRC_ALPHA = 1 Local Const $ULW_ALPHA = 2 Local Const $LWA_ALPHA = 0x2 Local Const $LWA_COLORKEY = 0x1 If Not $isColorRef Then $i_transcolor = Hex(String($i_transcolor), 6) $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2)) EndIf Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA) Select Case @error Return SetError(@error, 0, 0) Case $Ret[0] = 0 Return SetError(4, 0, 0) Case Else Return 1 EndSelect EndFunc;==>_API_SetLayeredWindowAttributes Func Follow($hWnd) Local $wp = WinGetPos($gui1) If $hWnd = $gui1 then WinMove($gui2,"",$wp[0] + $Plusx, $wp[1] + $Plusy) EndFunc That's actually the one i just stumbled upon during a search of Transparent+Edit lol. So, i'm hacking that one apart, to see if i can make it a stand alone UDF for my script, so i can call a multitude of controls against it. So far, so good, but still some do not respond to the transparency. For example, Edits, Lists, ListViews, etc, all work great, even combos . But, Embeded IE windows do not even come close to responding to it. I assume this is because the screen doesn't take the 'BKColor' command that we have in there as a special color. Think we can come up witha methodology to make an embeded IE window transparent background? My whole point behind doing this is coding for a Jabber application in Autoit. I have most of it done, just working on the layouts now. But, as i use custom UI elements, images, etc, I dont want to see basic VB application controls (no white backgrounds, etc), I need them to be transparent, so that the UI window (which is just a pic), is able to have the data ontop of it -_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë. Link to comment Share on other sites More sharing options...
martin Posted May 11, 2009 Share Posted May 11, 2009 That's actually the one i just stumbled upon during a search of Transparent+Edit lol. So, i'm hacking that one apart, to see if i can make it a stand alone UDF for my script, so i can call a multitude of controls against it. So far, so good, but still some do not respond to the transparency. For example, Edits, Lists, ListViews, etc, all work great, even combos . But, Embeded IE windows do not even come close to responding to it. I assume this is because the screen doesn't take the 'BKColor' command that we have in there as a special color. Think we can come up witha methodology to make an embeded IE window transparent background? My whole point behind doing this is coding for a Jabber application in Autoit. I have most of it done, just working on the layouts now. But, as i use custom UI elements, images, etc, I dont want to see basic VB application controls (no white backgrounds, etc), I need them to be transparent, so that the UI window (which is just a pic), is able to have the data ontop of it I probably should have found a link to that rather than post it again. I'm not optimistic that you can make explorer have a transparent background though You could try this but I don't know how reliable it would be or whether it would suit waht you want. To run it you need to have IE running, and the title must include "Windows Internet Explorer" otherwise you need to change it in the example. If the background of the page you are looking at is mainly white then you will see some effect. I tried it on this url. expandcollapse popup#include <GUIConstantsEx.au3> #include <windowsconstants.au3> #include <winapi.au3> #include <constants.au3> Opt("WinTitleMatchMode",2) $hG = wingethandle("Windows Internet Explorer") ConsoleWrite($hg & @CRLF) $ExStyle = _WinAPI_GetWindowLong($hG, $GWL_EXSTYLE) _WinAPI_SetWindowLong($hG, $GWL_EXSTYLE, BitOr($ExStyle,$WS_EX_LAYERED)) _API_SetLayeredWindowAttributes($hg,0xFFFFFF,255);set special colour fully transparent ;=============================================================================== ; ; Function Name: _API_SetLayeredWindowAttributes ; Description:: Sets Layered Window Attributes:) See MSDN for more informaion ; Parameter(s): ; $hwnd - Handle of GUI to work on ; $i_transcolor - Transparent color ; $Transparency - Set Transparancy of GUI ; $isColorRef - If True, $i_transcolor is a COLORREF-Strucure, else an RGB-Color ; Requirement(s): Layered Windows ; Return Value(s): Success: 1 ; Error: 0 ; @error: 1 to 3 - Error from DllCall ; @error: 4 - Function did not succeed - use ; _WinAPI_GetLastErrorMessage or _WinAPI_GetLastError to get more information ; Author(s): Prog@ndy ; ;=============================================================================== ; Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False) Local Const $AC_SRC_ALPHA = 1 Local Const $ULW_ALPHA = 2 Local Const $LWA_ALPHA = 0x2 Local Const $LWA_COLORKEY = 0x1 If Not $isColorRef Then $i_transcolor = Hex(String($i_transcolor), 6) $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2)) EndIf Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA) Select Case @error Return SetError(@error, 0, 0) Case $Ret[0] = 0 Return SetError(4, 0, 0) Case Else Return 1 EndSelect EndFunc;==>_API_SetLayeredWindowAttributes mesale0077 1 Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
zackrspv Posted May 12, 2009 Author Share Posted May 12, 2009 I probably should have found a link to that rather than post it again. I'm not optimistic that you can make explorer have a transparent background though You could try this but I don't know how reliable it would be or whether it would suit waht you want. To run it you need to have IE running, and the title must include "Windows Internet Explorer" otherwise you need to change it in the example. If the background of the page you are looking at is mainly white then you will see some effect. I tried it on this url. So, using the information you have provided me, I adapted the following to create a UI, set it's back color, create an embeded IE window, change it to transparent, and add colored text to it using XSKinText; however, one very undesierable side effect: 'It flashes on text input'. How best to fix that particular problem? If i can get it to stop flashing when it updates, then it'd be awesome for my program expandcollapse popup#include <GUIConstantsEx.au3> #include <windowsconstants.au3> #include <winapi.au3> #include <constants.au3> #include <IE.au3> Global $Topx =70,$Topy = 30,$extMsg Global $Plusx = 15, $Plusy = 70 Global $gui1 = GUICreate("Parent GUI", 773, 550, -1, -1) GUISetBkColor(0x2c3b4a) GUISetState() ;create layered window so we can have a transparent colour which will be applied to edit background as well as the window Global $gui2 = GUICreate("child",684, 368, -1, -1, $Ws_POPUP, BitOR(0x2000000, $WS_EX_LAYERED), $gui1) $XT_oIE = _IECreateEmbedded() $Obj_RCV = GUICtrlCreateObj($XT_oIE, 0, 0, 684, 368) _IENavigate($XT_oIE, "about:blank") $head = "" DefineHead() _IEDocWriteHTML($XT_oIE, "<HTML><HEAD>" & $head & "</HEAD><body bgcolor='Silver'></BODY></HTML>") $oBody = _IETagNameGetCollection($XT_oIE, "body", 0) _API_SetLayeredWindowAttributes($gui2,0xC0c0c0,255);set special colour fully transparent GUISetState() winsetontop($gui2,'',1) GUIRegisterMsg($WM_MOVE,"Follow") #endregion sleep(300) XSkinText("Connected.", "yellow", "3") sleep(Random(300, 1900)) XSkinText("<hr/>", "red", "5") $c = 0 while 1 $c += 1 if $c > 9 then ExitLoop sleep(Random(300, 1300)) XSkinText("And this is test #: "&int(Random(1, 2300)), "white", "3") WEnd XSkinText("<hr/>", "red", "5") XSkinText("Disconnected.", "red", "3") #region - GUI SelectLoop While 1 $extMsg = GUIGetMsg(1) $msg = $extMsg[0] Switch $extMsg[1] Case $gui1 Select Case $msg = $GUI_EVENT_CLOSE Exit EndSelect EndSwitch WEnd #endregion ;=============================================================================== ; ; Function Name: _API_SetLayeredWindowAttributes ; Description:: Sets Layered Window Attributes:) See MSDN for more informaion ; Parameter(s): ; $hwnd - Handle of GUI to work on ; $i_transcolor - Transparent color ; $Transparency - Set Transparancy of GUI ; $isColorRef - If True, $i_transcolor is a COLORREF-Strucure, else an RGB-Color ; Requirement(s): Layered Windows ; Return Value(s): Success: 1 ; Error: 0 ; @error: 1 to 3 - Error from DllCall ; @error: 4 - Function did not succeed - use ; _WinAPI_GetLastErrorMessage or _WinAPI_GetLastError to get more information ; Author(s): Prog@ndy ; ;=============================================================================== Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False) Local Const $AC_SRC_ALPHA = 1 Local Const $ULW_ALPHA = 2 Local Const $LWA_ALPHA = 0x2 Local Const $LWA_COLORKEY = 0x1 If Not $isColorRef Then $i_transcolor = Hex(String($i_transcolor), 6) $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2)) EndIf Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA) Select Case @error Return SetError(@error, 0, 0) Case $Ret[0] = 0 Return SetError(4, 0, 0) Case Else Return 1 EndSelect EndFunc;==>_API_SetLayeredWindowAttributes Func Follow($hWnd) Local $wp = WinGetPos($gui1) If $hWnd = $gui1 then WinMove($gui2,"",$wp[0]+$Topy , $wp[1]+$Topx) EndFunc Func DefineHead() $head = '<script language="javascript">' & @CRLF $head = $head & "<!--" & @CRLF $head = $head & " var state = 'none';" & @CRLF $head = $head & "function showhide(layer_ref) {" & @CRLF $head = $head & "if (state == 'block') {" & @CRLF $head = $head & "state = 'none';" & @CRLF $head = $head & "}" & @CRLF $head = $head & "else {" & @CRLF $head = $head & "state = 'block';" & @CRLF $head = $head & "}" & @CRLF $head = $head & "if (document.all) {" & @CRLF $head = $head & 'eval( " document.all." + layer_ref + " .style.display = state");' & @CRLF $head = $head & "}" & @CRLF $head = $head & "if (document.layers) {" & @CRLF $head = $head & "document.layers[layer_ref].display = state;" & @CRLF $head = $head & "}" & @CRLF $head = $head & "if (document.getElementById &&!document.all) {" & @CRLF $head = $head & "hza = document.getElementById(layer_ref);" & @CRLF $head = $head & "hza.style.display = state;" & @CRLF $head = $head & "}" & @CRLF $head = $head & "}" & @CRLF $head = $head & "//-->" & @CRLF $head = $head & "</script>" & @CRLF EndFunc ;==>DefineHead Func XSkinText($msg = "", $color = "black", $size = "3") $sAppend = '<font color="' & $color & '" size=' & $size & '>' & $msg & '</font><br>' _IEDocInsertHTML($oBody, $sAppend) $shtmld = _IEDocReadHTML($XT_oIE) $iVisibleHeight = $XT_oIE.document.body.scrollHeight $XT_oIE.document.parentwindow.scrollBy(0, $iVisibleHeight) EndFunc ;==>XSkinText mesale0077 1 -_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë. Link to comment Share on other sites More sharing options...
martin Posted May 12, 2009 Share Posted May 12, 2009 So, using the information you have provided me, I adapted the following to create a UI, set it's back color, create an embeded IE window, change it to transparent, and add colored text to it using XSKinText; however, one very undesierable side effect: 'It flashes on text input'. How best to fix that particular problem? If i can get it to stop flashing when it updates, then it'd be awesome for my program If I run the code you posted I don't see any flashing. I'm using AutoIt 3.3.0.0 on XP SP3. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
zackrspv Posted May 12, 2009 Author Share Posted May 12, 2009 If I run the code you posted I don't see any flashing. I'm using AutoIt 3.3.0.0 on XP SP3.Twould appear my issue is with IE8:Installed on Vista x64 and x32 with IE8: FlashesInstalled on Vista x32 and XP x64 with IE7: No flashingWonder why -_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë. Link to comment Share on other sites More sharing options...
zackrspv Posted May 13, 2009 Author Share Posted May 13, 2009 Twould appear my issue is with IE8: Installed on Vista x64 and x32 with IE8: Flashes Installed on Vista x32 and XP x64 with IE7: No flashing Wonder why Fixed: Global $gui2 = GUICreate("child",684, 368,-1, -1, $WS_OVERLAPPED+$WS_POPUP, $WS_EX_LAYERED, $gui1) Now, it doesn't flash anymore mesale0077 1 -_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now