![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]()
Здравствуйте.
Пишу на Delphi 7 WinAPI. Имею окно класса static со стилем WS_VISIBLE or WS_CHILD or SS_BITMAP or SS_NOTIFY. Нужно сделать это окно шестиугольным: ![]() Читал, что для этого нужно создать несколько регионов и объединить их функцией CombineRegion(). Но не могу понять, как работает последняя и как вообще создать регионы, чтобы получить шестиугольник (или более сложную форму). |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]()
вроде дошло.
а как правильно сделать, чтобы вернуть окно в исходное состояние? Код:
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
SetWindowRgn(Handle, 0, True);
DeleteObject делать не надо. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
посмотрите пример, который рисует окошко в виде шестиконечной звезды.
(код не мой, я только выкладываю ![]() можно перетаскивать, изменять размер, прав.кн.мышки на регионе - About двойной клик по региону звезды - закрытие. p.s. извините, если мой пост "мимо кассы" и бесполезен для Вас... |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]() |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
![]()
Мне нужно изменять регион по таймеру в зависимости от позиции курсора мыши. То есть, после SetWindowRgn не надо удалять регион, а просто заново создавать новый CreateRectRgnIndirect?
Код:
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Если честно - не пробовал а из документации не совсем понятно.
Насколько я понимаю, один раз отдав регион в окно уже не можем с ним работать. Лучше всего протестировать - после задавания второго региона попробовать удалить первый и посмотреть вернет ли DeleteObject ошибку или нет... |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Треугольное окно со сторонами A, B, C. Проверить, пройдёт ли в окно коробка цилиндрической формы (D и H) (паскаль) | ihimaru | Помощь студентам | 5 | 02.10.2011 22:11 |
[?] Послать клавишу в чужое окно, не выводя окно на передний план. | Moriarty | Win Api | 4 | 21.02.2011 05:11 |
Открывать окно печати, окно просмотра и изменять масштаб. | segail | Microsoft Office Excel | 1 | 08.08.2010 19:31 |
Шестиугольное игровое поле | Кронос | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 18.07.2009 12:14 |
«Окно+символ». Создать класс, представляющий окно в текстовом режиме. | RustreX | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.11.2007 19:28 |