Dynamically switching CSplitterWnd panes
Felipe -- jordaof@moodys.com
Thursday, September 05, 1996
Environment: Visual C++ 4.2 with 4.2a patch; Windows NT 4.0 WS
I have a static splitter window with a treeview on the left and a form
view on the right. I want to flip the form view to a different form view
when the user clicks a button. (note: I already saw the split example
from MS). I have the funtion that switches the view in the MainFrame
class as well as a member variable of class CSplitterWnd. Here's the
problem:
- when MFC calls OnCreateClient() the CMainFrame pointer is X.
- when MFC returns to OnCreate() from OnCreateClient() the pointer is X
- when I call AfxGetMainWnd() from the view class/pane to switch views
the pointer I get is X. At this point, the view uses the CMainFrame
pointer to call the CMainFrame::SwitchView() function, and the call
works.
- when I click on "step" in the debugger (which takes me to the beginning
of the CMainFrame.SwitchView() function) the CMainFrame pointer is now
*Y* and an ASSERT_VALID(this) fails.
however, if I call AfxGetMainWnd at the beginning of SwitchView() I get
the X pointer for CMainFrame as it should be.
any ideas why the pointer to the CMainFrame changes from one function to
the next? Is there something I'm missing here? Is CMainFrame the wrong
place to put a function that manipulates it's own CSplitterWnd variable?
thanks
Felipe
jordaof@moodys.com
GoroKhM1 -- gorokhm1@SMTP.ATG-NET.COM
Friday, September 06, 1996
Hi Felipe,
The article Q149257 "Split32: How to Replace a View in a Splitter Window"
may help you. The method in it works fine in my app, which is exact as yours.
If your need some code, let me know.
-Mark
MarkG@usa.net
______________________________ Reply Separator _________________________________
Subject: Dynamically switching CSplitterWnd panes
Author: mfc-l@netcom.com at INTERNET
Date: 9/5/96 10:42 AM
Environment: Visual C++ 4.2 with 4.2a patch; Windows NT 4.0 WS
I have a static splitter window with a treeview on the left and a form view
on the right. I want to flip the form view to a different form view when
the user clicks a button. (note: I already saw the split example from MS).
I have the funtion that switches the view in the MainFrame class as well
as a member variable of class CSplitterWnd. Here's the problem:
- when MFC calls OnCreateClient() the CMainFrame pointer is X.
- when MFC returns to OnCreate() from OnCreateClient() the pointer is X
- when I call AfxGetMainWnd() from the view class/pane to switch views
the pointer I get is X. At this point, the view uses the CMainFrame
pointer to call the CMainFrame::SwitchView() function, and the call
works.
- when I click on "step" in the debugger (which takes me to the beginning
of the CMainFrame.SwitchView() function) the CMainFrame pointer is now
*Y* and an ASSERT_VALID(this) fails.
however, if I call AfxGetMainWnd at the beginning of SwitchView() I get
the X pointer for CMainFrame as it should be.
any ideas why the pointer to the CMainFrame changes from one function to
the next? Is there something I'm missing here? Is CMainFrame the wrong
place to put a function that manipulates it's own CSplitterWnd variable?
thanks
Felipe
jordaof@moodys.com
| Вернуться в корень Архива
|