Hallo, ich würde gerne ein Projekt in MFC angehen. Da ich hiermit noch nicht viel Erfahrung gesammelt habe, möchte ich zuerst grundlegend Fragen wie Ihr an ein solches Projekt herangehen würdet. Z. B. ob man externe Elemente einbinden kann/sollte und darum, wie man in MFC das Anwendungsfenster der SDI verwendet. Aber zu Beginn möchte ich erst einmal beschrieben was ich vorhabe. Dann wird euch bestimmt vieles Einfallen an das ich noch gar nicht denke. Es existieren mehrere Ordner auf denen sich etwa 200 Files befinden. Bei den Files handelt es sich um Binärdateien auf denen zweidimensionale Charts gespeichert sind. Dem Programm möchte ich später einen Speicherpfad übermitteln, wo die Ordner gespeichert sind und es sollen alle Files in einer Art "List Control" dargestellt werden. Das sieht dann später wie folgt aus: ID Filename Ordner Pfad Extra Spalten 0 File1 Ordner 1 C:/.../Ordner1/File1 1 File2 Ordner 2 C:/.../Ordner1/File2 2 ... 3 4 Hierbei sollte es möglich sein, die Tabelle dynamisch zu verändern. Also weitere Spalten einfügen, Text verändern, Spalten verschieben und Sortierungen vorzunehmen. Die Feinheiten werden dann später in C programmiert ich bräuchte nur eine GUI-Anwendung, die die grafischen Elemente übernimmt. Also die mir mitteilt, wenn ein Element angewählt wird, wenn ein Text geändert wurde etc.. Wenn das fertig ist benötige ich später einen Chart, der die Werte in den Files ausgeben kann. Mittlerweile habe ich herausgefunden, dass es in der MFC Dialogfenster gibt in die man z. B. ein "List Control" einfügen kann. Es lassen sich auch externe ActiveX Elemente einfügen. Wenn man dies getan hat lässt sich die restliche Bearbeitung mit normalen C/C++ Kenntnissen übernehmen und sollte somit kein Problem sein. In der SDI kann man so weit ich weiß keine Elemente wie ActiveX oder Sachen wie Buttons, List Control etc. einfügen. Hier kann man jedoch einzelne Linien ziehen und somit Geometrien zeichnen. Es lassen sich auch Dialogfenster aufrufen. Diese werden dann jedoch in externen Fenstern geöffnet und müssen beendet werden, bevor man zurück auf das Hauptfenster kommt. Die Fragen sind nun folgende: Kann man auf dem SDI Hauptfenster auch Elemente für Dialogfenster (Buttons etc.) oder externe Elemente (ActiveX etc.) einbinden? Wenn ja, kennt Ihr mehr oder weniger fertige GUI-Elemente die man Sinnvoll für meine Anwendung verwenden kann? Wenn nein, macht es Sinn einen Chart komplett durch zeichnen einzelner Linien zu programmieren. Das ist theoretisch nicht weiter aufwendig, da man nur die Datenpunkte mit Linien verbinden und das ganze noch auf die Größe des Charts skalieren muss. Aufwendig wird es dann nur wenn die ganzen Feinheiten dazukommen wie Zoomen, Skalieren der Skalen etc.. Von daher währe mir eine fertige integrierbare Lösung lieber. Vielen Dank für alle Anregungen.
A. R. schrieb: > In der SDI kann man so weit ich weiß keine Elemente wie ActiveX oder > Sachen wie Buttons, List Control etc. einfügen. O doch, das geht sehr wohl. Nutze CFormView als grundlegende Viewklasse, und Du kannst alle Elemente verwenden, die Du auch in CDialog verwenden kannst. CListCtrl ist schon ganz brauchbar für Deine Anwendung, allerdings gibt es auch fertige Klassenbibliotheken, die das um einiges mehr an Funktionalität erweitern, die Du dann nicht "von Hand" nachbauen musst.
Vielen Dank für die Hilfe. >O doch, das geht sehr wohl. Nutze CFormView als grundlegende Viewklasse, >und Du kannst alle Elemente verwenden, die Du auch in CDialog verwenden >kannst. Das wusste ich noch nicht. Super Hinweis. Ich habe jedoch schon mehrere Beispiele gesehen, wo Elemente ohne die Klasse CFormView eingebunden worden sind. Bin aber bis jetzt aus dem Quellcode nie wirklich schlau geworden. Weißt du vielleicht, wo man nachlesen kann, wie so etwas gemacht wird? Alle Quellen, die ich online gefunden habe erklären nur wie man eine Dialogbox aufbaut und wie man in einer SDI direkt zeichnen kann. UltimateGrid werde ich mir auf jeden Fall einmal anschauen das sieht sehr vielversprechend aus. Hat jemand noch Vorschläge, wie man ein Diagramm realisieren könnte?
A. R. schrieb: > Ich habe jedoch schon mehrere > Beispiele gesehen, wo Elemente ohne die Klasse CFormView eingebunden > worden sind. Definiere "Elemente". Dialogelemente können selbstverständlich auch in Dialogen verwendet werden, dafür sind sie sogar da. Die MFC kennt auch dialogbasierte Applikationen, aber die folgen dann halt nicht dem Document/View-Konzept. Wenn Du Diagramme anzeigen möchtest, bist Du allerdings mit Dialogen und auch CFormView nicht auf dem richtigen Pfad. Solche Ausgaben erfolgen in normalen von CView oder CScrollView abgeleiteten eigenen Viewklassen, auf der von mir verlinkten Seite (wo UltimateGrid zu finden ist), sind auch sehr viele andere MFC-Codebeispiele zu finden. Um aber das Grundkonzept wenigstens etwas nachvollziehen zu können, solltest Du das Scribble-Tutorial von Microsoft durcharbeiten.
>Definiere "Elemente". Dialogelemente können selbstverständlich auch in >Dialogen verwendet werden, dafür sind sie sogar da. Die MFC kennt auch >dialogbasierte Applikationen, aber die folgen dann halt nicht dem >Document/View-Konzept. Mit Elementen meinte ich Steuerelemente also Buttons, Static Text etc. Mittlerweile habe ich jedoch herausgefunden, wie ich solche in der SDI (Klasse CView oder CFrameWndEx) einbinden kann. >Wenn Du Diagramme anzeigen möchtest, bist Du allerdings mit Dialogen und >auch CFormView nicht auf dem richtigen Pfad. Richtig. Ich werde versuchen folgende Bibliothek zu verwenden: http://www.codeproject.com/KB/miscctrl/pgllib.aspx Das Scribble Tutorial werde ich ggf. dem nächst noch durcharbeiten. http://msdn.microsoft.com/en-us/library/aa232164%28v=VS.60%29.aspx
A. R. schrieb: > Richtig. > Ich werde versuchen folgende Bibliothek zu verwenden: > http://www.codeproject.com/KB/miscctrl/pgllib.aspx Schöne Funktionalität. Achte bei solchen Dingen auch darauf, dass du die Charts leicht auf Papier (Drucker) und ins Clipboard kriegen kannst. Im einfachsten Fall genügt es, wenn die Lib dir die Ausgabe in eine Bitmap rendern kann.
A. R. schrieb: > Hallo, > > ich würde gerne ein Projekt in MFC angehen. Da ich hiermit noch nicht > viel Erfahrung gesammelt habe, möchte ich zuerst grundlegend Fragen wie > Ihr an ein solches Projekt herangehen würdet. Nun, wenn ich noch nicht viel Erfahrung mit MFC hätte, dann würde ich den Schrotthaufen ganz schnell wieder vergessen und auf Qt bauen. > Dem Programm möchte ich später einen Speicherpfad übermitteln, wo die > Ordner gespeichert sind und es sollen alle Files in einer Art "List > Control" dargestellt werden. Das sieht dann später wie folgt aus: Qt abstrahiert das Dateisystem, sodass du vom lausigen Win-API wegkommst. Bäume gehen mit QTreeWidget sehr komfortabel. > Hierbei sollte es möglich sein, die Tabelle dynamisch zu verändern. Also > weitere Spalten einfügen, Text verändern, Spalten verschieben und > Sortierungen vorzunehmen. Wenn es dynamisch wird, drängen sich die Model-View-Architektur und die QTreeView und QTableView-Komponenten auf. > Wenn das fertig ist benötige ich später einen Chart, der die Werte in > den Files ausgeben kann. Dafür nehme ich sehr gerne die Qwt-Bibliothek. Damit erübrigt sich in den allermeisten Fällen jegliches händische Gemale. Im Zweifelsfall aber kann man sich in die Qwt-Architektur einklinken und selbst Markierungen vornehmen. Drucken und Rendern in Bilddateien geht natürlich, das abstrahiert Qt wiederum. http://qwt.sourceforge.net/ > Aufwendig wird es dann nur wenn die > ganzen Feinheiten dazukommen wie Zoomen, Skalieren der Skalen etc.. Von > daher währe mir eine fertige integrierbare Lösung lieber. Das bringt die Qwt-Bibliothek in vielfältiger Weise bereits mit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.