Создание GUI с MFC - PullRequest
       74

Создание GUI с MFC

6 голосов
/ 15 апреля 2009

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

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

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

Каждый, кто регулярно занимается программированием на MFC, может дать мне совет о том, как научиться программировать на MFC.

Ответы [ 11 ]

5 голосов
/ 15 апреля 2009

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

5 голосов
/ 15 апреля 2009

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

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

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

3 голосов
/ 18 июля 2009

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

3 голосов
/ 15 апреля 2009

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

2 голосов
/ 15 апреля 2009

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

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

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

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

2 голосов
/ 15 апреля 2009

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

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

2 голосов
/ 15 апреля 2009

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

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

2 голосов
/ 15 апреля 2009

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

1 голос
/ 21 января 2017

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

1 голос
/ 15 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...