Текущий архив: 2005.03.06;
Скачать: CL | DM;
Вниз
Приветствую! Всё о старом, TRANSPARENT формы, как? Найти похожие ветки
← →
IronHawk (2005-01-21 14:29) [0]Приветствую всех, особенно тех, кто меня помнит :)
Вот пришлось вспомнить старое и на WinAPI сваять форму, всё хорошо, только форма определённого цветя меня не устраивает, хочу полупрозрачную!
В Д7 ставим свойство у формы AlfaBlend в True, a AlfaBlendValue в 100 и всё работает, но моя на WinAPI.
Делаю так:var
ps : TPaintStruct;
ddc: HDC;
begin
WindowProc := 0;
case Msg of
WM_PAINT :
begin
beginPaint(wnd, ps);
ddc := GetDC(wnd);
SetBkMode(ddc,TRANSPARENT);
releasedc(ddc, wnd);
EndPaint(Wnd, ps);
end;
...
Форма прозрачная, но при перетаскивании не обновляется, а остается с куском фрагмента раб.стола.
Пробовал вариант с GetDesktopWindow, тот же прилок.
Подскажите ПЛИЗ!
← →
Piter © (2005-01-21 14:44) [1]А ты что, переменную совсем уже очистил?
← →
MBo © (2005-01-21 14:51) [2]кусочек из Forms.pas
if FAlphaBlend or FTransparentColor then
begin
if (AStyle and WS_EX_LAYERED) = 0 then
SetWindowLong(Handle, GWL_EXSTYLE, AStyle or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, FTransparentColorValue, FAlphaBlendValue,
cUseAlpha[FAlphaBlend] or cUseColorKey[FTransparentColor]);
end
← →
IronHawk © (2005-01-21 16:44) [3]Я пробовал и GetDesktopWindow и WS_EX_TRANSPARENT но что-то постоянно упускаю.
> MBo © (21.01.05 14:51)
Спасибо, я перед тем как написать в форум просмотрел:
..\Borland\Delphi7\Demos\ActionBands\AlphaBlendMenus\AlphaBlendDemo.dpr
e меня всё в API...
← →
MBo © (2005-01-21 18:29) [4]При создании окна (если оперционка Win2K и выше) нужно включить флаг WS_EX_LAYERED, затем SetLayeredWindowAttributes
Посмотри в MSDN, там пример есть
Страницы: 1 вся ветка
Текущий архив: 2005.03.06;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.039 c