В наши дни существует множество приложений для Windows, которые не используют собственные элементы управления Windows, не имеют стандартных оконных рамок и обычно выглядят по-другому. Какие рекомендуемые методы создания таких интерфейсов?
Как создать собственный пользовательский интерфейс для Windows?
Ответы (7)
С точки зрения дизайна, если ваш интерфейс не соответствует задокументированным стандартам (например, рекомендациям по пользовательскому интерфейсу Windows), он должен быть интуитивно понятным. Я думаю, что новое поколение Windows-приложений пройдет через фазу роста, аналогичную ранней стадии Интернета. Со временем появятся некоторые стандарты или общие темы.
Есть веские причины не делать этого. Таким образом, вы, скорее всего, не сделаете работу лучше, чем Windows. (Может быть, он будет выглядеть лучше (на ваш взгляд), но будет ли он себя вести?). Или что это не то, что ожидает большинство пользователей. Или что это будет выглядеть дерьмово в Windows 2011.
Тем не менее, это не сложно. Вы просто обрабатываете события WM_NC*, такие как WM_NCPAINT. или WM_NCHITTEST. NC означает Non Client (область окна). И, конечно же, на Vista/Win7 есть трюк (вы должны сообщить об этом DWM).
С точки зрения реализации вы можете использовать WPF (Windows Presentation Foundation), предполагая, что вы кодируете для .NET:) У него довольно много элементов управления с изменяемым оформлением, которые могут выглядеть как родные, а могут и нет.
Можете ли вы дать нам несколько образцов приложений? Некоторые приложения, которые не используют собственные элементы управления Windows, используют кроссплатформенные библиотеки графического интерфейса, такие как Qt для C++ или Tkinker. Они сохраняют одинаковый вид на разных платформах.
Я бы не рекомендовал намеренно менять пользовательский интерфейс. Вы не выиграете много. Ваши элементы управления почти всегда будут содержать больше ошибок, чем собственные элементы управления, и вы требуете от пользователя изучения чего-то нового. Теперь, если ваши элементы управления добавляют достаточно большое значение, чтобы окупить время пользователей, все может быть в порядке. Но заставить их привыкнуть к кнопкам, выглядящим по-другому, редко стоит того.
Я не уверен, что это ответ на ваш вопрос.
Вы можете использовать сторонние элементы управления скинами, например, Infragistics или SkinSoft. Но, как сказал Бабба, я бы порекомендовал перейти на WPF.
Модель-Вид-Контроллер! Это так же ценно здесь, как и в веб-приложениях или где-либо еще. Убедитесь, что часть вашей программы, которая генерирует пользовательский интерфейс, отделена от той части вашей программы, которая прошивает BIOS.
Я знаю, что этому вопросу 10 лет, но ни в одном из ответов не упоминается использование опции в визуальной студии, не знаю, существовала ли она в то время.
В Visual Studio есть возможность удалить границу окна (называется borderStyle). Это самый простой способ сделать это, используя C #. После удаления границы все, что вам нужно сделать, это создать новый интерфейс. Если вы хотите сделать это на C++, я думаю, вам нужно использовать DWM. Я приведу пример, который нашел здесь.
https://github.com/melak47/BorderlessWindow
Другой пример (может без DWM? не проверял):
В этой ветке есть много людей, которые не рекомендуют делать это, но нет причин не делать этого, если вы знаете, что делаете, ваше приложение может выглядеть великолепно.