在该程序中,我新建了一个FormView,我想那它做主界面,而原先默认生成的视图做工作界面,不知道在什么时候创建新的视图及如何创建。各位高手请指教!(最好有代码)
解决方案 »
- 关于SlideCtrl的消息响应
- 如何过滤windbg的打印信息?
- 简单的问题!
- (送100分)子窗口中的CEdit控件如何获得输入焦点?
- 我是计算机系的啊,曾经很傻的想过,要是有女生能做知心朋友,而且长相还不错,那有多好啊~~呵呵
- 如何强行退出一个循环
- ODBC读数据库BOOL值不对
- 关于java调用com的问题(300分)
- 为什么RegQueryValueEx在win98下读取注册表会失败?
- 如何在整个屏幕上画画?
- 新手问题:DECLARE_HANDLE(HDIB);这句什么意思啊。可以讲通俗点嘛?msdn没查到,谢谢
- 急!!!请教高手:WaitForMultipleObjects 的一些问题。
1.在app的initinstance里,加入其他模板。并重载ID_FILE_NEW.->onfilenew中打开第一个文档模板。通过菜单或消息打开其他可用模板,自动创建新的视图。(正规的方法)2.所有程序保持不变。在CMainfrme里,动态创建view.并加载相关资源,如menu,加速建等。
通过菜单或消息,显示其他创建的视图。(旁门左道)--------------------------------------------
不过,我一般用第二种,因为代码量少一些。
{
switch (wParam)
{
case NM_OB_ITEMCLICK:
// cast the lParam to an integer to get the clicked item
{
int flag=wndBar.GetFolderData(); if(flag==0)//判断是否为第一个Folder
{
int index = (int) lParam;
if(index==0) //响应第一个按钮
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
if(index==1) //响应第二个按钮
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView2),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
if(index==2) //响应第三个按钮
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView3),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
}
else if(flag==1)//判断是否为第二个Folder
{
int index = (int) lParam;
if(index==0) //响应第一个按钮
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView4),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
if(index==1)
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView5),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
if(index==2)
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView6),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
if(index==3)
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView7),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
}
else if(flag==2)//判断是否为第三个Folder
{
int index = (int) lParam;
if(index==0) //响应第一个按钮
{
wndSplitter.DeleteView(0,1);
wndSplitter.CreateView(0,1,RUNTIME_CLASS(CTestView8),CSize(0,70),NULL);
wndSplitter.RecalcLayout();
}
}
}
return 0; case NM_OB_ONLABELENDEDIT:
// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited item
// return 1 to do the change and 0 to cancel it
{
OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
TRACE2("Editing item %d, new text:%s\n", pOI->index, pOI->cText);
}
return 1; case NM_OB_ONGROUPENDEDIT:
// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the edited folder
// return 1 to do the change and 0 to cancel it
{
OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
TRACE2("Editing folder %d, new text:%s\n", pOI->index, pOI->cText);
}
return 1; case NM_OB_DRAGITEM:
// cast the lParam to an OUTBAR_INFO * struct; it will contain info about the dragged items
// return 1 to do the change and 0 to cancel it
{
OUTBAR_INFO * pOI = (OUTBAR_INFO *) lParam;
TRACE2("Drag item %d at position %d\n", pOI->iDragFrom, pOI->iDragTo);
}
return 1;
}
return 0;
}