Jump to content

[SOLVED] Transparent Control Background


Recommended Posts

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 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

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.

#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

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.

#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 :party:. 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

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 :party: . 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 :idea:

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.

#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
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

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 :party:

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 :)

#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

-_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë.

Link to comment
Share on other sites

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

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: Flashes

Installed on Vista x32 and XP x64 with IE7: No flashing

Wonder 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

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 :)

-_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë 맧ëñ§ë øƒ !ïƒë.

Link to comment
Share on other sites

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
 Share

  • Recently Browsing   0 members

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