Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Eigenschaftsblatt, Werte übergeben

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 < [ 3 ]
010
24.01.2003, 09:17 Uhr
Tom



Juchu

Das mit dem OnInitDialog habe ich hinbekommen.

C++:
    CTabSheet* m_sheet = new CTabSheet("Eigenschaften");

    m_sheet->Create (this,WS_CHILD|WS_VISIBLE,0);
    m_sheet->ModifyStyleEx (0,WS_EX_CONTROLPARENT);
    m_sheet->ModifyStyle (0,WS_TABSTOP);
    CRect rect;
    GetDlgItem(IDC_TAB1)->GetWindowRect(&rect);
    ScreenToClient(&rect);
    m_sheet->SetWindowPos(NULL,rect.left -7,rect.top-7,0,0,

jetzt sieht das so aus und er machts
Jetzt mache ich mich an den Datenübertrag ran.
Danke bis hier her.

THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
24.01.2003, 10:26 Uhr
Tom



Oh jeh

Sorry, das ich nerve, habe aber schon wieder ein Problem.
Habe neu angefangen und von grund auf so gebaut wie Volle erzählt hat.

Wenn ich jetzt aber den Konstrucktor von meiner Page Klasse überladen möchte

C++:
Page1::Page1(Sheet* psheet) : CPropertyPage(Page1::IDD)
{
    //{{AFX_DATA_INIT(Page1)
    m_eingabe = _T("");
    //}}AFX_DATA_INIT
}

kommt dieser "error C2629: 'class Page2 (' unerwartet" fehler beim kompelieren.

Der Header davon sieht so aus

C++:
class Page1 : public CPropertyPage
{
    DECLARE_DYNCREATE(Page1)

// Konstruktion
public:
    Page1(Sheet*)
    ~Page1();



THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
24.01.2003, 10:56 Uhr
Volle



Hallo,

du kannst ruhig fragen. Das nervt niemanden, denke ich. Dafür ist das Forum ja da...

Ich habe ein Beispiel gefunden:

So ähnlich sollte der Konstruktor im Header der PorpertyPage aussehen:


C++:
class CPSheet;

class CPPage1 : public CPropertyPage
{
    DECLARE_DYNCREATE(CPPage1)

public:
    CPPage1(CPSheet* aSheet=NULL);
//...
private:
             CPSheet* pSheet;



Das hier ist die Implementierung in der CPP- Datei:


C++:
IMPLEMENT_DYNCREATE(CPPage1, CPropertyPage)

CPPage1::CPPage1(CPSheet* aSheet)
    : CPropertyPage(CPPage1::IDD)
    , pSheet(aSheet)
{
    //{{AFX_DATA_INIT(CPPage1)
        // HINWEIS: Der Klassen-Assistent fügt hier Elementinitialisierung ein
    //}}AFX_DATA_INIT
}



Und hier der Aufruf von AddPage im Konstruktor vom PropertySheet:


C++:
CPSheet::CPSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
    :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
    m_Page1 = new CPPage1(this);



Auch das "class CPSheet;" im Header von der Page ist nicht ganz unwichtig. Dann hast du keinen Ärger mit den includes.

Jetzt hast du in CPPage1 den Pointer pSheet, der auf die aktuelle Instanz der Sheetklasse zeigt. Damit kannst du dann über "pSheet->..." auf die Sachen der Sheetklasse zugreifen.

Alles klar?

Grüße, Volle.

Dieser Post wurde am 24.01.2003 um 11:00 Uhr von Volle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
27.01.2003, 08:51 Uhr
Tom



Danke für eure Hilfen, speziell @Volle

Habe jetzt nur noch ein Problem.
Wenn ich jetzt einen Pointer auf meine SheetKlasse erstelle und ihn im OnInitDialog ausführen möchte, macht er das net.

C++:
    Sheet* m_sheet = new Sheet("Eigenschaften");

    m_sheet->Create (this,WS_CHILD|WS_VISIBLE,0);
    m_sheet->ModifyStyleEx (0,WS_EX_CONTROLPARENT);
    m_sheet->ModifyStyle (0,WS_TABSTOP);
    CRect rect;
    GetDlgItem(IDC_TAB1)->GetWindowRect(&rect);
    ScreenToClient(&rect);
    m_sheet->SetWindowPos(NULL,rect.left -7,rect.top-7,0,0,SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);

Bei ModifyStyleEx, ModifyStyle und SetWindowPos mach er einen Runtimefehler.
Ständig an der Zeile

C++:
BOOL CWnd::ModifyStyleEx(DWORD dwRemove, DWORD dwAdd, UINT nFlags)
{
    ASSERT(::IsWindow(m_hWnd));

THX
Tom

Dieser Post wurde am 27.01.2003 um 08:52 Uhr von Tom editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
27.01.2003, 13:49 Uhr
Volle



Hallo Tom,

ich nehme an, der oben gezeigte Code steht in OnInitDialog des aufrufenden Dialoges, oder?

Die Fehlermeldung bedeutet jedenfalls, dass das Fenster noch nicht erstellt ist.

Verschiebe diese Zeilen:


C++:
    m_sheet->ModifyStyleEx (0,WS_EX_CONTROLPARENT);
    m_sheet->ModifyStyle (0,WS_TABSTOP);
    CRect rect;
    GetDlgItem(IDC_TAB1)->GetWindowRect(&rect);
    ScreenToClient(&rect);
    m_sheet->SetWindowPos(NULL,rect.left -7,rect.top-7,0,0,SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);



mal in die OnInitDialog- Funktion deiner Sheetklasse. (Das 'm_sheet->' dann halt weglassen.) Dann sollte das gehen.

Grüße, Volle.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
28.01.2003, 08:30 Uhr
Tom



Hallo Volle

Ja, der Code steht im OnInitDialog.
Ich habe versucht den Code in die OnInitDialog meiner SheetKlasse zu packen, aber
1. es gibt keinen in dieser Klasse
2. ich habe versucht eine zu erstellen (die Funktion sieht aus wie im Hauptdialog aber, natürlich ohne den schnick scnak ringsrum.)
nur

C++:
BOOL Sheet::OnInitDialog()
{
    ModifyStyleEx (0,WS_EX_CONTROLPARENT);
    ModifyStyle (0,WS_TABSTOP);
    CRect rect;
    GetDlgItem(IDC_TAB1)->GetWindowRect(&rect);
    ScreenToClient(&rect);
SetWindowPos(NULL,rect.left -7,rect.top-7,0,0,SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE);
}

leider musste ich fesstellen, dass er die Funktion net mal "anfasst"

Hast du vieleicht noch eine Idee?

THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
28.01.2003, 09:21 Uhr
Tom



@ Volle

Hast du vieleicht Lust und Zeit dir das Prog mal anzugucken?
Wenn ja, wo kann ich es hinschicken?
Vieleicht kannst du mir so weiter helfen.
Bin am verzweifeln

THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
28.01.2003, 11:37 Uhr
Tom



Habe mir grade den Post von Uwe
showtopic.php?threadid=1327
durchgelesen. Das gleiche Problem. Es ist die Erstellung angegeben (für mich noch net zu realisieren auf diesem weg) Das Problem ist nur, er hat auch wieder net einen Wert von einem "Reiter" zum andern übergeben.

THX
Tom

Dieser Post wurde am 28.04.2014 um 08:54 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
28.01.2003, 11:56 Uhr
Volle



Hallo Tom,

klar, du kannst mir das schicken.

Email aus Profil...

Grüße, Volle.

P.S.: Debug- und Releaseordner halt weglassen...

Dieser Post wurde am 28.01.2003 um 11:58 Uhr von Volle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
28.01.2003, 12:00 Uhr
Tom



@Volle

gesendet
THX
Tom
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ 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: