Как мне продублировать окна в стиле iTunes в Windows?
Кто-нибудь может дать некоторое представление о том, как "продублировать" окно стиля iTunes в Windows? В частности, я ищу следующие функции:
1) закругленное окно 2) верхняя и нижняя панели инструментов 3) закругленные текстовые поля
В настоящее время я пытаюсь немного кроссплатформенной разработки с Real Studio и, хотя я обнаружил механизм, с помощью которого можно выполнять округленные окна в OS X (объявить вызов метода HIWindowSetContentBorderThickness или SetContentBorderThickness), я не могу найти в MSDN как делать подобные вещи в Windows. Очевидно, что Apple достигла этого, написав iTunes для Windows. Возможно, они написали пользовательские элементы управления с нуля.
СИДЕНОТ: Я нашел эту статью, опубликованную несколько лет назад и кратко ее обсуждающую (http://discuss.joelonsoftware.com/default.asp?joel.3.454369.12), но это почти все, что я смог найти.
Даже если я не могу точно продублировать это, было бы неплохо, если бы некоторые направления, в которых библиотеки Windows могли содержать функциональность, мне нужно было бы сделать "вручную". Любая дальнейшая помощь будет принята с благодарностью.
2 ответа
Нет API для создания закругленных углов в стиле Apple, но есть низкоуровневые API для создания окон (как рамочных окон, так и элементов управления) любой формы, которую вы хотите.
Я не использую RealStudio, но я считаю, что он позволяет вам обращаться как к.NET, так и к собственным Win32 API, поэтому:
Если вы используете.NET Windows.Forms, прочитайте Shaped Windows Forms и Controls в Visual Studio.NET. Он написан для VB7, но должен быть легко переведен на ваш любимый язык.
Если вы используете сырой Win32 API, есть как минимум два способа сделать это. Простейшим, но наиболее ограниченным является вызов API SetWindowRgn, который задает форму вашего окна для всего, что вы можете создать как HRGN. Но это, вероятно, не поможет вам. Вы не хотите неровных краев; Вы хотите плавные кривые с альфа-смешанными границами и, возможно, тенями. (По крайней мере, это то, что делает Apple.) Многоуровневый API Windows - способ сделать это. Он допускает произвольные формы (даже изменяющиеся на лету, если вы используете UpdateLayeredWindow - хотя вам не нужна эта функция для эмуляции iTunes), альфа-прозрачность и сложное тестирование попаданий. Поскольку исходная статья сильно устарела и не охватывает все функции, см. Также " Слоистые окна" для текущей документации, в которой есть ссылки на ссылки.
Есть сторонние контроли, которые делают то, что вы хотите. Работает на Mac и Windows.
http://www.madebyfiga.com/fgsourcelist/
работает хорошо.
С.Б.