ghimireniraj
asked on
Get Frame pointer in the View
I have created a SDI interface application and in that application with the class wizard have added two more views
and in each view's on draw function have code to textout three diff strings.
Now what i have done is that i have defined a pointer each for the 3 views in the CMain Frame class
like,
CMainFrame ....
{
public:
CComdirView * view1;
BriefView * view2;
DescView * view3;
...
}
Now in the
OnInitialUpdate()
for each views
i have written
XXX::OnInitialUpdate()
{
///N is 1 2 3
GetParentFrame()->viewN=th is;
}
Now i have created menu and comands for each three views in the frame window
in each command function
CMainFrame::OnXXX()
{
//n=1,2,3
SetActiveWindow(viewN,TRUE );
}
but it says you can't convert from
CComdirView
or
DescView
or
BriefView
to Cview
What is the prob?
How can i solve it?
Now the prob is
and in each view's on draw function have code to textout three diff strings.
Now what i have done is that i have defined a pointer each for the 3 views in the CMain Frame class
like,
CMainFrame ....
{
public:
CComdirView * view1;
BriefView * view2;
DescView * view3;
...
}
Now in the
OnInitialUpdate()
for each views
i have written
XXX::OnInitialUpdate()
{
///N is 1 2 3
GetParentFrame()->viewN=th
}
Now i have created menu and comands for each three views in the frame window
in each command function
CMainFrame::OnXXX()
{
//n=1,2,3
SetActiveWindow(viewN,TRUE
}
but it says you can't convert from
CComdirView
or
DescView
or
BriefView
to Cview
What is the prob?
How can i solve it?
Now the prob is
here is some code to switch views in sdi
CView* pOldView = GetActiveView();
CView* newView = new UrnView();
CCreateContext context;
context.m_pCurrentDoc = pOldView->GetDocument();
newView->Create(NULL,NULL, WS_BORDER, CFrameWnd: :rectDefau lt,this,n, &context);
newView->OnInitialUpdate() ;
SetActiveView(newView);
newView->ShowWindow(SW_SHO W);
RecalcLayout();
here n is ur nth view and
put this code in CMainFrame
CView* pOldView = GetActiveView();
CView* newView = new UrnView();
CCreateContext context;
context.m_pCurrentDoc = pOldView->GetDocument();
newView->Create(NULL,NULL,
newView->OnInitialUpdate()
SetActiveView(newView);
newView->ShowWindow(SW_SHO
RecalcLayout();
here n is ur nth view and
put this code in CMainFrame
Hi,
Where exactly that error is coming?. Is it in
SetActiveWindow(viewN,TRUE );?
Then I think MFCAnswer's solution will work.
VinExpert
Where exactly that error is coming?. Is it in
SetActiveWindow(viewN,TRUE
Then I think MFCAnswer's solution will work.
VinExpert
Have you tried
SetActiveWindow((CView *)viewN,TRUE);
?
regards,
Mike.
SetActiveWindow((CView *)viewN,TRUE);
?
regards,
Mike.
ASKER
I have tried to switch between views and have done it sucessfully between 3/4 views and it works fine but i wanted to do that in the structure i described in this question .
The reason being that if i can store the pointers of all the views in my main frame class on their first construct i can switch between them
with with just two lines when ever i want
ie
SetActiveView(...stored view pointer);
...xx->ShowWindow(..);
and further more if i can acess my main frame pointer from my views i can switch between views from buttons in my view window.
Well but i think there are some fundamental mistakes in my structure
(architecture) .
Can you figure out what it is?
Niraj
The reason being that if i can store the pointers of all the views in my main frame class on their first construct i can switch between them
with with just two lines when ever i want
ie
SetActiveView(...stored view pointer);
...xx->ShowWindow(..);
and further more if i can acess my main frame pointer from my views i can switch between views from buttons in my view window.
Well but i think there are some fundamental mistakes in my structure
(architecture) .
Can you figure out what it is?
Niraj
Have you tried Mike's solution?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks MFCanswers for you comment .
Are views created every time i want to view them and destroyed every time i switch to next view.
If that is the case i think the pointers will be no use storing.
So what do you think is the solution when i want to switch to a another view from say a command from a button in the client are a of the view that i am currently in ?
May be like making use of self generated messages.
Thank you.
Are views created every time i want to view them and destroyed every time i switch to next view.
If that is the case i think the pointers will be no use storing.
So what do you think is the solution when i want to switch to a another view from say a command from a button in the client are a of the view that i am currently in ?
May be like making use of self generated messages.
Thank you.
In MDI u can have many document templates created at a time and
u can keep switching between them.
I do not know how to do it in SDI.
For the functionality you are looking for. jus add the button in the view and then put the handler in mainframe so that u can change views from one to another. Yes, u have to create it every
time in the handler.
u can keep switching between them.
I do not know how to do it in SDI.
For the functionality you are looking for. jus add the button in the view and then put the handler in mainframe so that u can change views from one to another. Yes, u have to create it every
time in the handler.
what happened ?
ASKER
thx
viewN->SetAvtivwWindow();