Создание профессионально выглядящего (и хорошего!) Дизайнера форм

Когда я начал программировать (около 10+ лет назад), меня поразили три вещи:

  • Компиляторы / интерпретаторы (тогда я знал их как «программы, которые заставляют мои программы работать», за которым часто следует уточнение «какими бы они ни были»)
  • Редакторы кода
  • Дизайнеры форм

В то время я принимал их все как факты жизни. Я мог создавать свои собственные специальные программы, но «программы, которые заставляли мои программы работать», редакторы кода и редакторы форм были созданы Богами, и я никак не мог с ними связываться.

Затем я пошел к университет и прошел курс формальной языковой обработки. После изучения формальных грамматик, парсеров, абстрактных синтаксических деревьев и т. Д .; все волшебство, связанное с компиляторами, интерпретаторами и редакторами кода, вскоре исчезло. Компиляторы и интерпретаторы могут быть написаны разумными и простыми способами, и единственная нелепая вещь, которая может потребоваться редактору кода с подсветкой синтаксиса, - это взломы Windows API.

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

Используя Visual C ++ и MFC, я хотел бы реализовать форму дизайнер, вдохновленный лучшим дизайнером форм:

Visual Basic 6's form designer

В частности, я хотел бы имитировать две его особенности, которые мне нравятся больше всего:

  • Проектируемая форма находится внутри контейнера. Таким образом, можно разработать произвольно большую форму, не тратя слишком много места на экране, просто изменив размер контейнера до подходящего размера.

  • "Выровнять по сетке" расстраивает. Фактически, я бы сказал, что создание профессионально выглядящих пользовательских интерфейсов с помощью конструктора форм Visual Basic на самом деле легко, весело и приятно. Даже для программистов с левым полушарием, таких как я.

Итак, у меня есть следующие вопросы:

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

  2. Содержат ли Windows API и / или MFC функции, классы, что угодно, что упрощает создание «выбираемых» элементов (окруженных маленькими белыми или синими окна, когда они выбраны, их размер можно изменять, когда они «захватываются» одним из этих «краев»)?

  3. Как мне реализовать «Выровнять по сетке» функциональность?

27
задан pyon 3 April 2011 в 23:05
поделиться