007
22.01.2003, 18:13 Uhr
Volle
|
Hi,
ich gehe mal davon aus, dass du deine Gründe haben wirst. Aber eigentlich gehören die Pages zum Sheet, und nicht zum aufrufenden Dialog. So sieht es das Framework zumindest vor. Was natürlich nicht heißt, dass man es nicht auch anders machen kann, falls das sinnvoll ist.
Wenn du es ändern willst, brauchst am Code selbst gar nicht viel machen.
Diese Zeilen
C++: |
CTab m_pageMyPage; CTab2 m_pageMyPage2; CTab1 m_pageMyPage1;
|
nimmst aus dem Header des Dialoges raus und kopierst sie in das Header des Sheets.
Diese 3 Zeilen verschiebst
C++: |
m_sheet.AddPage (&m_pageMyPage); m_sheet.AddPage (&m_pageMyPage1); m_sheet.AddPage (&m_pageMyPage2);
|
du in den Konstruktor (am beste in beide, die Sheetklasse har 2) der Sheetklasse und läßt das
einfach weg.
Den Rest solltest eigentlich so lassen können, wie er ist. Du hast es dann etwas einfacher mit den Pointern.
Wenn du deinen Code so lassen willst, wie er ist, dann musst du entweder dafür sorgen, dass du die benötigten Page- Pointer an die Sheetklasse übergibst, z.B. wieder über den Konstruktor analog zu den Pages, oder du setzt den Handler in die Klasse des aufrufenden Dialoges. Ich kenne gerade jedenfalls keine Member- Funktion von CPropertySheet, die dir die Pointer auf die einzelnen Pages zurückliefert. Vielleicht gibt es sowas aber trotzdem. Das kann schon sein. Aber eigentlich "kennt" die Sheet- Klasse die Pointer ja, weil die Instanzen normalerweise dort gebildet werden.
Grüße, Volle. |