Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Hauptfenster, Resource

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
10.01.2003, 15:09 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Ich frage mich ob oder wie folgendes geht:
In meiner Applikation mach ich mir mit CreateWindowEx() mein Fenster. Fein. Wenn ich einen Dialog erstelle kann ich beim CreateDialog() eine Ressource angeben. Kann ich mein Hauptfenster auch so gestalten oder muss ich die ganzen Steuerelemente, die ich da drin haben will von Hand laden?
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.01.2003, 15:59 Uhr
~gast
Gast


Hi,

du kannst dein Hauptfenster auch mit einem Resourceneditor
erstellen und da dann verschiedene Steuerelemente einfügen und
das ganze dann per CreateDialog() darstellen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.01.2003, 16:10 Uhr
void*
Generic Pointer
(Operator)


Gut,

jetzt ist nur noch die Frage offen wie?
Angenommen meine Resource ist IDD_MYDIALOG...
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.01.2003, 16:12 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Also das geht eben nur, wenn du als Hauptfenser einen Dialog verwendest. Andernfalls bleibt dir so weit ich weiß nix anderes übrig, als diese selbst zu erstellen.

Was haltet ihr davon? Ist wahrscheinlich nur eine irre Idee, die sich nicht auszahlen wird, denke ich, also:

Man könnte doch folgendes machen:
Ich erstelle einen Dialog per ResourcenEditor. Dann erstelle ich eine intelligente Klasse, die im Konstruktor die ResourcenID verlangt. Ich könnte doch dann still und heimlich in der Klasse diesen Dialog erstellen, dann per EnumChildWindows sämtliche Steuerelemente heraussuchen und diese dann abspeichern, also deren Eingeschaften etc.. Nun soll es möglich sein, einfach dann per Create Funktion dieser Klasse ein Fenster zu erstellen, welches genau die Steuerelemente von dem Dialog enthält. Wäre das eine Idee?
Meint ihr, dass dies sinnvoll sein könnte? Wenn ja, dann werde ich einmal so eine Klasse basteln.

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.01.2003, 16:17 Uhr
Christian
C/C++ Master
(Operator)


Also wie ist eigentlich kein Problem.
Du hast IDD_MYDIALOG und erstellst diesen einfach mit DialogBox(). Dann hast du einen modalen Dialog als Hauptfenser.

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.01.2003, 13:39 Uhr
~Stefan D
Gast


@Christian:
Das ist durchaus keine irre Idee, sondern durchaus nützlich, da man die Dialogelemente dann über Methodenaufrufe ansprechen kann. Ist allerdings auch schon gemacht worden.

Ich habe es zum ersten Mal in der Open Class Library (OCL) von IBM kennengelernt. Da gab es eine Klasse IFrameWindow (nicht nur) für den Dialog. Wollte man einen Dialog erstellen, mußte man eine eigene Klasse von IFrameWindow ableiten und in dieser für alle Elemente des Dialogs, die man ansprechen wollte Objekte spezieller Fensterklassen anlegen, also z.B. IComboBox für Comboboxen, IPushButton für Buttons usw. Das IFrameWindow bekam dann im Konstruktor die Resource-Id des Dialogs und die einzelnen Element-Objekte die Resource-Id der entsprechenden Controls. Der Rest ging dann automatisch und man konnte den Dialog und seine Elemente sehr bequem über die Objekte verwalten.

Die OCL bot darüber hinaus auch ein wunderbares Framework für das Message-Handling, kein Vergleich mit MFC, sondern "echt" objektorientiert. Ich habe die Library immer sehr gern benutzt und verwende sie beruflich noch immer. Wenn sie auch langsam in die Jahre kommt (IBM pflegt sie für Windows schon lange nicht mehr) und eigentlich immer schlechter funktioniert, je weiter die Windows-Versionen fortschreiten.


Stefan.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.01.2003, 14:51 Uhr
Christian
C/C++ Master
(Operator)


Hallo Stefan!

Das freut mich, dass das keine soo irre Idee ist. Aber wenn ich wieder etwas Zeit habe, dann werd ich das Ganze selbst einmal versuchen zu programmieren.

Grüße
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.01.2003, 11:32 Uhr
~gast
Gast


"jetzt ist nur noch die Frage offen wie?"

Du erstellst deine Dialogresource im Resourceneditor und nennst sie z.B.
IDD_MYDIALOG. Dann schreibst du in deinem Programm anstatt
CreateWindow() CreateDialog(). Den Rest kannst du genauso machen
wie wenn du ein "normales Fenster" erstellt hättest.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.01.2003, 14:38 Uhr
void*
Generic Pointer
(Operator)


Hallo,

vielen Dank gast, hatte den 2. Teil Deiner Antwort "überlesen". Dank auch Dir Christian mich drauf zu stossen.

Noch 2 Anschlussfragen:
1. Wenn ich den Dialog schliesse, muss ich gleichzeitig PostQuitMessage() machen?
2. Ich muss keine Fensterklasse registrieren?
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.01.2003, 11:27 Uhr
~gast
Gast


Kein Problem

1. Also PostQuitMessage() hab ich bisher trozdem immer aufgerufen,
ich denke schon das man das braucht.
2. Ne, du brauchst keine Fensterklasse, hat mich zwar auch erst etwas
gewundert, aber die Infos stecken dann anscheinend alle in der
Dialogresource.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: