Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26156
Рейтинг: 2127
#151: 2022-02-04 04:10:43 ЛС | профиль | цитата
Прикрутил форме тень (по наводке andrestudio), но только в режимах bsNone, bsBox и bsBoxEdge, этот метод и раньше был, но он че-то коряво работал (пример в архиве). Мне надо, что бы кто-то его протестил в Win7 c Aero и WinXPWinXP не будет Aero-тени, там должна быть простая). В Win10 работает, я проверил, но в Win10 дефолтный Aero отключен самими мелкомягкими.

Редактировалось 7 раз(а), последний 2022-02-04 04:25:59
карма: 22

1
файлы: 1MainForm_112.zip [8.2KB] [538]
Голосовали:andrestudio
Ответов: 5227
Рейтинг: 587
#152: 2022-02-04 08:11:48 ЛС | профиль | цитата
nesco, win7 x32 работает (правда кое какие константы из твоего патча добавить пришлось т.к я его пока не ставил)


Редактировалось 1 раз(а), последний 2022-02-04 08:17:58
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#153: 2022-02-04 10:27:38 ЛС | профиль | цитата
andrestudio писал(а):
win7 x32 работает

Отлично, значит на Aero работает. Но тень точно пожирнее чем у меня:


карма: 22

0
Ответов: 2059
Рейтинг: 132
#154: 2022-02-04 10:28:01 ЛС | профиль | цитата
У меня win7 x64 тени нет.

P.S.
Переходника у меня нет.
Но на старой плате есть все типы разъёмов.
карма: 6

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#155: 2022-02-04 10:33:35 ЛС | профиль | цитата
flint2 писал(а):
У меня win7 x64 тени нет

Очень странно, почему нет, может Aero выключен на уровне системы??? У тебя панель задач прозрачная? Вроде 32-я от 64-й отличаются только разрядностью, основной функционал тот же, да и я использовал оригинальный мелкомягкий DWMAPI.

Редактировалось 1 раз(а), последний 2022-02-04 10:37:10
карма: 22

0
Ответов: 2059
Рейтинг: 132
#156: 2022-02-04 10:37:03 ЛС | профиль | цитата
У тебя панель задач прозрачная?

Нет.
Сейчас буду разбираться пока компьютер не разобрал.
карма: 6

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#157: 2022-02-04 10:38:00 ЛС | профиль | цитата
flint2 писал(а):
Нет

У тебя Aero выключен, вот и нет тени.

--- Добавлено в 2022-02-04 10:54:06

У меня тут тоже возникли некоторые вопросы -- в оригинальном коде чел прописал обработку некоторых событий, которую я не делал, но якобы без нее тень работать не будет, но почему же она тогда работает уже у двоих на разных системах?

Редактировалось 2 раз(а), последний 2022-02-04 10:58:02
карма: 22

0
Ответов: 2059
Рейтинг: 132
#158: 2022-02-04 10:56:20 ЛС | профиль | цитата
Да, всё заработало когда прозрачность поставил.
карма: 6

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#159: 2022-02-04 10:58:28 ЛС | профиль | цитата
flint2 писал(а):
Да, всё заработало когда прозрачность поставил.

ЧТД
карма: 22

0
Ответов: 5227
Рейтинг: 587
#160: 2022-02-04 11:33:29 ЛС | профиль | цитата
nesco, пытаюсь избавится от бордюра в 1 пиксел (мне он нафиг не нужен)

структура у меня такая для вызова DwmExtendFrameIntoClientArea
margins.cxLeftWidth := 0;
margins.cxRightWidth := 0;
margins.cyBottomHeight := 0;
margins.cyTopHeight := 1; // т.е только верхний оставляю его видно если приглядеться, тогда достаточно отрезка PenColor = BrushColor

в WM_NCPAINT на канве KOLGDI рисовать не хочет, буду пробовать API.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#161: 2022-02-04 11:42:04 ЛС | профиль | цитата
andrestudio писал(а):
в WM_NCPAINT на канве KOLGDI рисовать не хочет, буду пробовать API.

Те на контексте DC сообщения WM_NCPAINT не хочет рисовать? А че ты хочешь отрисовать и почему именно WM_NCPAINT?

--- Добавлено в 2022-02-04 11:50:38

А, понял почему WM_NCPAINT, и что ты хочешь отрисовать. Я потом тоже попробую, если что. Но этот сволочной бордюр не хочет отключаться при отключении тени, надо еще найти, как его отключать.

Редактировалось 2 раз(а), последний 2022-02-04 11:50:59
карма: 22

0
Ответов: 5227
Рейтинг: 587
#162: 2022-02-04 11:52:28 ЛС | профиль | цитата
nesco, так то вообще не хочется рисовать ничего, т.к опять траблы с неоднородным фоном будут
Попробую найти обходное решение.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#163: 2022-02-04 13:35:33 ЛС | профиль | цитата
andrestudio, ты это хотел получить:



Прекрасно там работает WM_NCPAINT

Редактировалось 2 раз(а), последний 2022-02-04 13:35:56
карма: 22

0
Ответов: 5227
Рейтинг: 587
#164: 2022-02-04 14:47:41 ЛС | профиль | цитата
nesco, нет. Мне надо иметь возможность отключать этот бордюр при необходимости иначе этот бордюр в один пиксел заметен

Пока играюсь с атрибутами DwmSetWindowAttribute, результат нулевой
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#165: 2022-02-04 15:08:02 ЛС | профиль | цитата
andrestudio писал(а):
Мне надо иметь возможность отключать этот бордюр при необходимости иначе этот бордюр в один пиксел заметен

Дело в том, что в этом режиме вся эта область является клиентской. Закрасить ее проблем нет, как я уже показал. Проблема возникает при наложении на всю эту область графики. В первую очередь, надо сделать эту область не клиентской, а вот это у нас самое сложное, как оказалось. Сейчас я над этим как раз работаю. В ссылке на пример как раз этот участок кода и не расписан, но в VCL он и не нужен, у них все это делает модуль Controls.
andrestudio писал(а):
Мне надо иметь возможность отключать этот бордюр

Ты не отключишь его, те тень без этого бордюра не появится. Его можно только закрасить, но надо сделать то, что я описал.

Редактировалось 1 раз(а), последний 2022-02-04 15:12:30
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)