C ++ / WIN32 Профессионально выглядящее приложение - возможно ли это?

Я везде искал хорошее решение / совет о том, как выпустить приложение, которое на сегодняшний день имеет «топовый» вид.

Как мы все знаем, при кодировании с использованием окон мы обычно получаем цвета / кнопки / списки в стиле Windows и т. Д. Они просто выглядят и кажутся уродливыми.

Когда мы решаем продать приложение, люди хотят, чтобы оно хорошо выглядело - очевидно, потому что они за него заплатили.

Итак, вопрос:

  • Как сегодня достигается хороший внешний вид приложения?
  • Владелец рисунка? ( В самом деле?? )
  • настраиваемые элементы управления?
  • какие-нибудь хорошие несвободные библиотеки, которые делают «грязную» работу и «обшивают» ваше приложение?

Я не верю, что программисты применяют эти «чрезмерные» советы и уловки, ведь требуется так много времени, чтобы полностью создать один элемент управления ... Кроме того, я бы предпочел потратить это время на кодирование внутреннего материала приложения, чем на игру с отрисовкой отдельных элементов управления ..

Понятия не имею, но у меня есть крайний срок, и теперь, пройдя через все эти «нарисованные владельцем» элементы управления в Google, я понял, что дело не в этом ... Должно быть что-то еще, что пригодится, когда программисту нужно сделать свой приложение выглядит топовым !.

Пожалуйста, помогите, какие-нибудь инструменты? какие-нибудь советы ? что-нибудь ..?

Несколько примеров, как им добиться такого вида:

http://fooh.pl/pokaz/3198197337370da4cdfdebf0ae13933c_openfm.jpg


person PeeS    schedule 16.07.2011    source источник
comment
Я считаю, что HTML можно как-то использовать, чтобы упростить эту задачу и отделить дизайн от кода. Но я бы тоже хотел увидеть хороший ответ на этот вопрос.   -  person RocketR    schedule 16.07.2011
comment
Что ж, это как-то странно, что кодеры C ++ (VStudio / WinAPI / W32) застревают в этих чертовски грязных, плохо выглядящих элементах управления Windows ... и я считаю, что должно быть решение - я видел слишком много красивых приложений поздно, и если они нарисованы владельцем - тогда я хочу знать, является ли это ЕДИНСТВЕННЫМ возможным вариантом для программиста-победителя в XXI веке.   -  person PeeS    schedule 16.07.2011
comment
У этого приложения нет профессионального пользовательского интерфейса. Конечно, он очень привлекателен для потребителей, чисто визуально, но элементы управления слишком маленькие, слишком близко друг к другу, и нет хорошей визуальной индикации, что можно нажимать, а что нет.   -  person Ben Voigt    schedule 16.07.2011
comment
Бен, да, но по сравнению со стандартным приложением, разработанным для Windows, это выглядит как «Ух ты». И дело не в том, «что можно нажимать, а что нет», а в том, как они добились того, чтобы внутри была «потребительская сексуальная привлекательность»?   -  person PeeS    schedule 16.07.2011
comment
Что вы имеете в виду под оконным стилем? Если ваша жалоба касается того, что внешний вид не настраивается, когда вы не настраиваете, что ж, в этом случае вопрос должен быть признан нереальным. Если вы хотите получить, например, Windows 2000 ищет кнопки и т. Д. Вместо тематических элементов, тогда хорошо, добавьте манифест в свое приложение. Погугли это.   -  person Cheers and hth. - Alf    schedule 16.07.2011
comment
@PeeS - Это зависит от вашей цели. Я покупаю программное обеспечение после того, как оно полезно, а не после того, как выглядит круто !. YMMV.   -  person Bo Persson    schedule 16.07.2011
comment
@Bo - мои клиенты обычно говорят: «Посмотрите на мое приложение для iphone, посмотрите его цвета и посмотрите?». Сегодня люди хотят: Функциональности и дизайна. Мой клиент - мой босс, и да, я покупаю приложения, потому что мне нужна их функциональность, а не цвета, но я тоже кодирую приложения - и когда я слышу: «Не могли бы вы сделать его более КЛАССНЫМ?» - я начинаю спрашивать себя, как, черт возьми, мне это сделать?   -  person PeeS    schedule 16.07.2011


Ответы (9)


Вы можете, например, взглянуть на Qt. Помимо основных функций, вы также можете стилизовать все виджеты по своему вкусу ( способом, очень похожим на CSS) и поэтому создавайте «темы», сколько душе угодно.

Для непрямоугольного вида окна в изображении, на которое вы ссылаетесь, вы можете использовать функциональность Qt setMask ().

person Bart    schedule 16.07.2011
comment
Посмотрите на Qt - он похож на windows 3.11 ui. Извините, это не то, что мы ищем. - person PeeS; 16.07.2011
comment
Если вы имеете в виду примеры, на вашем месте я бы посмотрел немного глубже. Конечно, приведенные примеры не являются привлекательными, но они показывают, что практически все можно изменить на то, как вы хотите, чтобы это выглядело. - person Bart; 16.07.2011
comment
Барт, если есть что-то, что выглядит топовым и было сделано с помощью QT, я бы хотел это увидеть ..? - person PeeS; 16.07.2011
comment
Google Планета Земля была написана на Qt. Это нормально? Если нет, выберите один из них, который вам нравится: qt.nokia.com/qt-in-use - person gbjbaanb; 16.07.2011
comment
Что ж, пользовательский интерфейс Google Планета Земля не такой уж "крутой", как вы видите, это просто стандартный пользовательский интерфейс, который выглядит некрасиво. Я ничего не говорю о механизме рендеринга, потому что здесь мы говорим о пользовательском интерфейсе Windows. Извините, я не смог найти ничего, сделанного с помощью QT, что поразило бы меня .. :) да, вы правы, может быть, термин профессионализм - это то, что нас отличает :) - person PeeS; 16.07.2011

Похоже, вам нужно приложение с полностью изменяемым оформлением, но не требует больших усилий, чем обычные элементы управления Win32. Это невозможно. Но в целом снятие шкуры несложно, просто на это уходит больше времени, чем вы готовы потратить.

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

И, наконец, какой бы необычный пользовательский скин вы ни выбрали, функциональность, вероятно, должна быть индивидуальной. То есть, если вам нужны непрямоугольные элементы управления или анимация, вы должны потратить время на разработку этих вещей.

Использование такого инструментария, как Qt, может быть хорошей инвестицией. Но это такая деталь, которая требует больших усилий, как бы вы ее ни разрезали.

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

  1. Специальные возможности, такие как навигация с помощью клавиатуры, программы чтения с экрана, высокая контрастность. Вы действительно собираетесь попытаться заново изобрести все специальные возможности, которые Windows предоставляет вместе с элементами управления? Или стоит исключить людей с ограниченными возможностями из использования вашего приложения только для того, чтобы вы могли использовать скин (не говоря уже о людях без инвалидности, которые используют специальные возможности)?
  2. Изменение размера. Означает ли ваш скин отключение любого изменения размера вашего окна? Опять же, оно того стоит?
  3. С некоторых вещей плохо снимается шкура. Например полосы прокрутки и меню. Некоторые разработчики изобретают их заново (полосы прокрутки особенно сложно изобретать заново), другие просто оставляют их без кожи.
  4. Тема Windows. Темы Windows - это не только цвет вашего меню «Пуск»; он должен определять внешний вид всей вашей ОС. Использование стандартных элементов управления Windows позволяет пользователям использовать встроенный механизм для выбора внешнего вида.
person tenfour    schedule 16.07.2011
comment
+1 Но это такая деталь, которая требует больших усилий, как ни крути. - person Bart; 16.07.2011
comment
Я думаю, вы правы, говоря, что для достижения этого «окончательного красивого вида» требуется профессиональный графический дизайнер. Причина, по которой я спрашиваю обо всем этом, заключается в том, что две недели назад я закончил кодирование игрового движка OpenGL в реальном времени, и мне пришлось самому писать код с нуля (включая пользовательский интерфейс). Когда мы (команда разработчиков) наконец закончили работу над движком, мы получили запрос на кодирование небольшого приложения bluetooth для клиента ... и я шокирован тем, что в 2011 году мое приложение выглядело просто ужасно со стандартными элементами управления внутри ... Я знаю профессиональный участник GFX может сделать «трюк», но я - person PeeS; 16.07.2011
comment
Я думаю, что даже использование стандартных элементов управления может выглядеть как ужасно профессионально. Специалисты по пользовательскому интерфейсу обладают для этого законным талантом, и, к сожалению, они недостаточно используются. - person tenfour; 16.07.2011
comment
(продолжение) Но я думал, что найду какой-нибудь инструмент / технологию, которые позволят мне, по крайней мере, иметь некоторый «дополнительный контроль» над окончательным внешним видом приложения. - person PeeS; 16.07.2011
comment
Tenfour, вы определенно правы. Я, вероятно, буду придерживаться внешнего вида, как есть, и посмотрю, будет ли мой клиент жаловаться, говоря: почему это так? это XXI век, посмотрите на мой пользовательский интерфейс Apple - person PeeS; 16.07.2011
comment
Кстати, самый простой способ создать скин для приложения - это комбинация UpdateLayeredWindow + файл .png + ручная обработка пользовательского ввода и отправка событий. Вы просто жертвуете всеми типичными функциями доступности, как я уже упоминал. Но с ограниченным бюджетом я всегда этим занимаюсь. Это очень просто, так что не стоит бояться, что я слишком много вложил в этот скиннинг. - person tenfour; 16.07.2011
comment
И он в некотором роде прав, люди привыкли к внешнему виду «IPH0NE», я знаю это, поскольку кодирую для нескольких клиентов. Они просто «хотят, чтобы приложение выглядело круто» на их ноутбуках, и я был шокирован тем, что для этого нет окончательного решения - «нестандартного рисования» или внешнего вида. - person PeeS; 16.07.2011
comment
UpdateLayeredWindow - это то, что я использую в течение долгого времени, и да, какое-то время это было здорово, но требование: БОЛЬШЕ. ;) - person PeeS; 16.07.2011

Наверное, в этом приложении нет ни одного элемента управления.

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

Проверка попадания может быть проведена с еще одним изображением.

Программист практически не выполняет никакой работы по реализации причудливого дизайна, все это делается художником (и такие программы, как Photoshop, поддерживают слои в редакторе, что упрощает создание всех наложений).

Обратной стороной, конечно же, является то, что кнопки работают не так, как обычные кнопки Win32. Они не поддерживают фокусировку клавиатуры (хотя, вероятно, есть горячие клавиши) и просто активируются при наведении курсора мыши. А доступность ужасна, для программы чтения с экрана нет информации, а приложение не соблюдает системные настройки размера шрифта. Чтобы пользовательский интерфейс был понятен людям с плохим зрением, требуется совершенно другая кожа.

person Ben Voigt    schedule 16.07.2011

Команда C ++ составила образец под названием Hilo (например, место на Гавайях), который не использует никаких фреймворков ( нет ATL, нет MFC) и все это собственный код. Он использует ряд возможностей Windows 7, а также восхитительную графику и анимацию. Весь код и дизайн доступны и задокументированы. Посмотри.

person Kate Gregory    schedule 16.07.2011

Если вы хотите копнуть под прикрытием какого-либо конкретного приложения, вы можете запустить Spy Utility и посмотреть, на сколько элементов управления разбит интерфейс:

Я хочу Spy ++, но у меня нет Visual Studio

Есть ли утилита, подобная Spy ++ для WPF?

Например ... слежение за проигрывателем Windows Media в режиме скинов обнаруживает, что существует класс окна с именем WMP Skin Host, и вы можете видеть, что у него ноль дочерних окон. (Обычный режим без скинов разбит на некоторые списки и кнопки, например.)

По моему опыту, «современный» скиннинг - это вообще катастрофа, когда люди переделывают слишком много, чтобы попытаться «выглядеть круто». Это затрудняет автоматизацию (с помощью таких вещей, как AutoIt), но не упомянуть специальные возможности для инвалидов. Кроме того, то, что сегодня выглядит круто, не останется актуальным, если вы не используете тематический API на основе ОС.

(Примечание: поскольку я в целом поклонник Qt, я бы посоветовал изучить QStyle и QStylePainter. Но это скорее "тематика", чем "скиннинг".)

Я бы очень осторожно использовал скиннинг в приложении, если не узнал, что я разрабатываю для рынка, который этого абсолютно требует (например, музыкальных плееров).

person HostileFork says dont trust SE    schedule 16.07.2011

Обычно вы можете визуализировать пользовательские элементы управления с помощью рендеринга GDI (+).

person Puppy    schedule 16.07.2011
comment
Да, верно, но это потребовало бы от меня разработки / программирования каждого элемента управления с нуля - и я не хочу этого делать, потребуется год, чтобы все они были созданы с помощью GDI +. - person PeeS; 16.07.2011
comment
@PeeS: Если вам нужен сексуальный интерфейс, вы должны приложить некоторые усилия. Вы также можете попробовать WPF для .NET. - person Puppy; 16.07.2011

Если вы не против войти в C ++ / CLI, есть WPF, он предлагает довольно обширный контроль над стилями и шаблонами, определяемыми пользователем.

person PeskyGnat    schedule 16.07.2011
comment
Этого я не видел, но, как говорят люди, он не «взаимодействует» с C ++? что-нибудь еще об этом? - person PeeS; 16.07.2011
comment
Обратной стороной может быть то, что вам нужно будет развернуть платформу .NET с вашим приложением, и, как вы упомянули, C ++ / CLI может не сотрудничать (я не знаю дизайнера), но это выполнимо, по крайней мере, программно. Что касается моего подхода к этой проблеме, я писал слой графического интерфейса на C # / WPF и использовал взаимодействие для вызова в C ++. - person PeskyGnat; 16.07.2011

Возможно, вам стоит внимательно изучить SkinCrafter. Он зрелый, стабильный и очень гибкий. Я больше не использую его, но мне понравилось.

person Captain Obvlious    schedule 16.07.2011
comment
Чет, хорошо выглядит! Что вы сейчас используете вместо SkinCrafter? - person PeeS; 16.07.2011
comment
@PeeS Приложения, которые я сейчас разрабатываю, не требуют расширенного внешнего вида. Если бы они это сделали, я бы продолжил использовать SkinCrafter. - person Captain Obvlious; 16.07.2011
comment
Спасибо, Чет, сейчас я заказываю это. - person PeeS; 16.07.2011

Вы можете использовать внешние механизмы верстки, например, HTMLayout от terra informatica, а также некоторые профессиональные программы.

person user1064504    schedule 22.03.2014