怎样实现视的切换? 每个视都是从窗口类(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连mssql,无效指针,错误编号80004003 堵塞方式的winsock是不是不能多次接受数据 ODBC访问excel时删除行的问题 x下面这控制台程序怎么改成mfc啊,谢谢 VC中ADO连接Oracle问题,各位大哥多多指教啊 文件读取问题? 这段代码该放那里? 如何实现模糊查询?我新建了一个类CRecordSet的对象。 我怎么才能知道在打印的时候一个汉字有多宽(占多少像素) 再发一个电脑里存的经典笑话,放松一下 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)));
}