2009-04-15 10 views
5

Недавно я начал изучать MFC (книгу проксиза), и мне кажется, что это сложно. Но самая сложная часть, похоже, связана с созданием пользовательских интерфейсов. Похоже, вам нужно знать позиции, на которые должны располагаться элементы управления (не в случае с приложениями на основе диалогов).Создание графического интерфейса с MFC

Как вы обходите это? Вы сначала рисуете приложение в Photoshop, а затем измеряете расстояния там?

А также есть ли для этого дизайнеры GUI? (чтобы облегчить боль). Мне это очень нравится, особенно из-за скорости и того факта, что он не требует большой рамки.

Любой, кто регулярно программирует MFC, может дать мне советы о том, как хорошо подготовиться к программированию MFC.

ответ

0

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

2

MFC - это боль, ИМО. Если вам не нужно программировать с помощью C++, я рекомендую использовать C# с WPF или WinForms. Это намного проще. И если вам нужно использовать C++, есть лучшие GUI-решения, такие как Qt.

+0

Если вам нужен C++, потому что есть много libs и вы хотите gui, я рекомендую wxWidgets или QT. Я бы рекомендовал пойти по пути MFC. – schoetbi

1

Типичное приложение MFC имеет окно кадра верхнего уровня и некоторое количество окон дочернего вида и контрольных баров. Ни одна из этих вещей, как правило, не должна располагаться вручную, хотя иногда вам нужно указывать начальный размер во время строительства. Вы можете использовать редактор диалогового окна Visual Studio для диалоговых окон макета. Очень редко приходится вручную писать код позиционирования.

4

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

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

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

1

Какую версию Visual C++ вы используете? Все версии, которые я использовал, поставляются с довольно хорошим графическим инструментом для размещения и редактирования компонентов графического интерфейса. Обычно я добавляю основные компоненты, необходимые для написания кода, чтобы посмотреть, как они выглядят, а затем перемещать вещи вокруг разных макетов, прежде чем я соглашусь на них и добавлю другие компоненты.

Несмотря на то, что я много лет пишу приложения MFC и очень люблю, мне нужно согласиться с плакатом, который спросил, почему вы беспокоитесь об обучении. В эти дни вам, вероятно, будет лучше использовать свое время, изучая либо C#, либо Java.

+0

+1 от меня. Так я использовал для взлома приложений MFC. Теперь я использую wxPython, вам не нужно время, чтобы запустить рабочую программу и использовать ее! –

4

MFC прост, если у вас есть ограничения на то, что он должен делать (базовый Doc/View, диалоги, не причудливый пользовательский интерфейс); как только вам необходимо расширить основное поведение, ему становится все труднее и труднее.

1

Приложения MFC могут быть довольно раздутыми (например,большой размер исполняемого файла приложения, объем памяти и/или требуют библиотеки времени исполнения, которые будут использоваться вместе с вашим приложением). Если вы сосредоточены на C++, я бы рекомендовал вместо этого посмотреть на WTL (раньше это была библиотека Microsoft, но теперь она находится на SourceForge). Это очень легкая альтернатива (с использованием шаблонов) для MFC с похожим синтаксисом.

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

+6

MFC раздута и Java не :) :)? –

+3

Я не могу выдержать внешний вид GUI GUI. Они ужасны. Я не знаю никого, кто предпочитает java ui поверх собственных пользовательских интерфейсов. – Tim

+1

@Tim Java поддерживает многие взгляды и чувства, например, окно native и т. Д. Так что Java тоже лучшая, и с ней очень легко работать, и там очень мощные макеты, которые обрабатывают проблему изменения размера и т. Д. ... –

1

Если вы хотите, чтобы функции макета диалогового окна в приложении MFC вывели свой класс CView с CFormView. Это должно показаться очень похожим на «графический интерфейс на основе форм» .NET WinForms, VB6 и т. Д.

Это можно сделать с помощью нового мастера приложений в раскрывающемся разделе «Открытый класс классов» (я проверил это на VS 2008).

Вы также можете создать диалоговое приложение, с которым вы, похоже, уже знакомы.

Существует несколько других классов, связанных с CView, которые предоставляют другие способы разработки «представлений» вашего приложения. Используя CVEN по умолчанию в качестве базового класса (по мере создания мастеров по умолчанию) предполагается, что вы будете вручную создавать «элементы управления» и/или рисунка на экране. Картина (на самом деле рисунок дисплея с GDI) является чем-то старым разработчиком Win32, знакомым, но часто не выполняется в более современных рамках.

2

Я использовал MFC более 10 лет. Это неплохо, и я бы рекомендовал его по сравнению с другими инфраструктурами, отличными от Microsoft, если вы не заинтересованы в запуске своего приложения на других платформах. Если вы хотите, чтобы ваше приложение выглядело как диалог, используйте CFormView, например, предложенный Aardvark, и разместите его с помощью диалогового редактора. Во многих моих программах MFC представления представляют собой CListViews или приложение, подобное исследователю, с деревом слева и ListView справа. Еще один, который мы используем, - это общий CView с элементами управления вкладками и страницами свойств. В них у вас нет проблем с макетом. Вы просто создаете элементы управления и размещаете их на некотором предопределенном расстоянии от краев. Проспект очень хорош. Вот что привело меня в MFC. Просмотрите CodeProject.com для некоторых классов, которые расширяют MFC, например, изменяя размеры диалогов и листов свойств. Brian

+0

Даже через 6 лет я говорю, что MFC все же лучше QT, если вы хотите приложение Windows, или если у вас есть рабочая сила для разработки собственного графического интерфейса для каждой платформы. – Lothar

-1

Идём QT в GUI целях. Я уверен, вам понравится ..........

+0

Не могли бы вы рассказать нам о преимуществах? –

0

Вы можете получить отличные результаты с помощью MFC без необходимости добавлять какие-либо другие рамки. Вот example утилиты, которую я создал.

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