Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Beispiel Registerkarten in meinem Projekt einsetzen

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 <
000
05.11.2002, 15:40 Uhr
ektoplasma



Hallo, ich habe da ein Problem mit diesem Beispiel.

Es funktioniert ja so weit ganz toll, nur leider werden die beiden Dialogfelder, die eigentlich in der Registrierkarte leigen sollten oben links am bildrand angezeigt.
Irgendwie ist dort anscheinend ein Fehler in der SetRec() Funktion.

Was mache ich falsch, oder was ist dort falsch ???

Hier noch zurr hilfe die Werte die in tabRec, itemRec; stehen :

tabRec = top=0 bottom=171 left=0 right=255
itemRec= top=2 bottom=20 left=2 right=44
--
wurde mit Code 1 (0x1) beendet

Dieser Post wurde am 05.11.2002 um 15:46 Uhr von ektoplasma editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.11.2002, 13:01 Uhr
Volle



Hallo Ektoplasma,

mein erster Beitrag von heute Morgen war Mist. Deshalb habe ich ihn gelöscht. Ich habe deine Frage völlig missverstanden...

Ich habe mal ein Projekt erstellt, das einen Dialog erzeugt, ähnlich den Bildschirmeinstellungen von Windows. Ich gehe dabei einen etwas anderen Weg als in dem Beispiel auf der Seite hier. Aber dafür fällt die SetRec()- Funktion weg. Wenn Du willst schicke ich Dir das ganze Projekt.

Ansonsten hier ein Erklärungsversuch:

Zuerst mal muss man im aktuellen Projekt eine neue Klasse einfügen und diese von der Basisklasse CPropertySheet ableiten (Bsp.: CPSheet). Dann erstellt man sich im Resourcen- Editor die Dialogresourcen für die einzelnen Pages, die man im Tab- Dialog anzeigen lassen möchte. Anschließend erzeugt man auf Grundlage der neu angelegten Resourcen zwei neue Klassen (Doppelklick auf Resource) und leitet diese von CPropertyPage ab (Bsp.: CPPage1 und CPPage2).
Jetzt legt man in der Sheetklasse CPSheet zwei Members für die beiden Pages CPPage1 und CPPage2 an.


C++:
private:
    CPPage1* page1;
    CPPage2* page2;


Dann muss man im Konstruktor der Sheetklasse dafür sorgen, dass die beiden (oder mehr) Pages auch geladen werden.


C++:
CTabSheet::CTabSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
    :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
    page1 = new CPPage1;
    page2 = new CPPage2;
    AddPage(page1);
    AddPage(page2);
}

CTabSheet::CTabSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
    :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
    page1 = new CPPage1;
    page2 = new CPPage2;
    AddPage(page1);
    AddPage(page2);
}

CTabSheet::~CTabSheet()
{
    delete page1;
    delete page2;
}


Da man mit Pointern arbeiten muss (Adressoperator & führt in diesem Fall zum Absturz soweit ich weiß.), sollte man das Freigeben des Speichers im Destruktor nicht vergessen. Außerdem verwendet CPropertySheet einen überladenen Kontsruktor. Daher sollte man den Code in beiden Konstruktoren angeben (Das kann man natürlich auch in eine eigene Funktion auslagern).

Und damit hat sich die Sache dann auch schon erledigt. Wenn man es so macht, dann werden die Seiten sofort richtig angezeigt.

Zusatzinfo:

Wenn man das ganze auf Basis einer dialogfeldbasierenden Anwendung (Wizard) machen will, muss man sich einen kleinen Workaraund geben:

Zuerst mal die Anwendung ganz normal (dialogfeldbasierend) erstellen. Dann, wie oben beschrieben, die Sheet- und Pageklassen erzeugen.

Danach muss man in der InitInstance der App- Klasse folgende Änderung durchführen:


C++:
    CTabSheet dlg("Titel"); //an dieser Stelle eigene Sheetklasse angeben
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {



Dabei die Includes nicht vergessen zu ändern! Danach hat die vom Wizard erstellte Dialogklasse ausgedient und kann gelöscht werden.

Alles klar?

Wenn nicht, frag nach.

Gruß, Volle.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: