用Visual C++ 6.0创建一个基于对话框的MFC AppWizard(exe)项目,怎么实现窗口切换 30
怎么实现IDD_HH_FORM与IDD_PROVIDER_FORM切换。voidCMainFrame::SwitchToForm(intnForm){CView*pOld...
怎么实现IDD_HH_FORM与IDD_PROVIDER_FORM切换。
void CMainFrame::SwitchToForm(int nForm)
{
CView* pOldActiveView=GetActiveView();
CView* pNewActiveView=(CView*)GetDlgItem(nForm);
if(pNewActiveView==NULL)
{
if(nForm==IDD_HH_FORM)
pNewActiveView=(CView*)new CHHView;
if(nForm=IDD_PROVIDER_FORM)
pNewActiveView=(CView*)new CProviderView;
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);
int ID;
if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CHHView))
ID=IDD_HH_FORM;
if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CProviderView))
ID=IDD_PROVIDER_FORM;
pOldActiveView->SetDlgCtrlID(ID);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
} 展开
void CMainFrame::SwitchToForm(int nForm)
{
CView* pOldActiveView=GetActiveView();
CView* pNewActiveView=(CView*)GetDlgItem(nForm);
if(pNewActiveView==NULL)
{
if(nForm==IDD_HH_FORM)
pNewActiveView=(CView*)new CHHView;
if(nForm=IDD_PROVIDER_FORM)
pNewActiveView=(CView*)new CProviderView;
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);
int ID;
if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CHHView))
ID=IDD_HH_FORM;
if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CProviderView))
ID=IDD_PROVIDER_FORM;
pOldActiveView->SetDlgCtrlID(ID);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
} 展开
1个回答
展开全部
你是说你做成的程序的窗口切换,还是VC6的窗口切换啊。
更多追问追答
追问
这个程序是我在书上找到的,还是有错误,怎么改?或是给我另一个方法,谢了
追答
IDD_HH_FORM与IDD_PROVIDER_FORM这两个窗口,你可以用ShowWindow函数来实现切换。
就是隐藏一个显示一个。具体用法如下:
函数功能:该函数设置指定窗口的显示状态。
函数原型:BOOL ShowWindow(HWND hWnd, int nCmdShow);
hWnd:指窗口句柄。
nCmdShow:指定窗口如何显示。如果发送应用程序的程序提供了STARTUPINFO结构,则应用程序第一次调用ShowWindow时该参数被忽略。否则,在第一次调用ShowWindow函数时,该值应为在函数WinMain中nCmdShow参数。在随后的调用中,该参数可以为下列值之一: SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。
SW_HIDE:隐藏窗口并激活其他窗口。
SW_MAXIMIZE:最大化指定的窗口。
SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。 SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。
SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。
SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。
SW_SHOWMAXIMIZED:激活窗口并将其最大化。
SW_SHOWMINIMIZED:激活窗口并将其最小化。
SW_SHOWMINNOACTIVATE:窗口最小化,激活窗口仍然维持激活状态。
SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。
SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询