Translator.js - for those who do not use transparency we can remove black flicker.
Code: Select all
0x00080000, //dwExStyle: WS_EX_LAYERED
Code: Select all
0, //dwExStyle
Code: Select all
function SetOpaqueLevel(hWnd, nLevel)
{
var lpBuf;
if (nLevel < 0)
{
lpBuf = AkelPad.MemAlloc(1);
if (oSys.Call("user32::GetLayeredWindowAttributes", hWnd, 0, lpBuf, 0))
{
nOpaque = AkelPad.MemRead(lpBuf, 5 /*DT_BYTE*/);
nOpaque += (nLevel == -1) ? 20 : -20;
}
AkelPad.MemFree(lpBuf);
}
if (nOpaque > 255)
nOpaque = 255;
else if (nOpaque < 55)
nOpaque = 55;
oSys.Call("user32::SetLayeredWindowAttributes", hWnd, 0, nOpaque, 2 /*LWA_ALPHA*/);
}
Code: Select all
function SetOpaqueLevel(hWnd, nLevel)
{
var lpBuf;
var dwStyle;
if (nLevel < 0)
{
lpBuf = AkelPad.MemAlloc(1);
if (oSys.Call("user32::GetLayeredWindowAttributes", hWnd, 0, lpBuf, 0))
nOpaque = AkelPad.MemRead(lpBuf, 5 /*DT_BYTE*/);
else
nOpaque = 255;
nOpaque += (nLevel == -1) ? 20 : -20;
AkelPad.MemFree(lpBuf);
}
if (nOpaque > 255)
nOpaque = 255;
else if (nOpaque < 55)
nOpaque = 55;
//WS_EX_LAYERED style
dwStyle=oSys.Call("user32::GetWindowLong" + _TCHAR, hWnd, -20 /*GWL_EXSTYLE*/);
if (nOpaque == 255)
{
if (dwStyle & 0x00080000 /*WS_EX_LAYERED*/)
{
dwStyle&=~0x00080000 /*WS_EX_LAYERED*/;
oSys.Call("user32::SetWindowLong" + _TCHAR, hWnd, -20 /*GWL_EXSTYLE*/, dwStyle);
}
}
else
{
if (!(dwStyle & 0x00080000 /*WS_EX_LAYERED*/))
{
dwStyle|=0x00080000 /*WS_EX_LAYERED*/;
oSys.Call("user32::SetWindowLong" + _TCHAR, hWnd, -20 /*GWL_EXSTYLE*/, dwStyle);
}
}
if (dwStyle & 0x00080000 /*WS_EX_LAYERED*/)
oSys.Call("user32::SetLayeredWindowAttributes", hWnd, 0, nOpaque, 2 /*LWA_ALPHA*/);
}