Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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


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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top