Как создать окно с эллиптической формой с помощью VС++ с использованием API win32

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

Ответ 1

Использование 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

Ответ 2

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

Ответ 3

Единственная проблема с использованием SetWindowRgn - это регионы, так как сложно создать абсолютно произвольные формы.

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

Подробнее о многоуровневых окнах см. http://msdn.microsoft.com/en-us/library/ms997507.aspx.

Ответ 4

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