2009-12-23 2 views
1

Если кто-то не хочет использовать IDE (только редактор, компилятор и отладчик), то какой лучший способ визуализировать GUI вручную?Каков наилучший способ реализации графического интерфейса без GUI-дизайнера?

Я думаю о WinAPI-приложении в простых C или C++.

+3

Вы бы создали его так, как будто бы вы писали код именно с этими инструментами. Я действительно не понимаю. – pmr

+2

Почему вы не хотите использовать среду IDE? Если вам нужен какой-то вызов, вы также можете попытаться кодировать, используя только свою ногу, но .. –

+8

Как кто-то, кто программировал Windows с Windows 2.0, могу заверить вас, что вы действительно не хотите делать это за любые действия, кроме самых простых заявление. – 2009-12-23 13:23:21

ответ

7

Если у вас есть API Windows, вы будете использовать текстовый редактор для создания виджета пользовательского интерфейса в коде. Нет XAML или другого промежуточного языка или разметки. Если вы хотите сделать макет, вы должны использовать карандаш и бумагу или графический инструмент, такой как Visio, чтобы имитировать пользовательский интерфейс, чтобы вы могли делать математику о том, где вы хотите, чтобы все было.

Или, альтернативно, вы можете просто надеть ржавую отвертку между маленьким пальцем и маленьким пальцем на ноже. Это может быть менее болезненным.

EDIT: Другие плакаты говорили об использовании других фреймворк, таких как Qt, или используя макетные панели и т. Д. Но вопрос был задан в отношении Windows API и C/C++. Это возвращает нас к Petzold. Не crap he's written recently, но «Программирование Windows». Великий в свое время, и это было почти так, как все было сделано 15 лет назад, но я никогда не вернусь без очень-очень веской причины!

+0

t вполне возможно реализовать динамическую систему макета, которая работает непосредственно с Win32 HWND, и предлагает все возможности, которые вы видите в Swing/WPF/Qt/любых макетах. –

0

Весь редактор GUI - это код записи, который отражает свойства тех элементов, которые вы разместили в форме. Без редактора GUI вам нужно будет написать весь код самостоятельно.

+1

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

+0

@Ken - Каждая крупная библиотека современного графического интерфейса предоставляет макеты/sizers, и если у вас нет особого случая, вы должны использовать их вместо ручного позиционирования. –

+0

@Steve: «Я думаю о WinAPI-приложении» –

0

Я не уверен, отвечаю ли вы на ваш вопрос, но обычно я проектирую графический интерфейс с помощью карандаша и листка бумаги.

Я вычеркиваю макет интерфейса, а затем в слабых линиях рисуют прямоугольники вокруг тегов DIV и как сгруппированы наборы управления.

Затем я кодирую HTML из этого. В некоторых случаях я считаю более эффективным использовать карандаш, чем мышь.

0

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

+0

Это работает только с компиляторами microsoft или работает с gcc? – Inno

+0

Файлы RC специфичны для создания приложений Win32, и для компиляции ресурсов вам необходимо использовать компилятор RC-файла Microsoft. Возможно, вы сможете создать остальную часть приложения с помощью GCC, но не путайте это с поддержкой кросс-платформенной поддержки. –

0

Отметьте его на бумаге или в любом месте.

Будьте точны на полях, ширина, левый alignement ...

После того, как вы получите точное представление о положении каждого элемента на экране, вы «просто» должны перевести его.

Это что-то такое?

2

Большая часть ответов проста неправильно ИМХО. Вы не даете точных координат без графического редактора, используя карандаш и бумагу, это было бы слишком плохо.

Я использовал для создания Форм, используя руку, но я использовал wxWidgets and sizer, это довольно легко создать формы, используя руки, просто добавьте sizer и элемент управления.

Также существуют различные обозначения для этого в wxWidgets By Jorg http://www.xs4all.nl/~jorgb/wb, где вы просто указываете макет формы в одной строке и генерируете код. Я не могу найти ссылку.

+0

Использование графического API, такого как wxWidgits, делает вашу жизнь проще - особенно с помощью sizers. Фактически, многие библиотеки окон предлагают такие API-интерфейсы компоновки, включая собственный Swing от Java. Я написал портативное приложение с графическим интерфейсом, используя только текст и wxWidgets, которые перекрестно скомпилированы как для Microsoft Windows, так и для Linux, и я был очень доволен результатом. –

+0

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

0

Опыт разработки графического интерфейса очень отличается от графического инструментария, который вы используете.В Windows наиболее типичным (и я думаю, что низкий уровень) является MFC API, но это не единственная возможность, так как вы также можете использовать более высокий подход с такими инструментами, как GTK + или Tk. Конечно, вам нужно будет установить библиотеки в Windows.

Например, в GTK + вы можете использовать XML-файлы для описания большей части графического интерфейса, что может быть проще, чем сделать их жестко закодированными. Кроме того, вы можете сделать объект VBox и добавить к нему другие объекты, и автоматически объекты будут расположены один ниже предыдущего, вместо того, чтобы измерять и описывать его позицию XY.

Создание графического интерфейса без визуального редактора вполне возможно (я сделал некоторые), но наличие визуального редактора почти всегда является большим большим преимуществом. Но с использованием реальных технологий лучше использовать доступный инструмент более высокого уровня. Программирование любого графического интерфейса на C/C++ с необработанными MFC и без визуального редактора может быть очень сложным.

Я рекомендую вам хотя бы взглянуть на GTK + (http://www.gtk.org/). Вы можете использовать его с C++ (также на других языках, таких как Python и C#), и это не очень сложно использовать без визуального редактора. У него также есть визуальные редакторы, если вы передумаете.

0

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

+0

m4 было бы полезно для создания макросов. – waffleman

5

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

0

Вам необходимо изучить API для вашей конкретной системы окон. В MS Windows это будет API Windows, если вы снижаетесь как можно ниже или, возможно, используете MFC на C++. В любом случае, это попытка попробовать и исправить и снова попробовать и исправить еще и т. Д. Ad nauseum. Я должен был сделать это много лет назад под X/Windows, и это было медленным и болезненным. Возможно, вам захочется попробовать это раз, чтобы доказать, что вы можете это сделать, но по моему опыту это не является ни продуктивным, ни необходимым.

1

Я рекомендую Gtk +. TkInter также можно использовать.

0

Используйте Visio или какой-либо другой программируемый инструмент диаграммирования.

Напишите экспортера, который преобразует ваш чертеж в код C для вашей библиотеки. Win32, если это ваш вкус.

Один рабочий день, написанный этим экспортером, сэкономит вам часы «compile-run-checkifitswhereiwantittobe».

0

Я думаю, что лучший способ разработки графического интерфейса - использовать язык разметки, такой как Mozilla XUL. Однако Mozilla реализовала XUL для использования с движком Gecko, а не для собственных приложений Windows. Вот почему я создаю свою собственную реализацию поверх Windows, если вам интересно, вы можете ее проверить: XULWin.

Смежные вопросы