Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Убрать рамку окна Win10


dmk ©   (16.01.19 19:43

Всем привет! Как убрать голубую рамку окна в Windows 10?
Как здесь: https://hostingkartinok.com/show-image.php?id=2a321c4d40f6bbf02179af63521685e1

Перепробовал все варианты WS_EX_STYLE и WS_STYLE. Но что то ничего не происходит. Работает только вариант WS_EX_TOOLWINDOW, но мне хочется сохранить системное меню сверху. Подскажите кто знает?!


Сапёр   (17.01.19 00:17[1]

эм... Это такая тема оформления, активное окно - вот такое вот. Смысл убирать?
Ну если так сильно хочется - можно пробовать перекрыть WM_NCPAINT и/или сопутствующие.


dmk ©   (17.01.19 09:55[2]

Да уже все перепробовал. Она через DWM рисуется. Думал через SetWindowLong убрать как обычно, но ни на один Extended-стиль не реагирует. Только через WS_EX_TOOLWINDOW убирается, но мне системное меню нужно оставить. В TOOLWINDOW только крестик для закрытия окна остается.


dmk ©   (17.01.19 10:17[3]

Вот так убирается отрисовка окна через DWM. Окно становится похожим на Win7-окно.
https://hostingkartinok.com/show-image.php?id=6e7598fb3de887ab98271588a216d915
procedure TGLForm.WMNCPaint(var Msg: TWMNCPaint);
var
 Style: DWord;

begin
 Style := GetWindowLong(Handle, GWL_EXSTYLE);
 Style := Style and not WS_EX_CLIENTEDGE;
 SetWindowLong(Handle, GWL_EXSTYLE, Style);

 Msg.Result := S_OK;
end;

Как саму рамку убрать пока не понимаю.


Сапёр   (18.01.19 21:33[4]

Это тема оформления говорю. И это как бы не совсем DWM, это старый добрый STYLE/EXSTYLE. Только зачем SetWindowLong() в каждом OnPaint? о___О

Задача-то в чём? При одной теме будет рисоваться рамка 1px, при другой тебе не будет рисоваться рамка, при третьей будет рамка вообще 5px. Как вы определите программно что там рисуется не то что вы хотите? Только самому рисовать, только это даст гарантии...


Сапёр   (18.01.19 21:33[5]

теме *


dmk ©   (18.01.19 22:11[6]

>Только самому рисовать, только это даст гарантии...
Да не вопрос, только как убрать бордюр?


Сапёр   (19.01.19 00:23[7]

так... Ну вообще для начала - Aero и более новые хрени могут по умолчанию не позволять рисовать на NC, их надо сперва явно попросить...
И возможно что вам уже этого будет достаточно:

... { OnCreate or OnReCreate or OnCreateWnd or OnReCreateWnd or OnCreateHandle or e.t.c. };
var policy: DWMNCRENDERINGPOLICY { or DWORD };
begin
policy:=DWMNCRP_DISABLED { or 1 };
DwmSetWindowAttribute(Handle, DWMWA_NCRENDERING_POLICY, @policy, SizeOf(policy));
end;


Остальное тут: http://www.delphisources.ru/pages/faq/base/draw_on_form_border.html


Сапёр   (19.01.19 15:46[8]

Пардон, совсем склероз одолел, ещё такой вот вариант:
... { OnCreate or OnReCreate or OnCreateWnd or OnReCreateWnd or OnCreateHandle or e.t.c. };
var allow: BOOL;
begin
allow:=True;
DwmSetWindowAttribute(Handle, DWMWA_ALLOW_NCPAINT, @allow, SizeOf(allow));
end;

// + regular WM_NCPAINT handler


dmk ©   (29.01.19 23:46[9]

>Пардон, совсем склероз одолел, ещё такой вот вариант:
Вы не поверите. Windows обновился до версии 1809, и теперь DWM не рисует эту чертову рамку. Ее просто нет. Красота. Биться не с чем ;)


dmk ©   (29.01.19 23:55[10]

Теперь окна выглядят так:
https://hostingkartinok.com/show-image.php?id=88b15b4307e68cede95706ba2f7f2fb1


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо