2009-04-15 15 views
5

Ich habe vor kurzem angefangen zu lernen MFC (Prosise Buch), und ich fühle mich wie es schwierig ist. Der schwierigste Teil scheint jedoch die Erstellung von Benutzeroberflächen zu sein. Offenbar müssen Sie wissen, auf welchen Positionen Ihre Steuerelemente positioniert sein sollten (nicht bei dialogbasierten Apps).Erstellen einer GUI mit MFC

Wie kommst du rum? Zeichnen Sie zuerst die Anwendung in Photoshop und messen Sie die Abstände dort?

Und gibt es auch GUI-Designer dafür? (um den Schmerz zu lindern). Ich mag es sehr, vor allem wegen der Geschwindigkeit und der Tatsache, dass es keinen großen Rahmen erfordert.

Jeder, der MFC regelmäßig programmiert, ist willkommen, mir Tipps zu geben, wie man MFC programmieren kann.

Antwort

0

Die meiste Zeit verwenden Sie den Dialog Ressourceneditor und Datenbindung, um eine Benutzeroberfläche in MFC zu erstellen (Sie können eine dialogbasierte Ansicht haben). Wenn Sie kein Dialogfeld erstellen, haben Sie normalerweise einen Algorithmus für das Layout der Steuerelemente im Kopf und implementieren dieses.

2

MFC ist ein Schmerz, IMO. Sofern Sie nicht mit C++ programmieren müssen, empfehle ich die Verwendung von C# mit WPF oder WinForms. Es ist viel einfacher. Und wenn Sie C++ verwenden müssen, gibt es bessere GUI-Lösungen, wie Qt.

+0

Wenn Sie C++ brauchen, weil es eine Menge von Bibliotheken gibt und Sie eine GUI wollen, empfehle ich WXWidgets oder QT. Ich würde empfehlen, den MFC-Pfad zu gehen. – schoetbi

1

Eine typische MFC-App verfügt über ein Rahmenfenster auf oberster Ebene und eine gewisse Anzahl von untergeordneten Ansichtsfenstern und Steuerleisten. Keines dieser Dinge muss normalerweise manuell positioniert werden, obwohl Sie manchmal während der Erstellung eine Anfangsgröße angeben müssen. Sie können den Dialogfeldeditor von Visual Studio zum Layout von Dialogfeldern verwenden. Es sollte sehr selten sein, den Positioniercode manuell zu schreiben.

4

Ich würde zustimmen müssen, dass für MFC Arbeit der Ressourcen-Editor, der Teil von Visual Studio ist, wahrscheinlich der einfachste Weg ist, mit MFC loszulegen. Sie können Ihre Steuerelemente einfach in einem Dialog platzieren und auf die richtigen Proportionen ausdehnen. Für den Rekord, MFC ist ein Framework ist es nur, dass es als Teil von Windows gebündelt kommt.

Wenn Sie möchten, dass die Größe Ihrer Steuerelemente geändert wird, müssen Sie Code hinzufügen, um die Größenänderungen (ON_SIZE, die ich denke) zu verarbeiten, wenn die Größe des Dialogfelds geändert wird. Das ist nicht so schlimm, solange Sie nicht zu viele Dinge gleichzeitig verändern wollen.

Persönlich würde ich empfehlen, MFC zugunsten WxWidgets zu vermeiden. Es gibt einige großartige GUI-Layout-Programme wie wxDesigner, die das Erstellen resizeable Dialoge und Eigenschaftsseiten ziemlich mühelos machen können.

1

Welche Version von Visual C++ verwenden Sie? Alle Versionen, die ich verwendet habe, sind mit einem ziemlich guten grafischen Werkzeug zum Platzieren und Bearbeiten von GUI-Komponenten ausgestattet. Ich füge normalerweise die grundlegenden Bestandteile hinzu, schreibe etwas Code für sie, um zu sehen, wie sie aussehen und dann Sachen herum zu bewegen, verschiedene Entwürfe probierend, bevor ich mich auf einem setze und die anderen Bestandteile hinzufüge.

Obwohl ich MFC-Apps seit Jahren ein- und ausgeschaltet habe und ganz wie es ist, muss ich dem Poster zustimmen, der fragte, warum du lernst. In diesen Tagen würden Sie wahrscheinlich besser Ihre Zeit nutzen lernen entweder C# oder Java.

+0

+1 von mir. So habe ich früher MFC-Apps gehackt. Jetzt verwende ich wxPython, es dauert keine Zeit, ein funktionierendes Programm zum Laufen zu bringen und nutzbar zu machen! –

4

MFC ist einfach, wenn Sie Grenzen halten, was es tun soll (grundlegende Doc/View, Dialoge, keine ausgefallene Süßigkeiten UI ...); Sobald Sie das Grundverhalten erweitern müssen, wird es immer schwieriger.

1

MFC-Anwendungen können ziemlich aufgebläht werden (z.große ausführbare Dateigröße, Speicherbedarf und/oder erfordern, dass Runtime-DLLs zusammen mit Ihrer Anwendung verwendet werden). Wenn Sie sich auf C++ konzentrieren, würde ich Ihnen empfehlen, stattdessen WTL zu betrachten (war früher eine Microsoft-Bibliothek, befindet sich jetzt aber auf SourceForge). Es ist eine sehr leichte Alternative (mit Vorlagen) zu MFC mit ähnlicher Syntax.

In letzter Zeit habe ich C++ für Java für die meisten meiner Anwendungen einschließlich GUIs aufgegeben, und ich habe nicht vor zurückzugehen.

+6

MFC ist aufgebläht und Java ist nicht :))? –

+3

Ich kann das Aussehen von Java-GUIs nicht ertragen. Sie sind furchtbar. Ich kenne niemanden, der Java Ui über native UIs bevorzugt – Tim

+1

@Tim Java unterstützt viele Look and Feel, zum Beispiel Fenster native und so weiter. Also Java ist das Beste auch, und es ist wirklich sehr einfach zu arbeiten, und es gibt sehr leistungsfähige Layouts, die das Problem der Größenänderung und so weiter ... –

1

Wenn Sie die Layout-Funktionen eines Dialogfelds in einer MFC-Anwendung möchten, leiten Sie Ihre CView-Klasse von CFormView. Dies sollte ähnlich wie die "Forms" basierte GUI von .NET WinForms, VB6, etc ... sein.

Dies kann über den neuen Anwendungsassistenten unter dem Dropdown-Bereich "Generated Classes 'Base Class" getan werden (ich habe dies geprüft) auf VS 2008).

Sie können auch eine dialogbasierte Anwendung erstellen, mit der Sie bereits vertraut sind.

Es gibt mehrere andere CView-abgeleitete Klassen, die andere Möglichkeiten zum Entwerfen der "Ansichten" Ihrer Anwendung bieten. Wenn Sie die Standard-CView als Basisklasse verwenden (wie die Assistenten standardmäßig erstellen), wird davon ausgegangen, dass Sie die Steuerelemente und/oder manuell erstellen. Das Malen (eigentlich das Zeichnen mit dem GDI) ist etwas, was Old-School-Win32-Entwicklern bekannt sind, aber oft nicht in moderneren Frameworks.

2

Ich habe MFC seit über 10 Jahren verwendet. Es ist nicht schlecht und ich würde es gegenüber anderen Nicht-Microsoft-Frameworks empfehlen, solange Sie nicht daran interessiert sind, Ihre Anwendung auf anderen Plattformen auszuführen. Wenn Sie möchten, dass Ihre Anwendung wie ein Dialog aussieht, dann verwenden Sie CFormView, wie es Aardvark vorgeschlagen hat, und legen Sie es mit dem Dialogeditor aus. In vielen meiner MFC-Programme sind die Ansichten CListViews oder eine Explorer-ähnliche Anwendung mit einem Baum auf der linken Seite und einem ListView auf der rechten Seite. Eine andere, die wir oft verwenden, ist eine allgemeine CView mit einem Tab-Steuerelement und einer Eigenschaftsseite. In diesen haben Sie nicht die Layout-Probleme. Sie erstellen einfach die Steuerelemente und positionieren sie in einem vordefinierten Abstand von den Kanten. Das Prosise ist sehr gut. Das hat mich auf MFC gebracht. Überprüfen Sie CodeProject.com für einige Klassen, die MFC erweitern, z. B. das Ändern der Größe von Dialogen und Eigenschaftenblättern. Brian

+0

Auch 6 Jahre später, ich sage, dass MFC immer noch besser als QT ist, wenn Sie Ich möchte eine Windows-App, oder wenn Sie die Manpower haben, eine native GUI für jede Plattform zu entwerfen. – Lothar

-1

Gehen Sie für QT in GUI-Zwecken. Ich bin mir sicher, Sie werden es mögen ..........

+0

Können Sie uns bitte etwas über die Vorteile erzählen? –

0

Sie können hervorragende Ergebnisse mit MFC erhalten, ohne dass Sie ein anderes Framework hinzufügen müssen. Hier ist ein example von einem Dienstprogramm, das ich erstellt habe.