Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вернуть прямоугольную форму из непрямоугольной? [D7, WinXP]


Dmitry_04 ©   (2005-02-08 18:12:00) 

Как вернуть прямоугольную форму из непрямоугольной? У меня вид формы создается функцией "SetWindowRgn".


Dmitry_04   (2005-02-09 14:17:00) [1]

???


Dmitry_04   (2005-02-09 07:42:00) [2]

Я бы тоже так хотел... чтобы форма менялась "плавно"... Подскажите как это сделать.


nnm   (2005-02-09 00:05:00) [3]

А можно ли это сделать покрасивее? Т.е. например чтобы форма иссчезла и появилась в новом обличии или плавно изменилась из одной в другую...
Я тут попробовал сделать на иссчезновение и появление:

AnimateWindow (Form1.Handle, 50, AW_BLEND or AW_HIDE);

...//изменение

AnimateWindow (Form1.Handle, 50, AW_BLEND);

Только это как-то не очень... форма изчезает, а появляется не измененной... а потом как появится быстро перерисовывается...


Юрий Зотов   (2005-02-08 21:33:00) [4]

> Dmitry_04   (08.02.05 21:16) [7]

Только без Client. Это же будет регион ВСЕГО окна, а не его клиентской области.


Dmitry_04   (2005-02-08 21:16:00) [5]

Юрий ЗотовВы имеете ввиду так?

CreateRectRgn(0, 0, Form1.ClientWidth, Form1.ClientHeight);


Юрий Зотов   (2005-02-08 21:09:00) [6]

ИМХО, сохранить старый регион может и не получиться. Регионами окон владеет система, поэтому после вызова SetWindowRgn старый регион может быть уничтожен и его запомненный хэндл окажется недействителен (если только система не ведет счетчики пользователей оконных регионов).

Надежнее создавать новый регион и вновь назначать его окну.


Dmitry_04   (2005-02-08 20:30:00) [7]

может есть какянибудь функция перерисовывания формы?


Dmitry_04   (2005-02-08 19:57:00) [8]

сделал я через GetWindowRgn вроде все получилось... но я заметил вот что: у меня WinXP а там окна по углам закругленные и прозрачные, а тут они черные...

VMcLА к чему CreateRectRgn прибавлять? Я что-то не очень понял...


VMcL   (2005-02-08 19:03:00) [9]

+ CreateRectRgn()


begin...end   (2005-02-08 18:35:00) [10]

> Dmitry_04   (08.02.05 18:12)

Вероятно, перед вызовом SetWindowRgn можно сохранить старый регион, получив его с помощью функции GetWindowRgn.


Defunct   (2005-02-08 18:32:00) [11]

Не создавать с помощью SetWindowRgn вернется к прямоугольному виду.


Наверх

Титульная страница Поиск, карта сайта Написать письмо