Доброго времени суток, господа-товарищи.
Мне тут подумалось, что WPF отлично подходит для реализации интерфейсов IM-клиентов. Надо сказать, что практически все существующие клиенты довольно скучны (за исключением iChat, но он ужасно малофункционален). Естественно, я пошел искать существующие примеры, и выяснил что из крупных игроков WPF решилась применить пока только
Увы, не встречал.
Последнее, что видел - программа Witty, для сети
Raiker, спасибо. Для Twitter'а видел, для меня к сожалению смысла не имеет, мне он ни к чему, функции статуса в фейсбуке хватает... Забавно, я стал рыться одновременно с появлением статьи про YM. Как IM-программа мне он не очень нравиться, но как пример того, какие UI можно делать на WPF - просто супер. Перетащил MSN-контакты в него, поиграюсь немножко...
Кое-что еще интересное. Continuum. Гаджет, в котором заключен вполне рабочий IM для протокола Live Messenger, полностью написанный на WPF с довольно неплохой графикой. Конечно функционала не хватает, но как сэмпл, коим он является, по-моему по крайней мере любопытно:
Raiker, спасибо, я его видел, реализация не слишком удачная, к сожалению
Предлагаю созвать народ и попытаться написать что-нибудь подобное на C#. Хотя бы даже WPF ICQ-клиент.
Sgt.Riggs, hydra 3.0
Lico, большое спасибо! Однако за этот пакет нужно платить 15k руб., которых у меня нет, поэтому прошу программистов с форума помочь с переносом кода C# на Delphi for .NET.
(на самом деле, он есть в
Предлагаю собраться в этой теме и всем вместе думать по поводу ICQ-клиента на WPF ;)
Предлагаю собраться в этой теме и всем вместе думать по поводу ICQ-клиента на WPF
А чем принципиально отличается написание клиента на WPF от любой другой реализации? WPF это интерфейс, а функции протокола тут причем?
Espoir, на WPF симпатишней выглядит :-D На самом деле, хочется применить эту технологию.
А код написан на C#, он импортирует из библиотеки API DWM (Desktop Window Manager - Диспетчер рабочего стола) несколько функций для расширения рамки на клиентскую область окна, устанавливает Margins для окна, ... и таким образом получается "стеклянное окно".
Обновление:
Я самостоятельно перевёл вышеобозначенный код из C# в Delphi. Результат неутешительный: похоже, Borland (*CodeGear) придётся переделать все компоненты, чтобы это работало
Sgt.Riggs, вы все спутали и смешали.
API WDM - никакого отношения к WPF не имеет. Это часть нового API в Vista. Для того, чтобы их вызывать Вам ни .NET ни WPF не нужен. Вызывайте откуда хотите. Лишь бы среда программирования позволяла вызывать winAPI
WPF же это часть .NET 3.0/3.5, предназначен для создания интерфейсов - неважно каких, хоть IM хоть что угодно. Все остальное пишется, к примеру на .NET - на C#,VB или на вашей Delphi
Отсюда я еще раз повторяю свой вопрос, заданный выше - А чем принципиально отличается написание клиента на WPF от любой другой реализации?. К чему эта тема? Если к тому что на WPF получаются красивые интерфейсы, то да, это так
Берете любую общедоступную библиотеку с реализованным протоколом нужного IM, того же ICQ к примеру, или реализуете сами такую библиотеку, в любом случае к WPF это отношения не имеет.
Espoir, эта тема создана с целью поиска существующих IM-клиентов, которые используют WPF в качестве способа реализации интерфейса.
Espoir, я различаю API DWM и WPF, просто "стеклянность", вызываемая через этот API, лучше выглядит на приложениях WPF. Я, наверно, и правда всё смешал и не разъяснил толком
А в Delphi с имеющимися VCL-компонентами "стеклянность" не включишь, ибо тогда станет прозрачным и текст
Sgt.Riggs, текст не обязательно должен быть прозрачным.
Достаточно использовать возможности библиотеки "dwmapi.dll", информации о которой полно в сети.
К примеру.
Функции этой библиотеки:
DwmEnableComposition, DwmIsCompositionEnabled, DwmpRestartComposition, DwmRegisterThumbnail, DwmUnregisterThumbnail, DwmUpdateThumbnailProperties, DwmQueryThumbnailSourceSize и так далее и так далее и так далее - все эти функции дают вам полный контроль над прозрачностью.
К примеру на основе функции DwmExtendFrameIntoClientArea можно легко реализовать метод вроде SetGlassRegion который будет делать прозрачным только определенную часть окна - это достаточно просто. Сложнее, но тоже ничего особо революционного сделать верное отображение текста поверх прозрачной части - тут надо работать с DrawThemeTextEx ("UxTheme.dll"), DrawThemeText, CreateDIBSection ("gdi32.dll").
Как-то ради эксперимента я делал простое приложение, которое должно было выглядеть "в стиле Vista". Вот
Как видите тут достаточно сложная композиция - и вся она написана вызовами стандартного API. Никакого WPF нет и в помине
Espoir, получить список функций я могу, написав маленькое приложение на Delphi. Более того, я это уже сделал ;) На WPF гораздо удобнее выглядит хотя бы окно контактов - сосредотачиваешься на имени и картинке, а фон приложения - стеклянный.
В реализации этой идеи мне нужна помощь человека/людей, которые смогли бы написать полностью функциональную библиотеку клиента ICQ (с соответствующей документацией) на C# или, в крайнем случае, Visual Basic (ну или на Chrome - там Object Pascal немного отличается от того, что в Delphi). Плюс мне понадобились бы советы знающих людей по организации списка контактов (пока я понятия не имею, как это делается).
Сейчас лето, времени изучить всё это добро у меня будет достаточно. Поэтому большое спасибо тем, кто сможет присоединиться.
P.S. Кстати, ещё бы понять, как создавать белый фон около букв (называется Glow), когда окно стеклянное. На