Re: Get pointer to parent of parent (2 levels back) - NEWBIE QUEST
Thanks again to: Bogdan, David W., David C. and Scott M. (I think I got
everyone...?) for your insight.
The casting thing usage is getting clearer. I will have to do more reading
about the MFC macros. The legacy code I am supporting uses those macros
everywhere so being an MFC novice, I just assumed that when working with MFC
classes, these should be used. It looks like I will try to understand how
they are useful and avoid using them until I find a case where the
xxx_DOWNCAST macros provide a specific functionality that makes them a better
choice.
Jim
"Bogdan" wrote:
Simply recurse until you get the parent you want.
Example (might not necessary work for you):
CWnd* pwndParent = GetParent();
while (pwndParent->GetStyle() & WS_CHILD) {
pwndParent = pwndParent->GetParent();
}
Bogdan
"Jimbo_Jimbob_Jiminator" <Jimbo_Jimbob_Jiminator@discussions.microsoft.com>
wrote in message news:508CE4E9-27DF-47A0-ABDD-EC9E13F25359@microsoft.com...
My application is dialog-based.
The App creates a dialog. The dialog creates a property sheet. The
property
sheet creates 4 property pages.
The dialog opens a file. I want the property pages to be able to write to
the file. How can I get access back to that file pointer? I found
m_pParentWnd in the Property Page. But, I can't go back like this
m_pParentWnd->m_pParentWnd to get two levels back.
I thought about passing the pointer to the CFile in via the contructors of
the dialog, then to the sheet, then to the pages but I am not sure how to
do
that either.
Any help is greatly appreciated.
Regards
Jimbo_Jimbob_Jiminator
-----------------------
// --- FILE: Test.h
class CMFCTestApp : public CWinApp
// --- FILE: Test.cpp
CMFCTestApp theApp;
CMotmanDlg dlgTest;
m_MainWnd = &dlgTest;
nResponse = dlgTest.DoModal;
-----------------------
// --- FILE: TestDlg.h
class CMFCTestDlg : public CDialog
public
CFile* pDataFile;
// --- FILE: TestDlg.cpp
m_pPSheetTest = new CPSheetTest(m_sWinTitle, (CWnd*)this, 0);
... open("datafile.dat"); // Open the data file at the dialog level
/*--------------------------------------------------------------------
WARNING! EX_CONTROLPARENT MUST be here for tabbed pages to work
correctly!!!!
See WS_EX_CONTROLPARENT.txt file in project directory for more
explanation.
--------------------------------------------------------------------*/
m_pPSheetTest->Create(this, dwStyle, WS_EX_CONTROLPARENT);
m_pPSheetTest->ShowWindow(SW_SHOWNORMAL);
m_bIDOK.EnableWindow(FALSE);
m_bIDOK.ShowWindow(SW_HIDE);
-----------------------
// --- FILE: PSheetTest.h
class CPSheetTest : public CPropertySheet
// --- FILE: PSheetTest.cpp
AddPage(&m_PPage1);
AddPage(&m_PPage2);
AddPage(&m_PPage3);
AddPage(&m_PPage4);
SetActivePage(0);
-----------------------
// --- FILE: PPageTest1.cpp
// --- FILE: PPageTest2.cpp
// --- FILE: PPageTest3.cpp
// --- FILE: PPageTest4.cpp
... Want to access the datafile.dat from all of these pages
-----------------------