刚开始学VC,过去的一周真是痛苦无比,现在脑子里面全是星星。
请各位过来的朋友们帮我理理思路:
1.对于文档/视图模式,程序是怎么知道要加载视图的呢?
2.一个程序可以有多个视图么?如果可以,怎么通知程序显示不同的视图呢?比如我想通过单击不同的按钮,分别显示不同的ListView的内容,应该怎么做呢?
3.视图和对话框有什么联系和区别么?C#或者VB里面的一个个FORM相当于VC里面的视图还是对话框?一个ListView和一个对话框加ListCtrl控件可以实现一样的功能么?如果我想实现问题2,可以用对话框做么?先问这么多,因为我是初学,可能问题很可笑或者弱智,但是还是请过来的兄弟帮帮忙,知道什么回答什么——前提是你没有被我的叙述弄晕:)
包涵
请各位过来的朋友们帮我理理思路:
1.对于文档/视图模式,程序是怎么知道要加载视图的呢?
2.一个程序可以有多个视图么?如果可以,怎么通知程序显示不同的视图呢?比如我想通过单击不同的按钮,分别显示不同的ListView的内容,应该怎么做呢?
3.视图和对话框有什么联系和区别么?C#或者VB里面的一个个FORM相当于VC里面的视图还是对话框?一个ListView和一个对话框加ListCtrl控件可以实现一样的功能么?如果我想实现问题2,可以用对话框做么?先问这么多,因为我是初学,可能问题很可笑或者弱智,但是还是请过来的兄弟帮帮忙,知道什么回答什么——前提是你没有被我的叙述弄晕:)
包涵
解决方案 »
- 毕设
- 问一个比较菜的问题!VC中的CString类可以忽略大小写 Find吗?请指教
- 数据库几个简单问题
- <programming applications for ms windows>里第一个ErrorShow例程就看不懂,高手指点
- 如何将Resource中添加的Control与对应的MFC类对象关联?
- 初学者的VC中Tab Control控件使用问题
- 高分求教:如何在单文档中实现视的切换?(100分)
- 请问为什么VC写的DLL文件不能用regsvr32.exe正常注册?在线等。
- 界面开发 系统需求分析
- 标题条上面的文字是用哪个函数写出来的?
- 为什么要使用内存dc?
- 急问:ODBC对EXCEL文件的操作(vc+)--------------------------thanks
去CWinApp的InitInstance()可以看到AppWizard帮你创建了一个文档模板类,用它来
管理这个三元组。如果你想透彻地搞清楚这些问题,可以看候捷的书
2.一个程序可以有多个文档,也可以有多个视图。我记得《VC技术内幕》的第十九章
专门讲了这个问题,给了一个例子进行多视图切换。下面是主要代码:
void CMainFrame::SwitchToView(eView nView)
{
CView* pOldActiveView = GetActiveView();
CView* pNewActiveView = (CView*) GetDlgItem(nView);
if (pNewActiveView == NULL) {
switch (nView) {
case STRING:
pNewActiveView = (CView*) new CStringView;
break;
case HEX:
pNewActiveView = (CView*) new CHexView;
break;
}
CCreateContext context;
context.m_pCurrentDoc = pOldActiveView->GetDocument();//获取老的视图所联系的文档
pNewActiveView->Create(NULL, NULL, WS_BORDER,
CFrameWnd::rectDefault, this, nView, &context);//原来context中有与视图有联系的文档类的信息
pNewActiveView->OnInitialUpdate();
}
SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pOldActiveView->ShowWindow(SW_HIDE);
pOldActiveView->SetDlgCtrlID(
pOldActiveView->GetRuntimeClass() ==
RUNTIME_CLASS(CStringView) ? STRING : HEX);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
}
3.我个人认为VB中的对话框和VC中的CDialog更接近一些