各位GGJJ,我想把“Outlook式样界面菜单和页面控制”的那个源程序修改成这种方式的:每当我单击一下左边的Outlook菜单按钮,在Outlook菜单右边显示出相应的窗体(这个窗体要填满Outlook菜单右边的client area.我还得在这个窗体上布上许多近件)。菜单按钮的消息响应在COutbarViewCOutbarView::OnOutbarNotify(UINT lParam, LONG wParam)那。我该如何创建这些相应的窗体,以便在单击菜单按钮时显示出来。
请问各位GGJJ怎么实现这?
Thanks very much.
请问各位GGJJ怎么实现这?
Thanks very much.
跟上面的那个问题差不多。
时间来得及的话,也无妨,我的想法是想先把这个界面给完成,等项目完成后我再去详细研究多文档编程。
各位帮帮忙吧。集思广益嘛。
现在我想单击左边的按钮时,在右面创建窗口。
1->在Wizard中,可能要选择Formview的。
2->我是不是要先创建好相应的窗口资源?然后在单击左边的按钮时动态调用?
3>因为左边的一栏(左边的按钮栏),我该怎么使窗口在剩下的空间中显示?(填充满剩下的空间)
因为本人以前一直用single dialog的。所以对于这方面真的很菜。
thanks.
2->我是不是要先创建好相应的窗口资源?然后在单击左边的按钮时动态调用?
可以这么做,但是通常都是直接用Create函数创建窗口3>因为左边的一栏(左边的按钮栏),我该怎么使窗口在剩下的空间中显示?(填充满剩下的空间)
如果你的主框架是FrameWnd,你可以使用RepositionBars把剩下的空间得到,然后用SetWindowPos把你的窗口填进去就行了。
RepositionBars函数怎么用?以下是我的code,请帮我看看。
void CMainFrame::SwitchToForm(int ID_FORM)
{
//CDocument* pDoc = GetActiveDocument();
CView *pOldActiveView=GetActiveView(); //保存旧视图
CView *pNewActiveView=(CView*)GetDlgItem(ID_FORM); //取得新视图
if(pNewActiveView==NULL)
{
switch(ID_FORM)
{
case IDD_RS232CONFIG:
TRACE("Create View\n");
pNewActiveView=(CView*)new CSetjigOption;
break;
case IDD_DATAFLASH:
pNewActiveView=(CView*)new CDataFlash;
break;
case IDD_CALIBRATE:
pNewActiveView=(CView*)new CCalibrateCell;
break;
case IDD_BATTERYTEST_FORM:
pNewActiveView=(CView*)new CBatteryTestView;
break;
}
CCreateContext context; //将文挡和视图相连
context.m_pCurrentDoc=pOldActiveView->GetDocument();
pNewActiveView->Create(NULL,NULL,WS_BORDER|WS_CHILD,
CFrameWnd::rectDefault,this,ID_FORM,&context);
pNewActiveView->OnInitialUpdate();
}
//RepositionBars(0,0xffff,AFX_IDW_PANE_FIRST,
SetActiveView(pNewActiveView); //改变活动的视图
pNewActiveView->ShowWindow(SW_SHOW); //显示新的视图
pOldActiveView->ShowWindow(SW_HIDE); //隐藏旧的视图
if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CSetjigOption))
pOldActiveView->SetDlgCtrlID(IDD_RS232CONFIG);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CDataFlash))
pOldActiveView->SetDlgCtrlID(IDD_DATAFLASH);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CCalibrateCell))
pOldActiveView->SetDlgCtrlID(IDD_CALIBRATE);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CBatteryTestView))
pOldActiveView->SetDlgCtrlID(IDD_BATTERYTEST_FORM);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
delete pOldActiveView; //删除旧视图
RecalcLayout();
}
if i can't finish this UI,so that i will be delaied here for some time.i can't start to build function code.
help me.