怎样实现视的切换? 每个视都是从窗口类(CWnd)派生,因此可以用ShowWindow函数,此函数可以设置参数,隐藏视图1,显示视图2,实现了切换. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是另一个视图是派生于CDialog,怎么半? 哈哈,CDialog也是从CWnd派生的啊!!其实你要是看一看分割窗口的例子,对切换视图会有很好的理解!!好运!!! BOOL CImpDlg::CreateWnd(CWnd* pParent,CRect rcC){ BOOL f=CDialog::Create(CImpDlg::IDD,pParent); MoveWindow(rcC); ShowWindow(SW_SHOW); return f;}在初始化是 m_ed.CreateWnd(this,rcC); m_ed.ShowWindow(SW_HIDE);切换时 m_ed.ShowWindow(SW_SHOW);但总是另外弹出对话框,还有什么我没考虑到的? 自定义切换函数:例如下面两个在菜单选择下选择不同的视图,例子中有两个视图:void CMainFrame::ChangeForm(int nForm){ CView * pOldActiveView=GetActiveView(); CView * pNewActiveView=(CView *)GetDlgItem(nForm); if (pNewActiveView==NULL) { switch(nForm) { case IDW_ORDER_FORM: pNewActiveView = (CView*)new CProdView; break; case IDW_CUST_FORM: pNewActiveView = (CView*)new CCustView; break; } CCreateContext context; context.m_pCurrentDoc=pOldActiveView->GetDocument(); pNewActiveView->Create(NULL,NULL,0L,CFrameWnd::rectDefault,this,nForm,&context); pNewActiveView->OnInitialUpdate(); } SetActiveView(pNewActiveView); pNewActiveView->ShowWindow(SW_SHOW); pOldActiveView->ShowWindow(SW_HIDE); if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CProdView)) pOldActiveView->SetDlgCtrlID(IDW_ORDER_FORM); else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CCustView)) pOldActiveView->SetDlgCtrlID(IDW_CUST_FORM); pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); RecalcLayout();}void CMainFrame::OnCustomer() { // TODO: Add your command handler code here if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CCustView))) return; ChangeForm(IDW_CUST_FORM); }void CMainFrame::OnUpdateCustomer(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CCustView)));}void CMainFrame::OnProduct() { // TODO: Add your command handler code here if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CProdView))) return; ChangeForm(IDW_ORDER_FORM);}void CMainFrame::OnUpdateProduct(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CProdView))); } 急急急 高分求解 位图传输接收端出现错误 按钮的透明处理 我开发的播放器源码下载 这个结构怎么写 VC中编译出现的这些警告怎样修改去掉? 请求高手帮忙,谢谢!! 谁有在VC中使用MSCOMM控件的例子? 求帮助,下面删除树的操作代码会出现野指针吗 MFC程序的结构问题? 是不宵回答?还是没有高手?--关于Windows Me中的键盘输入。 VC作ACTIVEX中如何用DLL,要求动态调用,?? 求助,如何不用DeleteView函数来切换视 ???
其实你要是看一看分割窗口的例子,
对切换视图会有很好的理解!!
好运!!!
{
BOOL f=CDialog::Create(CImpDlg::IDD,pParent);
MoveWindow(rcC);
ShowWindow(SW_SHOW);
return f;
}在初始化是
m_ed.CreateWnd(this,rcC);
m_ed.ShowWindow(SW_HIDE);
切换时
m_ed.ShowWindow(SW_SHOW);
但总是另外弹出对话框,还有什么我没考虑到的?
void CMainFrame::ChangeForm(int nForm)
{
CView * pOldActiveView=GetActiveView();
CView * pNewActiveView=(CView *)GetDlgItem(nForm);
if (pNewActiveView==NULL)
{
switch(nForm)
{
case IDW_ORDER_FORM:
pNewActiveView = (CView*)new CProdView;
break;
case IDW_CUST_FORM:
pNewActiveView = (CView*)new CCustView;
break;
}
CCreateContext context;
context.m_pCurrentDoc=pOldActiveView->GetDocument();
pNewActiveView->Create(NULL,NULL,0L,CFrameWnd::rectDefault,this,nForm,&context);
pNewActiveView->OnInitialUpdate();
}
SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pOldActiveView->ShowWindow(SW_HIDE);
if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CProdView))
pOldActiveView->SetDlgCtrlID(IDW_ORDER_FORM);
else
if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CCustView))
pOldActiveView->SetDlgCtrlID(IDW_CUST_FORM);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
}void CMainFrame::OnCustomer()
{
// TODO: Add your command handler code here
if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CCustView)))
return;
ChangeForm(IDW_CUST_FORM);
}void CMainFrame::OnUpdateCustomer(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CCustView)));
}void CMainFrame::OnProduct()
{
// TODO: Add your command handler code here
if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CProdView)))
return;
ChangeForm(IDW_ORDER_FORM);
}void CMainFrame::OnUpdateProduct(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CProdView)));
}