Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

1

03.12.2003, 15:52

Windows Form

Hi,
man kann doch im Visual C++ ein FORM VIEW Objekt erstellen, wie ich aus anderen Editoren weiss, kann man das meistens als "Oberfläche" einer Windows Anwendung einbinden! Weiss jemand wie, in der Dokumentation dazu staht soviel ich weiss nix

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

2

03.12.2003, 17:28

Meinst du, mit dem Anwendungsassistenten eine von 'CFormView' abgeleitete Ansichtsklasse oder willst du in einer bestehenden Anwendung ein CFormView-Objekt erzeugen???

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

03.12.2003, 17:41

ne, nicht in einer Anwendung ein solches FORM Objekt erzeuegen, mann kann doch in eine Resourcen Datei ein Icon, Dialog, Bitmap... was weiss ich und auch ein FORM Objekt erstellen. ;D

Mein Programm soll erst einen Dialog starten (funktioniert), dann ein Fenster (funktioniert), aber in das Fenster will ich jetzt KEIN D3D oder so was haben, sondern ein paar Buttons u.s.w. (ich weiss nicht, ob man das bei Viaual C++ MFC-Objekte Nennt, sorry, bei Borland hießen diese VCL - Objekte (die Buttons u.a.)

Und genau diese Buttons will ich jetzt auf mein Fenster haben, ich denk mal (weiss es aber nicht ganau) da man das dann mit diesen Formen machen kann, deshalb frag ich ja -- und wie man das ganze anstellt :angel:

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

4

03.12.2003, 20:41

Also...

ich weiß ja nicht, wie viel du von Visual C++ schon weißt, aber so wie sich das anhört, reicht dir doch eigentlich ein (modales) Dialogfenster, in das du Buttons usw mit dem Ressourceneditor (nicht Ressourcendatei, sondern innerhalb der IDE) einfügen kannst. Wenn ja, dann musst du einfach eine neue Ressource (Dialog) erstellen, sie designen und dann mit dem Klassenassistenten (bei Version 7 heißt er anders, glaube ich) eine von CDialog abgeleitete Klasse erzeugen.
Wenn du aber irgend was spezielles mit dem Fenster vorhast, also ein eigenes benutzen willst, dann musst du wahrscheinlich die Steuerelemente "von Hand" erstellen (mittels 'Create') und dem Fenster zuordnen.

Wenn dir wirklich ein Dialogfeld (bei Borland werden die glaube ich eher "Formular" genannt als in VC++) reicht und du nicht weißt, wie das geht, dann frage mich einfach, wie das genauer geht... 8)

Es würde mir einfach helfen, wenn du mir sagen würdest, WIE GUT du VC++ und MFC schon kennst (denn ich bin ja auch kein Profi) :angel:

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

03.12.2003, 21:24

Naja, das mit den Formularen bei Borland geht ein bischen anders:

Ich hatte eine ganze Weile lang "Borland 5 C++ Builder" (Standart Edition), aber dieser benötigte immer VCL Bibliotheken, die mussten mienen Programmen immer mitgeliefert werden. Das war um ehrlich zu sein einfach nur schei****e :), man hat da ein kleines Programm, das nichts macht ausser etwas auszugeben, wenn man auf einen Button drückt, das Programm an sich ist ca. 200kB groß, die Bibliotheken aber ca. 2MB und das war doof.

Naja, zum Thema:

Bein BORLAND erstellte man ein Fenster, das hatte ein sogennates Formular (oder kurz: Form), in dieses Formular konnte man Objekte (Buttons, Listen, u.s.w. erstellen). Wenn man die Anwendung startete, erstellte Borland ein Fenster (automatisch) mit diesem Foumular darauf! Borland unterschied also ganz klar zwischen DIALOG und WINDOWSFORM

Ich wusste nicht, das das mit Visual C++ nicht so geht! Ich bin auch erst umgestiegen, wegen dieser VCL Bibliotheken, hauptsächlich.

Also du sagst: es geht einen Dialog (keinen Modalen), so viele wie du willst zu erstellen? [erinner: das gib bei Borland auch], aber ohne eine eigentliches Fenster zu erstellen? also nur durch Dialoge????

etwa mit:

Quellcode

1
2
3
4
5
6
7
        IS_INFO_MSG("Initialisiere Dialog für Lizensen");
        // Dialog anzeigen mit den Lizensen
        Result = (int)(DialogBox(hInstance,
                              MAKEINTRESOURCE(IDD_LICENSE_DLG),
                              NULL,
                              LCDialogProc));
        if(Result == IS_CANCELED)  { IS_INFO_MSG("Beende Programm, ABLEHNEN gedrückt"); return 0; }


natürlich mit der Prozedur (Methode) => (LCDialogProc)
???

Wenn ja, schick mir mal den Code für keinen Modalen Dialog

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

03.12.2003, 21:49

Zitat

Es würde mir einfach helfen, wenn du mir sagen würdest, WIE GUT du VC++ und MFC schon kennst (denn ich bin ja auch kein Profi)


Also wie gesgat, ich bin erst neuerdings auf VC++ aumgestiegen, durch das Buch hauptsächlich, welches Fantatstisch ist *LOB*

fazit: etwas, ich kann LIB's einbinden, DLL's erzeugen, Resourcen verarbeiten..... Und C++ kann ich auch ganz gut!

mit MFC kenn ich mich allerdings fast gar nich aus, ich weiss wie man den Text eines Feldes ändert, und so ein bischen was, aber das wars.

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

7

04.12.2003, 18:26

In VC++ reicht doch völlig aus, einfach ein nichtmodales Dialogfeld zu erstellen (mit dem Ressourcen-Editor in der IDE). Du kannst es sogar so aussehen lassen, als sei es das Hauptfenster der Anwendung (du kannst es sogar mit einem Menü versehen)(Nur wenn du wirklich eine Doc/View-Anwendung willst, dann must du es anders machen). Wenn du fertig bist mit dem designed von Buttons etc, dann erstelle einfach eine Klasse (bei VC++ 6 STRG+W drücken während dein Dialog im Focus ist), die du von CDialog ableitest. So, und nun kannst du einfach eine Instanz dieser Klasse erzeugen (Header einbinden!) und die Methode 'Create' aufrufen (in der VC++ Hilfe stehen die Parameter von CDialog::Create()). Die Kommunikation zwischen Dialogklasse und dem, was die Instanz erzeugt hat, erfolgt von der Anwendung über die Instanz (auf Members) und andersherum kann das Dialogobjekt z.B. über einen erhaltenen Pointer auf das Rahmenobjekt zugreifen.
Zerstören tust du den Dialog einfach mit CDialog::DestroyWindow(), aber schau dir einfach mal die VC++ Hilfe Dokus über die Dialogklasse an.

Ein kurzes Beispiel:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "myDialog.h"

...

// Hier ist die Anwendung
...
CmyDialog dlg;
int iResult = dlg.DoModal(); // das wäre modal
dlg.Create(...); // das wäre nichtmodal
CmyDialog.m_pPointerToFrame = this; // für Kommunikation
...
if(dlg.m_bIsButtonPressed)
     MessageBox("Button gedrückt!");
...
dlg.DestroyWindow();

Bei dem Beispiel müsste die Klasse CMyDialog eben noch einen Member-Pointer für einen Zeiger auf die Aufrufklasse besitzen.
Die Reaktionen auf Nachrichten innerhalb des Dialogs übernimmt aber die Dialogklasse selbst. Sie geht selbstständig mit ihnen um (über virtuelle CDialog-Methoden) und die Werte der Steuerelemente können automatisch in Member-Variablen gespeichert werden (rein visuell, du brauchst DDX und DDV nicht selbst übernehmen), aber der Dialog kommt so ziemlich allein zurecht (eine dialogfeldbasierte MFC-Anwendung ist nichts anderes als eine reine Dialogklasse mit ihrer Ressource).

Also, wenn's immer noch nicht klappt, dann lies doch ein paar Internet-Tutorials, wie z.B. http://www.henkessoft.de/inhalt.htm oder das Online-Buch VC++ in 21 Tagen bei http://www.mut.de/media/buecher/VCPLUS6/data/inhalt.htm

Viel Glück

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

8

04.12.2003, 20:26

Vielen Dank erstmal, ich denek ich werde dich da noch einiges Fragen müpssen, sieht aber erst mal ganz logisch aus :), Danke! ;D

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

9

05.12.2003, 08:06

Hi, nett, das de das it gegeben hast... war zwar nicht ganz das richtige, weil ich eine Anwendung mit Butrtins u.s.w. wollte, wo KEINE DLL mitgeliefert werden musste, bei MFC ist das aber der Fall, trotzdem DANKE!

Das Problem hat sich jetzt geklärt!

p.s. weisst du wie man ein Verzeichnis einlesen kann, mit so nem Dialog wie OPENFILENAME ???

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

10

05.12.2003, 15:30

Hmmm... du meinst einen Dialog zum Auswählen einer Datei (oder eines Verzeichnisses)?

Das ist ganz einfach (natürlich MIT MFC und dll):

Du erstellst einfach ein CFileDialog-Objekt (oder ein davon selbst abgeleitets Objekt) und rufst es modal auf mit CFileDialog::DoModal(). Der Rückgabetyp ist die Konstante für den Button, den der Benutzer gedrückt hat und das Verzeichnis, der Dateiname oder die Dateieendung bekommst du dann durch Methoden wie CFileDialog::GetPathName() und ähnliche...
(du kannst bei der Konstruktion auch einen Filter angeben, der nur bestimmte Dateitypen zulässt, und weitere Optionen).

Also, ich hoffe, ich konnte dir insgesamt helfen (ich wusste ja nicht, dass du GANZ ohne DLL auskommen willst (du kannst die MFC auch statisch linken!), aber eigentlich müssten die Standard-DLLs der MFC auf jedem PC, der irgendwann was mit Microsoft zu tun hatte, vorinstalliert sein.

Also dann,

kontaktiere mich ruhig in Bezug auf MFC, wenn du fragen hast (doch irgendwann werde ich dir auch nicht mehr weiterhelfen können, schließlich bin ich auch nicht sooo erfahren (bin ja erst 16 Jahre alt... 8) )

Viel Glück noch,

Till

In Deinem Beitrag befinden sich noch Fehler.
Bitte bearbeite die rot markierten Stellen und lösche diesen Text.

Werbeanzeige