|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.02.2014, 11:52 | #1 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Шестиугольное окно
Здравствуйте.
Пишу на Delphi 7 WinAPI. Имею окно класса static со стилем WS_VISIBLE or WS_CHILD or SS_BITMAP or SS_NOTIFY. Нужно сделать это окно шестиугольным: Читал, что для этого нужно создать несколько регионов и объединить их функцией CombineRegion(). Но не могу понять, как работает последняя и как вообще создать регионы, чтобы получить шестиугольник (или более сложную форму). |
12.02.2014, 12:23 | #2 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
вроде дошло.
а как правильно сделать, чтобы вернуть окно в исходное состояние? Код:
|
12.02.2014, 13:04 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
SetWindowRgn(Handle, 0, True);
DeleteObject делать не надо. |
12.02.2014, 13:05 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
посмотрите пример, который рисует окошко в виде шестиконечной звезды.
(код не мой, я только выкладываю ) можно перетаскивать, изменять размер, прав.кн.мышки на регионе - About двойной клик по региону звезды - закрытие. p.s. извините, если мой пост "мимо кассы" и бесполезен для Вас... |
12.02.2014, 13:28 | #5 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
|
12.02.2014, 15:20 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
13.02.2014, 10:29 | #7 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Мне нужно изменять регион по таймеру в зависимости от позиции курсора мыши. То есть, после SetWindowRgn не надо удалять регион, а просто заново создавать новый CreateRectRgnIndirect?
Код:
|
13.02.2014, 19:40 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Если честно - не пробовал а из документации не совсем понятно.
Насколько я понимаю, один раз отдав регион в окно уже не можем с ним работать. Лучше всего протестировать - после задавания второго региона попробовать удалить первый и посмотреть вернет ли 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 |