Как создать собственный пользовательский интерфейс для Windows?

В наши дни существует множество приложений для Windows, которые не используют собственные элементы управления Windows, не имеют стандартных оконных рамок и обычно выглядят по-другому. Какие рекомендуемые методы создания таких интерфейсов?


person grigy    schedule 18.05.2010    source источник


Ответы (7)


С точки зрения дизайна, если ваш интерфейс не соответствует задокументированным стандартам (например, рекомендациям по пользовательскому интерфейсу Windows), он должен быть интуитивно понятным. Я думаю, что новое поколение Windows-приложений пройдет через фазу роста, аналогичную ранней стадии Интернета. Со временем появятся некоторые стандарты или общие темы.

person Rob Windsor    schedule 18.05.2010

Есть веские причины не делать этого. Таким образом, вы, скорее всего, не сделаете работу лучше, чем Windows. (Может быть, он будет выглядеть лучше (на ваш взгляд), но будет ли он себя вести?). Или что это не то, что ожидает большинство пользователей. Или что это будет выглядеть дерьмово в Windows 2011.

Тем не менее, это не сложно. Вы просто обрабатываете события WM_NC*, такие как WM_NCPAINT. или WM_NCHITTEST. NC означает Non Client (область окна). И, конечно же, на Vista/Win7 есть трюк (вы должны сообщить об этом DWM).

person Fozi    schedule 18.05.2010
comment
+1: правильный способ писать приложения, которые не используют внешний вид ОС, - НЕ ДЕЛАТЬ ЭТОГО ВООБЩЕ. - person Dan Davies Brackett; 19.05.2010
comment
Но я думаю, что пользователям нравится уникальный внешний вид приложений, и многие компании делают это. - person grigy; 19.05.2010
comment
@grigy: Возможно, вы могли бы привести этот аргумент в пользу Windows XP, но определенно не в отношении Vista/7/next. Vista представила единый внешний вид ОС, и приложения, которые не соответствуют этим стандартам, откровенно говоря, выглядят как дерьмо. Это похоже на создание приложения в стиле Windows в Mac OS X — вы можете подумать, что оно выглядит лучше, но оно так несовместимо с остальной частью ОС. И я даже не коснулся аспекта юзабилити. - person Sasha Chedygov; 19.05.2010
comment
De gustibus non est disputandum — обычно они мне не нравятся, особенно если они не используют Aero. И даже если мне нравится внешний вид, это может очень раздражать, когда он терпит неудачу. Просто посмотрите в стиме. Если он зависнет, вы даже не сможете его перетащить, потому что он (не) обрабатывает свои сообщения WM_NCHITTEST. - person Fozi; 19.05.2010
comment
Я сделал пользовательский интерфейс на основе Java и просто объединил большую часть хороших частей, которые люди хвалили в старой Windows, немного стилей Windows 8 (очень мало) и немного моего собственного дизайна. Это не попытка превзойти гигантов. Речь идет о том, чтобы сделать что-то другое и сделать это своим. Это ничем не отличается от тех, кто рутирует свои телефоны и планшеты только для того, чтобы настроить их по-своему, чтобы придать им индивидуальность. И вы не сможете продвинуться ни в чем, делая одно и то же и не задаваясь вопросом, как вы можете сделать что-то другое или лучше. Или вам нравится кататься по бревнам, чтобы перемещаться из точки А в точку Б? - person ; 26.03.2013

С точки зрения реализации вы можете использовать WPF (Windows Presentation Foundation), предполагая, что вы кодируете для .NET:) У него довольно много элементов управления с изменяемым оформлением, которые могут выглядеть как родные, а могут и нет.

person Bubba88    schedule 18.05.2010

Можете ли вы дать нам несколько образцов приложений? Некоторые приложения, которые не используют собственные элементы управления Windows, используют кроссплатформенные библиотеки графического интерфейса, такие как Qt для C++ или Tkinker. Они сохраняют одинаковый вид на разных платформах.

Я бы не рекомендовал намеренно менять пользовательский интерфейс. Вы не выиграете много. Ваши элементы управления почти всегда будут содержать больше ошибок, чем собственные элементы управления, и вы требуете от пользователя изучения чего-то нового. Теперь, если ваши элементы управления добавляют достаточно большое значение, чтобы окупить время пользователей, все может быть в порядке. Но заставить их привыкнуть к кнопкам, выглядящим по-другому, редко стоит того.

person Gordon Gustafson    schedule 18.05.2010
comment
Программное обеспечение для VPN и для WiFi на моем рабочем ноутбуке (за которое я не несу ответственности) имеют нестандартный графический интерфейс. Понятия не имею почему. Антивирус использует родные границы, но не родные элементы управления, возможно, из-за того, что нет собственного гибрида списка содержимого и вкладок. Я сомневаюсь, что какой-либо из них является кроссплатформенным. - person Pete Kirkham; 19.05.2010
comment
Например, Google Talk. Главное окно не похоже на стандартное приложение Windows. - person grigy; 19.05.2010

Я не уверен, что это ответ на ваш вопрос.

Вы можете использовать сторонние элементы управления скинами, например, Infragistics или SkinSoft. Но, как сказал Бабба, я бы порекомендовал перейти на WPF.

person RHaguiuda    schedule 18.05.2010

Модель-Вид-Контроллер! Это так же ценно здесь, как и в веб-приложениях или где-либо еще. Убедитесь, что часть вашей программы, которая генерирует пользовательский интерфейс, отделена от той части вашей программы, которая прошивает BIOS.

person Ken    schedule 18.05.2010

Я знаю, что этому вопросу 10 лет, но ни в одном из ответов не упоминается использование опции в визуальной студии, не знаю, существовала ли она в то время.

В Visual Studio есть возможность удалить границу окна (называется borderStyle). Это самый простой способ сделать это, используя C #. После удаления границы все, что вам нужно сделать, это создать новый интерфейс. Если вы хотите сделать это на C++, я думаю, вам нужно использовать DWM. Я приведу пример, который нашел здесь.

https://github.com/melak47/BorderlessWindow

Другой пример (может без DWM? не проверял):

https://social.msdn.microsoft.com/Forums/vstudio/en-US/b98c4c06-9581-44d3-8e5a-4adb2316e653/win32-about-styles-how-can-i-do-a-borderless-window?forum=vclanguage

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

person Caio Peres    schedule 13.11.2020