Не работает CreatePolygonRgn!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
БорисМ
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 22.11.2004 (Пн) 17:00

Не работает CreatePolygonRgn!

Сообщение БорисМ » 24.11.2004 (Ср) 15:22

Необычного вида формы можно получить после их "обрезания" функцией CreatePolygonRgn (gbi32.dll). При использовании этой функции (совместно с SetWindowRgn (user32.dll)) под Вин98 проблем не возникало. Однако в Вин 2000 такого "обрезания" формы не происходит, т.е. функция CreatePolygonRgn не работает, хотя, например, функция CreateRoundRectRgn из той же библиотеки работает нормально. :shock:

Если кто знает - почему, прошу - подскажите! :!: :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.11.2004 (Ср) 15:34

Точно не работает именно эта функция? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

БорисМ
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 22.11.2004 (Пн) 17:00

Сообщение БорисМ » 25.11.2004 (Чт) 18:43

GSerg писал(а):Точно не работает именно эта функция? :)


В программе я сначала использовал только две функции: SetWindowRgn и CreatePolygonRgn для получения окна трапецеидальной формы.

Когда программа запускалась в Вин98 все получалось. Но в Вин2000 - не сработало. Тогда я добавил в ту же прогу функцию CreateRoundRectRgn, чтобы скруглить края (хоть какое-то утешение...) и края скруглились, как я того задумал :!: . В итоге в программе теперь содержится три названных функции: SetWindowRgn, CreatePolygonRgn и CreateRoundRectRgn. При этом края скругляются, а трапеция не получается.

Очевидно, что именно CreatePolygonRgn и не работает.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.11.2004 (Пт) 3:46

"Очевидно" - категория, чреватая ошибками :)
ПОсле вызова каждой API смотри, чему равна Err.LastDllError. Так найдёшь, что не работает, а заодно и почему.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

БорисМ
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 22.11.2004 (Пн) 17:00

Re: Не работает CreatePolygonRgn!

Сообщение БорисМ » 06.12.2004 (Пн) 14:08

Действительно, не работала именно эта функция! При этом никаких ошибок не происходило!

Я использовал ее в виде:
ret=CreatePolygonRgn(dat(0), 12, 0))
и она не работала в Win2000, и WinXP.

Методом тыка удалось установить, что достаточно 0 заменнить на 1 и проблема решена. :shock: Иначе говоря, функция в виде

ret=CreatePolygonRgn(dat(0), 12, 1))

работает как в Win98, так и в Win2000, и WinXP! :!:

(естественно, что dat(0), 12, - могут быть другими, в зависимости от той конфигурации окна, которая должна быть получена после "обрезания"). :wink:

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Не работает CreatePolygonRgn!

Сообщение codemaster » 06.12.2004 (Пн) 15:16

БорисМ писал(а):Действительно, не работала именно эта функция! При этом никаких ошибок не происходило!


работает как в Win98, так и в Win2000, и WinXP! :!:


Даже неудивительно ! если для начала прочитать

http://msdn.microsoft.com/library/defau ... s_6q3y.asp


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 29

    TopList