Прикрутил форме тень (по наводке andrestudio), но только в режимах bsNone, bsBox и bsBoxEdge, этот метод и раньше был, но он че-то коряво работал (пример в архиве). Мне надо, что бы кто-то его протестил в Win7 c Aero и WinXP (в WinXP не будет Aero-тени, там должна быть простая). В Win10 работает, я проверил, но в Win10 дефолтный Aero отключен самими мелкомягкими.
Редактировалось 7 раз(а), последний 2022-02-04 04:25:59
Этот топик читают: Гость
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
карма: 22 |
| ||
файлы: 1 | MainForm_112.zip [8.2KB] [527] | ||
Голосовали: | andrestudio |
Ответов: 5227
Рейтинг: 587
|
|||
nesco, win7 x32 работает (правда кое какие константы из твоего патча добавить пришлось т.к я его пока не ставил)
Редактировалось 1 раз(а), последний 2022-02-04 08:17:58 |
|||
карма: 4 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
andrestudio писал(а): win7 x32 работаетОтлично, значит на Aero работает. Но тень точно пожирнее чем у меня: |
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
У меня win7 x64 тени нет.
P.S. Переходника у меня нет. Но на старой плате есть все типы разъёмов. |
|||
карма: 6 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
flint2 писал(а): У меня win7 x64 тени нетОчень странно, почему нет, может Aero выключен на уровне системы??? У тебя панель задач прозрачная? Вроде 32-я от 64-й отличаются только разрядностью, основной функционал тот же, да и я использовал оригинальный мелкомягкий DWMAPI. Редактировалось 1 раз(а), последний 2022-02-04 10:37:10 |
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
У тебя панель задач прозрачная?
Нет. Сейчас буду разбираться пока компьютер не разобрал. |
|||
карма: 6 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
flint2 писал(а): НетУ тебя Aero выключен, вот и нет тени. --- Добавлено в 2022-02-04 10:54:06 У меня тут тоже возникли некоторые вопросы -- в оригинальном коде чел прописал обработку некоторых событий, которую я не делал, но якобы без нее тень работать не будет, но почему же она тогда работает уже у двоих на разных системах? Редактировалось 2 раз(а), последний 2022-02-04 10:58:02 |
|||
карма: 22 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Да, всё заработало когда прозрачность поставил.
|
|||
карма: 6 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
flint2 писал(а): Да, всё заработало когда прозрачность поставил.ЧТД |
|||
карма: 22 |
|
Ответов: 5227
Рейтинг: 587
|
|||
nesco, пытаюсь избавится от бордюра в 1 пиксел (мне он нафиг не нужен)
структура у меня такая для вызова DwmExtendFrameIntoClientArea margins.cxLeftWidth := 0; margins.cxRightWidth := 0; margins.cyBottomHeight := 0; margins.cyTopHeight := 1; // т.е только верхний оставляю его видно если приглядеться, тогда достаточно отрезка PenColor = BrushColor в WM_NCPAINT на канве KOLGDI рисовать не хочет, буду пробовать API. |
|||
карма: 4 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
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 |
|
Ответов: 5227
Рейтинг: 587
|
|||
nesco, так то вообще не хочется рисовать ничего, т.к опять траблы с неоднородным фоном будут
Попробую найти обходное решение. |
|||
карма: 4 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
andrestudio, ты это хотел получить:
Прекрасно там работает WM_NCPAINT Редактировалось 2 раз(а), последний 2022-02-04 13:35:56 |
|||
карма: 22 |
|
Ответов: 5227
Рейтинг: 587
|
|||
nesco, нет. Мне надо иметь возможность отключать этот бордюр при необходимости иначе этот бордюр в один пиксел заметен
Пока играюсь с атрибутами DwmSetWindowAttribute, результат нулевой |
|||
карма: 4 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
andrestudio писал(а): Мне надо иметь возможность отключать этот бордюр при необходимости иначе этот бордюр в один пиксел заметенДело в том, что в этом режиме вся эта область является клиентской. Закрасить ее проблем нет, как я уже показал. Проблема возникает при наложении на всю эту область графики. В первую очередь, надо сделать эту область не клиентской, а вот это у нас самое сложное, как оказалось. Сейчас я над этим как раз работаю. В ссылке на пример как раз этот участок кода и не расписан, но в VCL он и не нужен, у них все это делает модуль Controls. andrestudio писал(а): Мне надо иметь возможность отключать этот бордюрТы не отключишь его, те тень без этого бордюра не появится. Его можно только закрасить, но надо сделать то, что я описал. Редактировалось 1 раз(а), последний 2022-02-04 15:12:30 |
|||
карма: 22 |
|