Собственный дизайнер окон API

Почему в Visual Studio нет дизайнера для собственных форм API? Похоже на Delphi? Если есть какие-либо программы, инструменты и т. Д., Пожалуйста, совет.

Каков наилучший подход к проектированию сложных окон в чистом API?

3 ответа

Решение

Вероятно, это связано с тем, что в WinAPI нет стандартного способа создания макетов элементов управления, вам придется управлять им самостоятельно. В WinAPI нет базового класса "Control" - все это какое-то окно, поэтому нет способа поддержать их различия с помощью обычного редактора / дизайнера макетов.

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

Или адаптируйте ScreenLib к потребностям своего рабочего стола.

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

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

WinForms был спроектирован с нуля с учетом поддержки дизайнеров, и это видно. Основной проблемой дизайна элементов управления Win32 было использование памяти и кода.

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

Все среды, которые поставляются с приличным редактором форм (я помню Watcom ++ / Optima, ZINC и многие другие, имена которых я забыл) также поставляются с приличной библиотекой форм с высоким уровнем абстракции.

Тогда есть проблема модификаций. Каким должен быть вывод дизайнера? Можно было бы использовать файл данных XML, но это добавило бы зависимость для некоторых больших библиотек в ваше собственное приложение - не имеет особого смысла. Или вы создаете код, но C/C++ не очень подходит для этого. Еще один двоичный формат? Вы ограничитесь тем, что позволяет дизайнер.


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

Это из-за Microsoft. Они уже перешли к dotNet и C#. Visual Studio 2005 имеет хороший графический редактор для тех. Почему вам нужно использовать чистый API?

Другие вопросы по тегам