Как создать эллиптическое окно с помощью VC ++ с помощью Win32 API - PullRequest
10 голосов
/ 27 августа 2009

Я создаю оконную программу с использованием VC ++ через win32 API. Я хотел создать окно в форме эллипса, как это может быть достигнуто.

Ответы [ 4 ]

6 голосов
/ 28 августа 2009

Использование WS_EX_LAYERED в атрибуте стиля Windows и вызов UpdateLayeredWindow, вероятно, самый гибкий способ управления прозрачным окном пользовательской формы с помощью Win32 API. На MSDN есть отличный выход из строя (хотя и немного старый): http://msdn.microsoft.com/en-us/library/ms997507.aspx

И официальный документ для UpdateLayeredWindow: http://msdn.microsoft.com/en-us/library/ms633556(VS.85).aspx

1 голос
/ 14 декабря 2010

хорошо, это так поздно, но я подумал, что вам будет важно знать. Существует бесплатное программное обеспечение, которое генерирует исходный код для VB, C ++, C # и Delphi. Все, что вам нужно сделать, - это создать свою форму в фотошопе или любом другом художнике, позволить этому программному обеспечению определить форму, которую вы разработали, и сгенерировать для вас код. Вы можете изучить этот код или просто использовать его. Не забудьте прочитать справку, потому что есть некоторые проблемы, касающиеся компиляции. Счастливый Шейпинг. http://www.byalexv.co.uk/

1 голос
/ 27 августа 2009

Единственная проблема с использованием SetWindowRgn состоит в том, что им трудно создавать совершенно произвольные фигуры.

Windows 2000 представила многослойные окна, чтобы решить эту проблему, и именно так Clippy смог избежать границ своего окна.

См. http://msdn.microsoft.com/en-us/library/ms997507.aspx для получения информации о многослойных окнах.

1 голос
/ 27 августа 2009

Используйте SetWindowRgn , чтобы сделать область рисования окна эллиптической областью. Это предотвращает рисование в окне превышения границы эллипса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...