Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
[Win32] SetLayeredWindowAttributes/UpdateLayeredWindow 05.11.03 13:21 Число просмотров: 1937
Автор: amirul <Serge> Статус: The Elderman Отредактировано 05.11.03 13:26 Количество правок: 1
|
> Как програмно реализовать subj, а то хочу шелл вроде > LiteStep'a написать (сам незнаю зачем, наверно потому что > LiteStep глючит на 9x =) > Желательно сэмпл для ХР и можно ли самому это сделать в 9Х. Для 9х не знаю. Не уверен, что вообще возможно
Вот пример fade out-а из MSDN-а:
VOID FadeRect(RECT* prc, HDC hdc)
{
BOOL fFade = FALSE;
HWND hwnd;
SIZE size;
POINT ptSrc = {0, 0};
BLENDFUNCTION blend;
// Be nice and respect the user's wishes: Do they want the fade?
SystemParametersInfo(SPI_GETSELECTIONFADE, 0, &fFade, 0);
if (!fFade)
return;
hwnd = CreateWindowEx(WS_EX_LAYERED | // Layered Windows
WS_EX_TRANSPARENT | // Don't hittest this window
WS_EX_TOPMOST | WS_EX_TOOLWINDOW,
gszFade, gszFade, WS_POPUP | WS_VISIBLE, prc->left,
prc->top, 0, 0, NULL, (HMENU)0, ghinst, NULL);
size.cx = prc->right - prc->left;
size.cy = prc->bottom - prc->top;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = gbAlpha;
UpdateLayeredWindow(hwnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);
// Finally set the animation timer
SetTimer(hwnd, ID_TIMER, 25, NULL);
}
---
Subsequently, on a timer the window can fade out by providing the new alpha value:
case WM_TIMER:
{
BLENDFUNCTION blend;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = gbAlpha;
UpdateLayeredWindow(hwnd, NULL, NULL, NULL, NULL, NULL,
NULL, &blend, ULW_ALPHA);
if (gbAlpha > 25) {
gbAlpha -= 25;
} else {
DestroyWindow(hwnd);
}
}
break;
---
|
<programming>
|
[Win32] window Transparency in XP 05.11.03 13:11
Автор: TRESPASSER[CfK] Статус: Незарегистрированный пользователь
|
Как програмно реализовать subj, а то хочу шелл вроде LiteStep'a написать (сам незнаю зачем, наверно потому что LiteStep глючит на 9x =)
Желательно сэмпл для ХР и можно ли самому это сделать в 9Х.
|
|
[Win32] SetLayeredWindowAttributes/UpdateLayeredWindow 05.11.03 13:21
Автор: amirul <Serge> Статус: The Elderman Отредактировано 05.11.03 13:26 Количество правок: 1
|
> Как програмно реализовать subj, а то хочу шелл вроде > LiteStep'a написать (сам незнаю зачем, наверно потому что > LiteStep глючит на 9x =) > Желательно сэмпл для ХР и можно ли самому это сделать в 9Х. Для 9х не знаю. Не уверен, что вообще возможно
Вот пример fade out-а из MSDN-а:
VOID FadeRect(RECT* prc, HDC hdc)
{
BOOL fFade = FALSE;
HWND hwnd;
SIZE size;
POINT ptSrc = {0, 0};
BLENDFUNCTION blend;
// Be nice and respect the user's wishes: Do they want the fade?
SystemParametersInfo(SPI_GETSELECTIONFADE, 0, &fFade, 0);
if (!fFade)
return;
hwnd = CreateWindowEx(WS_EX_LAYERED | // Layered Windows
WS_EX_TRANSPARENT | // Don't hittest this window
WS_EX_TOPMOST | WS_EX_TOOLWINDOW,
gszFade, gszFade, WS_POPUP | WS_VISIBLE, prc->left,
prc->top, 0, 0, NULL, (HMENU)0, ghinst, NULL);
size.cx = prc->right - prc->left;
size.cy = prc->bottom - prc->top;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = gbAlpha;
UpdateLayeredWindow(hwnd, NULL, NULL, &size, hdc, &ptSrc, 0,
&blend, ULW_ALPHA);
// Finally set the animation timer
SetTimer(hwnd, ID_TIMER, 25, NULL);
}
---
Subsequently, on a timer the window can fade out by providing the new alpha value:
case WM_TIMER:
{
BLENDFUNCTION blend;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = 0;
blend.SourceConstantAlpha = gbAlpha;
UpdateLayeredWindow(hwnd, NULL, NULL, NULL, NULL, NULL,
NULL, &blend, ULW_ALPHA);
if (gbAlpha > 25) {
gbAlpha -= 25;
} else {
DestroyWindow(hwnd);
}
}
break;
---
|
|
|