MFC视图切换全总结

时间:2019-05-12 22:21:50下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《MFC视图切换全总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《MFC视图切换全总结》。

第一篇:MFC视图切换全总结

MFC视图切换全总结

交流的朋友请加我QQ:451072182 我的百度空间:http://hi.baidu.com/%BB%B6stephen/home 单纯视图之间的切换

单文档多视图切换是我在学习MFC中遇到的一个老大难问题,在今天总算是一一破解了。我觉得视图切换分为三个等级,第一是在未切分窗格的情况下切换视图类;第二是在分割窗格的一个窗格内实行视图切换;第三是在分割窗格和未分割之间的切换和视图切换。

在MFC创建SDI的伊始,MFC默认的视图类是CView,如果CView满足你的需求,可以直接单击finish,如果你不想让CView成为你的默认视图类,你可以在下图这个地方修改。

如果你忘记了修改默认的视图类这也没关系,我们可以在代码中改变: 在App类里面有个函数叫InitInstance(),在这里面有一段代码

CSingleDocTemplate* pDocTemplate;

pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(Cprogram8Doc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CView1));

//这里更改你的默认视图类,注意不要忘记包含头文件哦

if(!pDocTemplate)

return FALSE;

AddDocTemplate(pDocTemplate);

说完了默认视图类的更改,我们现在进入主题。

1、首先创建你需要切换的视图类,AddClass进入或者创建一个控件然后AddClass创建控件关联类,后者适用于Form之类的控件。

2、控制之处,比如菜单项单击、单击鼠标什么的,我是使用菜单项来切换窗口的

void CMainFrame::OnView1(){

// TODO: Add your command handler code here

SwitchToForm(IDD_FORMVIEW1);}

void CMainFrame::OnView2(){

// TODO: Add your command handler code here

SwitchToForm(IDD_FORMVIEW2);}

3、SwitchToForm这个函数主要用于视图切换 在这个函数中主要做以下几个动作:

1、获得当前视图类指针和需要转换的视图类指针,如果是第一次使用需要New一个,并且与文档类关联;

2、改变活动视图;

3、显示新视图和隐藏旧视图;

4、设置控件ID;

5、调整框架视图。

void CMainFrame::SwitchToForm(int nForm){

CView *pOldActiveView=GetActiveView();

//1

CView *pNewActiveView=(CView*)GetDlgItem(nForm);

if(NULL==pNewActiveView)

{

switch(nForm)

{

case IDD_FORMVIEW1:

pNewActiveView=(CView*)new CView1;

break;

case IDD_FORMVIEW2:

pNewActiveView=(CView*)new CView2;

break;

case IDD_FORMVIEW3:

pNewActiveView=(CView*)new CView3;

break;

case IDD_FORMVIEW4:

pNewActiveView=(CView*)new CView4;

break;

default:

break;

}

CCreateContext context;

context.m_pCurrentDoc=pOldActiveView->GetDocument();

pNewActiveView->Create(NULL,NULL,WS_CHILD | WS_BORDER,CFrameWnd::rectDefault,this,nForm,&context);

pNewActiveView->UpdateData();

}

SetActiveView(pNewActiveView);

//2

pNewActiveView->ShowWindow(SW_SHOW);

//

3pOldActiveView->ShowWindow(SW_HIDE);

if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CView1))

//4

pOldActiveView->SetDlgCtrlID(IDD_FORMVIEW1);

else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CView2))

pOldActiveView->SetDlgCtrlID(IDD_FORMVIEW2);

else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CView3))

pOldActiveView->SetDlgCtrlID(IDD_FORMVIEW3);

else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CView4))

pOldActiveView->SetDlgCtrlID(IDD_FORMVIEW4);

pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);

RecalcLayout();//5 }

在看网上其他人的帖子的时候发现在RecalcLayout();前面还要加一句delete pOldActiveView;我自己觉得这样有些浪费资源,视图类创建完成了隐藏起来,用的时候重新显示。这样的方法应该比每次使用都要创建好一些。小弟不才,有讨论的朋友可以联系我。带有分割窗格的视图切换

切换视图第二层就是带有分割窗格的视图切换

分割窗格的视图切换,我觉得难点是不容易在有限区域进行视图切换。

1、首先分割窗格,这里我不多解释,详情看下面链接;

2、再给每个视图一个唯一的ID号;

m_splitter.CreateStatic(this,1,2);

m_splitter.CreateView(0,0,RUNTIME_CLASS(CTree1),CSize(100,100),pContext);

m_splitter.CreateView(0,1,RUNTIME_CLASS(CForm1),CSize(100,100),pContext);

CWnd *pWnd=m_splitter.GetPane(0,1);

m_pViews[0]=(CView*)m_splitter.GetPane(0,1);

pWnd->SetDlgCtrlID(IDD_FORM1);

pWnd->ShowWindow(SW_HIDE);

m_splitter.CreateView(0,1,RUNTIME_CLASS(CForm2),CSize(100,100),pContext);

pWnd=m_splitter.GetPane(0,1);

m_pViews[1]=(CView*)m_splitter.GetPane(0,1);

pWnd->SetDlgCtrlID(m_splitter.IdFromRowCol(0,1));

pWnd->ShowWindow(SW_SHOW);

RedrawWindow();

return true;

注:我这里CreateView一个新视图,就覆盖掉前一个视图,最终显示的是最后一个视图,前面的视图只是隐藏起来,等到使用的时候显示出来就好了。返回值要覆盖返回到基类的语句

return CFrameWndEx::OnCreateClient(lpcs, pContext);将这句话注解,然后return true;

3、在哪里激活切换功能自己设计,我使用的是菜单;

4、响应主要包括下面几个步骤:

1、首先获得窗格中的当前视图;

2、使用IsKindOf判断这个类是否是将要切换到的类;

3、获得框架长宽和窗格长宽;

CView *pView=(CView*)m_splitter.GetPane(0,1);

//1

m_bTest=pView->IsKindOf(RUNTIME_CLASS(CForm2));

//

2CRect rcFrame,rcClient;

//3

m_splitter.GetClientRect(&rcClient);

GetClientRect(&rcFrame);

上面的全部是准备工作,下面才是真正的切换;

4、删除原有视图

5、创建当前视图

6、调整框架

if(m_bTest)

{

m_splitter.DeleteView(0,1);

m_splitter.CreateView(0,1,RUNTIME_CLASS(CForm1),CSize(rcClient.Width(),rcFrame.Height()),NULL);

m_splitter.RecalcLayout();

}

else

{

m_splitter.DeleteView(0,1);

m_splitter.CreateView(0,1,RUNTIME_CLASS(CForm2),CSize(rcClient.Width(),rcFrame.Height()),NULL);

m_splitter.RecalcLayout();

}

仔细一看,貌似这个还要比单纯视图切换还要简单一些,这也没办法,CSplitterWnd提供了这么一个便捷的方法。

带分割视图与未分割视图之间的切换

这个是三部曲中我认为最难的,并不是说程序有多么难,只是想到这个切分方式真的不容易,今天就把这三部曲的最后一曲分享给大家,也为互联网做一点贡献。

首先说一下程序的思想,为分割窗口层专门独立创建一个基于CFrameWnd的类,然后在这里面写分割视图的代码,再与其他未分割的视图类进行切换。

下面我们来看一下实现的过程:

1、创建一个基于CFrameWnd的派生类CSplitterFrame;

2、添加要填充分割窗口的视图类和与分割视图切换的视图类;

3、为这个派生类重载OnCreateClient函数,构造分割视图

m_Splitter.CreateStatic(this,1,2);

m_Splitter.CreateView(0,0,RUNTIME_CLASS(CLeftTree),CSize(300,0),pContext);

m_Splitter.CreateView(0,1,RUNTIME_CLASS(CRightList),CSize(300,0),pContext);return true;这里我不解释了,想必大家都很熟悉了,这里我要说一点我自己犯过的错误。我本来想在这里GetClientRect获得窗口大小,但失败了,左思右想不明白,后来才发现,这又不是CMainFrame,所以根本不能获得,要是用API函数。

4、在CMainFrame类里面添加框架和视图类指针变量

CSplitterFrame *m_pSplitterFrame;

//分割视图框架指针

CView *m_pView;

//单独视图类,基于CView类

CView *m_pForm;

//单独视图类,基于CFormView类

int m_nCurrentID;

//记录当前视图

5、在CMainFrame类里面重载OnCreateClient函数,创建视图及分割框架

CRect rcClient;GetClientRect(&rcClient);m_pView=new CViewShow;m_pView->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW &~WS_BORDER,rcClient,this,NULL,pContext);m_pView->ShowWindow(SW_SHOW);m_pView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);pContext->m_pNewViewClass=(CRuntimeClass*)m_pView;

//设置默认视图类

m_pForm=new CFormShow;m_pForm->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW &~WS_BORDER,rcClient,this,IDD_FORMSHOW,pContext);m_pForm->ShowWindow(SW_HIDE);m_pSplitterFrame=new CSplitterFrame;m_pSplitterFrame->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW &~WS_BORDER,rcClient,this,NULL,0,pContext);m_pSplitterFrame->ShowWindow(SW_HIDE);return true;

6、创建视图切换函数

bool CMainFrame::Switch(int nID){ if(nID==m_nCurrentID)

return false;switch(nID){ case IDD_FORMSHOW:

m_pForm->ShowWindow(SW_SHOW);

m_pForm->SetDlgCtrlID(AFX_IDW_PANE_FIRST);

m_pView->ShowWindow(SW_HIDE);

m_pView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+2);

m_pSplitterFrame->ShowWindow(SW_HIDE);

m_pSplitterFrame->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1);

m_nCurrentID=IDD_FORMSHOW;

break;case AFX_IDW_PANE_FIRST+1:

m_pSplitterFrame->ShowWindow(SW_SHOW);

m_pSplitterFrame->SetDlgCtrlID(AFX_IDW_PANE_FIRST);

m_pForm->ShowWindow(SW_HIDE);

m_pForm->SetDlgCtrlID(IDD_FORMSHOW);

m_pView->ShowWindow(SW_HIDE);

m_pView->SetDlgCtrlID(AFX_IDW_PANE_FIRST+2);

m_nCurrentID=AFX_IDW_PANE_FIRST+1;

break;case AFX_IDW_PANE_FIRST+2:

m_pView->ShowWindow(SW_SHOW);

m_pView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);

m_pForm->ShowWindow(SW_HIDE);

m_pForm->SetDlgCtrlID(IDD_FORMSHOW);

m_pSplitterFrame->ShowWindow(SW_HIDE);

m_pSplitterFrame->SetDlgCtrlID(AFX_IDW_PANE_FIRST+1);

m_nCurrentID=AFX_IDW_PANE_FIRST+2;

break;default:

break;} RecalcLayout();return true;}

7、创建调用方法

void CMainFrame::OnForm(){ // TODO: Add your command handler code here Switch(IDD_FORMSHOW);} void CMainFrame::OnView(){ // TODO: Add your command handler code here Switch(AFX_IDW_PANE_FIRST+2);} void CMainFrame::OnSplitter(){ // TODO: Add your command handler code here Switch(AFX_IDW_PANE_FIRST+1);}

第二篇:MFC实践总结

mfc编程实验总结报告 知识总结+个人心得 2011年暑期mfc编程实验报告 mfc编程实验个人总结报告

一、mfc类、函数等知识小结:

1、settimer(1, m_intlevel, null);在mfc程序中settimer被封装在cwnd类中,调用就不用指定窗口句柄了于是settimer函数的原型变为: uint settimer(uint nidevent,uint nelapse,void(callback export *lpfntimer)(hwnd,uint ,yint ,dword))当使用settimer函数的时候,就会生成一个计时器。函数中nidevent指的是计时器的标识,也就是名字。nelapse指的是时间间隔,也就是每隔多长时间触发一次事件。第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为null,也就是使用系统默认的回调函数,系统默认认的是ontime函数。这个函数怎么生成的呢?你需要在需要计时器的类的生成ontime函数:在classwizard里,选择需要计时器的类,添加wm_time消息映射,就自动生成ontime函数了。然后在函数里添加代码,让代码实现功能。每隔一段时间就会自动执行一次。例: settimer(1,1000,null);1:计时器的名称;

1000:时间间隔,单位是毫秒; null:使用ontime函数。

当不需要计时器的时候调用killtimer(nidevent);例如:killtimer(1);killtimer(1);

2、typedef struct{};(1)struct{ int x;int y;}test1;好,定义了 结构 test1,test1.x 和 test1.y 可以在语句里用了。(2)struct test {int x;int y;}test1;定义了结构 test1,test1.x 和 test1.y 可以在语句里用了。

与(1)比,省写 了 test(3)typedef struct test {int x;int y;}text1,text2;此处时说了这种结构体(类型)别名 叫 text1 或叫 text2,而不是定义了结构体变量.真正在语句里用,还要写: text1 test1;//定义结构体变量

然后好用 test1.x test1.y 或写 text2 test1;//定义结构体变量

然后好用 test1.x test1.y

3、invalidate();//让客户区无效,即时重新绘制客户区 void invalidate(bool berase = true);该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时windows会在应用程序的消息队列中放置wm_paint消息。mfc为窗口类提供了wm_paint的消息处理函数onpaint,onpaint负责重绘窗口。视图类有一些例外,在视图类的onpaint函数中调用了ondraw函数,实际的重绘工作由ondraw来完成。参数berase为true时,重绘区域内的背景将被擦除,否则,背景将保持不变。

4、cdc::rectangle(左上x,左上y,右下x,右下y);使用该函数画一个矩形,可以用当前的画笔画矩形轮廓,用当前画刷进行填充。

函数原型:bool rectangle(hdc hdc, int nleftrect, int ntoprect, int nrightrect, int nbottomrect);

hdc:设备环境句柄。

nleftrect:指定矩形左上角的逻辑x坐标。ntoprect:指定矩形左上角的逻辑y坐标。nrightrect:指定矩形右下角的逻辑x坐标。nbottomrect:指定矩形右下角的逻辑y坐标。

5、cbrush:: cbrush//画刷类 eg:cbrush brushstick(rgb(127, 127, 127));四种构造函数: cbrush();cbrush(colorref crcolor);cbrush(int nindex, colorref crcolor);cbrush(cbitmap* pbitmap);参数说明: crcolor指定画刷的前景色(rgb方式)。如果画刷是阴影线型的,则指定阴影线的颜色。nindex指定画刷阴影线采用的风格,取值如下: hs_bdiagonal45度的向下影线(从左到右)hs_cross水平和垂直方向以网格线作出阴影 hs_diagcross 45度的网格线阴影 hs_fdiagonal 45度的向上阴影线(从左到右)

hs_horizontal 水平的阴影线 hs_vertical 垂直的阴影线 pbitmap指向cbitmap对象的指针,该对象指定了画刷要绘制的位

图。

构造函数说明:

6、messagebox(game over!);messagebox(null,text,title,button);参数title:string类型,指定消息对话框的标题。text:指定消息对话框中显示的消息,该参数可以是数值数据类型、字符串或boolean值。icon:icon枚举类型,可选项,指定要在该对话框左侧显示的图标。button:button枚举类型,可选项,指定显示在该对话框底部的按钮。default:数值型,可选项,指定作为缺省按钮的按钮编号,按钮编号自左向右依次计数,缺省值为1,如果该参数指定的编号超过了显示的按钮个数,那么messagebox()函数将使用缺省值返回值integer。函数执行成功时返回用户选择的按钮编号(例如1、2、3等),发生错误时返回-1。如果任何参数的值为null,messagebox()函数返回null。

函数原型:

messagebox.show(text,title,messageboxbuttons,messageboxicon ,messageboxdefaultbuttons)参数说明:

(1)text:必选项,消息框的正文。

(2)title:可选项,消息框的标题。(3)messageboxbuttons:可选项,消息框的按钮设置,默认只显示【确定】按钮。ok――确定 okcancel――确定和取消 abortretryignore――终止、重试和忽略 yesnocancel――是、否和取消 yesno――是和否 retrycancel――重试和取消

(4)messageboxicon:对话框中显示的图标样式,默认不显示任何图标。

question――问号 information、asterisk――i号 error、stop、hand――错误号 warning、exclamation――!号 none――不显示任何图标

(5)messageboxdefaultbuttons:可选项,对话框中默认选中的按钮设置。

defaultbutton1――第1个button是默认按钮 defaultbutton2――第2个button是默认按钮 defaultbutton3――第3个button是默认按钮

7、memcpy(拷贝目的地,拷贝对象,拷贝长度);包含在头文件#include

函数原型:

extern void *memcpy(void *destin, void *source, unsigned n);功能:

由source指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。eg: int a=5,b=9;memcpy(a,b,sizeof(a));//将b按位拷给a;说明:

1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。2.与strcpy相比,memcpy并不是遇到就结束,而是一定会拷贝完n个字节。篇三:mfc个人心得体会 mfc个人心得体会 06a13526 余思远

时间过得很快,历时一个月的短学期即将结束,我们小组的mfc课题也基本完成。虽然只有短短的一个月,但却带给我很多。在小组成员的共同努力下,基本解决了计划中的一个个问题,要实现一个功能并不算复杂的计算器,也没有想象中那么简单。mfc涉及的概念很多,语法也与以前有些许不同,在c++基础上新增的内容也有许多。从开始编辑一个简单的界面,通过这段时间的学习,终于感到掌握了些许了,但想更加熟练的使用,也必须付出更多的时间吧。我发现在编程过程中,并不能只想着眼前所负责的这一块,许多对许多综合多方面进行考虑,需要与自己队友进行配合,作出合理的计划和安排。

实践是检验真理的唯一标准,这次mfc的实践活动,让我学习到了很多知识,弥补了很多漏洞。这个看似简单对我们来说却付出了很多时间和精力的程序,让我体会到了mfc相比与单纯的c++的优越性。程序编译过程中的有些困难虽然我们的能力范围内也无法解决,但是在网上资料的参考,读懂他人资料、相关程序的基础上,我们也完成了这个程序。相信这个经历能对以后的编程有很大的帮助。我也从此次课程设计中体会到了团队合作的乐趣和力量。在一个团队中扬长避短,发挥自己应有的作用,能让我们更加容易地去克服一个又一个难关。篇四:c++(mfc)程序设计实践报告

中南大学

本科生课程设计(实践)任务书、设计报告

(c++语言程序设计)题 目 学生姓名 指导教师 学 院 专业班级 学生学号

计算机基础教学实验中心

年 月 日

目 录

设计任务书?3 课程实践报告4

一、实践内容??4

二、实践成果??4

三、程序功能??4

四、设计思路??5

五、源程序???7

六、运行情况??13

七、实践心得??16

八、实践收获与不足???18 c++语言程序设计任务书

指导老师:李力

课程编号:

一、学时与学分

学时:40 学分:2

二、实践目的计算机实践是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。

三、实践任务与要求

用c++语言编程。编程题目如下:

(一)统计一个班(最多有35人)的学生成绩,要求能实现如下功能:(1)输入每个学生的学号和6门课程的成绩。(2)计算每个学生的平均分和总分。(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。(4)根据用户要求输出某门课程(从键盘输入课程号)成绩在90分以上(含90分)且总分在前5名的学生情况,包括学号、各科成绩、平均分和总分。(5)根据统计,绘制总成绩五分制百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类来实现,学生学号和成绩采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(二)统计商品销售数据,要求能用菜单实现如下功能:(1)输入每件商品的名称,编号,入库日期,标价,成本。(2)输入每件商品的售价,出售日期。(3)按总销售量从高到低排出每种商品的名称,售出件数,销售额。(4)根据用户要求输出某商品某月(从键盘输入商品名称和月份)的平均售价、售出件数、总利润。(5)根据统计,绘制商品销售利润百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(三)统计足球比赛数据,要求能用菜单实现如下功能:(1)输入每场比赛的主队名称,客队名称,比赛日期,主队得分,客队得分。(2)按总得分从高到低排出每个队的名称,总得分,胜,和,负的次数。(3)根据用户要求输出某队某月(从键盘输入队名和月份)的所有比赛数据。(4)根据用户要求输出某队主场总得分,客场总得分(5)根据用户输入,绘制某队成绩历史趋势图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采

用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(四)统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(五)统计用电管理数据,要求能用菜单实现如下功能:(1)输入每个电表的用户名,楼栋号,抄表日期,电表读数。(3)按作者的用电量,从高到低排出每个用户的总用电量。(3)根据用户要求输出某用户某月(从键盘输入用户名和月份)的总用电量。(4)统计某楼栋从某月到某月(从键盘输入)的总用电量(5)绘制按的楼栋的用电百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

以上五题任选一题。

四、实践纪律

学生除了要遵守实践期间学院的基本规定外,还要求做到: 1.必须在规定的时间、地点,独立完成以上任务; 2.不得迟到、早退。尤其不得擅自缺席。

五、设计报告要求

1. 任务书必须作为报告第一页 2. 报告不得少于3000字:主要总结实践心得、实践成果、程序功能、设计思路(程序流程图)、源程序(加上必要的注释)、运行情况、课程设计的收获与不足等

六、时间安排

两周时间

七、成绩评定规则

成绩分为优、良、中、及格、不及格五等。

优:程序功能完备,报告有深度, 遵守实践纪律。

良:程序功能满足要求,报告有内容, 遵守实践纪律。

中:程序和报告基本满足要求, 遵守实践纪律。

及格:程序有错误但大体能运行,有报告书,基本遵守实践纪律。

不及格:程序完全错误或严重违反实践纪律。c++语言程序设计报告

一、实践内容

统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用c++提供的库函数绘制曲线图)。

二、实践成果

灵活运用《c++程序设计》课程所学的基础知识,独立设计大型程序的能力;该程序必须用户界面友好、操作简洁方便,大大提高工作效率。

此程序先由用户输入数据,并存储。再作各种功能处理。整个程序基本可以实现稿件管理数据系统的统计。

三、程序功能 a)录入功能:可以写入关于稿件的基本信息,并进行以下几项功能。b)排序功能:用户可按作者的省份,将每个省的总发表篇数进行排序,并

输出。

c)查询功能:用户可根据作者与月份查出某作者某月的稿件数据,没找到的给予提示。d)绘制饼状图功能:系统根据输入的数据绘制高价男生份的百分比饼图。e)各项退出功能:在每个环节里都设有退出功能。

四、设计思路

统计稿件管理数据系统程序框图篇五:mfc心得 mfc学习心得

时光如梭,不知不觉短学期已经结束一个月左右了。对于mfc,这种c++的高级应用,从陌生到熟悉,从茫然到大致了解,从不屑一顾到很感兴趣,在编写飞行棋这个游戏的过程中感触良多,也收获了许多。mfc跟以前的控制台编程有比较大的差异,实现了部分可视化编程。对于其中复杂的类和函数,刚开始的时候感到相当的恐慌。虽然在暑假的时候有看过一些书,但到真正做起来却仍然觉得很吃力。第一次上mfc的课,老师一下子讲了很多东西,主要是控件,对于如此繁复的知识感觉一片茫然。整个理论课上了四节,虽然老师也讲了一些东西,但是对于我们要做的系统却是远远不够的。所以,很多东西都需要我们自学,到图书馆借书,到网上查找资料,问同学,问老师……我们使用各种方法获取知识。

必须学会自学,这是短学期的编程课带给我的一大感触。虽然我们需要做的只是一个小型的游戏,但对于初次接触窗口编程的我们难度依然是非常大了。但是,我们克服了,通过我们的团结协作。

要学会团结协作是我另一大感触。小组中各个组员的通力合作是编程工作能够顺利进行的一大关键,我们进行了明确的分工,却又能互相合作,互相参考,互相帮助。只有这样,才会有最后的飞行棋游戏新鲜出炉。

在编程过程中,我主要负责的部分是图形设计和界面美化部分。这部分的特点是:既与大一所学的控制台编程紧密联系,又必须要和现在所学的窗口程序编程相衔接。代码基本上靠逐行输入,考验的是自己的逻辑思维能力和严谨态度。其实,这部分的代码并不是特别多,所以编写代码的工作也并不是很难的。最磨练人的耐性的是将写好的代码进行调试。由于程序长度相对于原来的编程根本不属于同一个数量级,所以调试理所当然地变得痛苦起来。并且,这些代码基本上在编译时都能够一次通过,但在实际运行时却老是出错,检查算法和语法又不得要领。这个时候,就不得不耐着性子,用调试工具逐行调试了。学会了一些调试技巧,这不得不说是编程过程中我的一大收获。很久以前,我认为程序就是在头脑中思考一下就立即ok,而且程序先写出来再说, 然后再改就是,人的认识总是慢慢前进的!经过了短学期的编码和试验,彻底打破了以前的一些思维,其实程序只是人的思维的体现而已,因而重要的是思想,所以在构架整体框架的时候,先写一些程序验证是很必要的,而在程序开发的过程中,其如果对工程不是很了解的阶段,也只能算是在为整体框架做必要的验证,所以一般的工程的周期长于我们想象的那样!尽管mfc这门课程已经结束了,但是我还会继续学习下去,希望自己将来能够对编程有更加深入的了解。

第三篇:oracle视图总结

oracle视图总结(转)

视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。

视图的优点:

1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。2.用户通过简单的查询可以从复杂查询中得到结果。3.维护数据的独立性,试图可从多个表检索数据。4.对于相同的数据可产生不同的视图。

视图的分类:

视图分为简单视图和复杂视图。

两者区别如下:

1.简单视图只从单表里获取数据,复杂视图从多表获取数据; 2.简单视图不包含函数和数据组,复杂视图包含; 3.简单视图可以实现DML操作,复杂视图不可以。

视图的创建:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中:

OR REPLACE:若所创建的试图已经存在,ORACLE自动重建该视图; FORCE:不管基表是否存在ORACLE都会自动创建该视图; NOFORCE:只有基表都存在ORACLE才会创建该视图: alias:为视图产生的列定义的别名;

subquery:一条完整的SELECT语句,可以在该语句中定义别名;

WITH CHECK OPTION : 插入或修改的数据行必须满足视图定义的约束; WITH READ ONLY : 该视图上不能进行任何DML操作。

例如: Sql代码

1.CREATE OR

REPLACE

VIEW dept_sum_vw

2.(name,minsal,maxsal,avgsal)

3.AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)

4.FROM

emp e,dept d

5.WHERE e.deptno=d.deptno

6.GROUP BY d.dname;

视图的定义原则:

1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询; 2.在没有WITH CHECK OPTION和 READ ONLY 的情况下,查询中不能使用 ORDER BY 子句;

3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;4.OR REPLACE选项可以不删除原视图便可更改其定义并重建,或重新授予对象权限。

查询视图:

视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样。示例:

SQL>SELECT * FROM dept_sum_vw;

修改视图:

通过OR REPLACE 重新创建同名视图即可。

删除视图:

DROP VIEW VIEW_NAME语句删除视图。删除视图的定义不影响基表中的数据。

只有视图所有者和具备DROP VIEW权限的用户可以删除视图。视图被删除后,基于被删除视图的其他视图或应用将无效。

查询视图定义:

SELECT view_name,text from user_views;其中text显示的内容为视图定义的SELECT语句,可通过DESC USER_VIEWS 得到相关信息。

视图上的DML 操作: DML操作应遵循的原则:

1.简单视图可以执行DML操作; 2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能删除数据行; 3.在视图不出现下列情况时可通过视图修改基表数据或插入数据:

a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字; b.使用表达式定义的列; c.ROWNUM伪列。

d.基表中未在视图中选择的其他列定义为非空且无默认值。WITH CHECK OPTION 子句

通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。(也就是说在执行INSERTS、UPDATES时,WHERE条件中除需要INSERT、UPDATE本身的限制条件之外,还需要加上视图创建时的WHERE条件。)

例如:

CREATE OR REPLACE VIEW vw_emp20 AS SELECT * FROM emp WHERE deptno=20 WITH CHECK OPTION constraint vw_emp20_ck;视图 已建立。

查询结果:

SELECT empno,ename,job FROM vw_emp20;EMPNO

ENAME

JOB---------------------

--------------

-------------7369

SMITH

CLERK 7566

JONES

MANAGER 7902

FORD

ANALYST 修改:

UPDATE vw_emp20 SET

deptno=20 WHERE empno=7902;将产生错误:

UPDATE vw_emp20 * ERROR 位于第一行:

ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1,Oracle是可以通过视图来修改Base table的。所谓base table就是用来构建视图的表,也就是视图的数据来源表。但是这种修改是有条件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst;如果有这个限制,那么通过视图v_emp 插入数据的deptno字段的值必须是10,否则就会报“ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句”的异常。

2,联结视图:

create view dept1_staff as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.deptno in(10,30)and e.deptno = d.deptno; 将两个表的数据联结起来,看起来应该是一个内联结(Inner joint)。

对于联结视图(Joint view)的修改规则稍显复杂,设计到所谓key_preserved table的概念。通过联结视图来修改基表,只有那些key_preserved 的表才能被修改。上述创建视图语句中emp和dept通过deptno进行联结构成视图时,emp就是key_preserved 表,而dept不是。为什么?因为在dept1_staff 中empno的值唯一的而deptno不是唯一的。所以emp是key_preserved 而dept不是。因此只能通过该视图来修改emp,而不能修改dept的数据。

3,Oracle视图非常强大的功能之一在于其可以创建一个带有错误的视图。比如说视图里的字段在基表里不存在,该视图仍然可以创建成功,但是非法的且无法执行。当基表里加入了该字段,或者说某个字段修改成视图里的该字段名称,那么视图马上就可以成为合法的。这个功能很有意思。例子:

创建基表: create table v_test(name varchar2(32),age number(12));创建带错误的视图:

create force view view_test as select name,age,address from v_test;(注意加上force选项)

由于address字段在v_test里不存在,所以会报warning: View created with compilation errors的警告,而且执行select * from view_test;时会报“ORA-04063: view “SCOTT.VIEW_TEST” 有错误”的异常。但是如果在v_test里加上address字段,那么视图就会合法。对基表进行修改:

alter table v_test add(address varchar2(128));

现在再执行select * from view_test;就会执行成功了。

from:http://www.blogjava.net/jinhualee/archive/2006/07/14/58115.html

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

其他问题总结:

1、视图上是否可以创建索引?

一般视图上不用建立索引,对视图的操作最终会转化为对表的操作。一个讨论:http://www.itpub.net/viewthread.php?tid=150019&extra=&page=1

第四篇:投影与视图全章教案

投影

(一)学材分析:“投影与三视图”是人教版第二十九章的教学内容。

①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。

②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。学习目标:

1、经历实践探索,了解投影、投影面、平行投影和中心投影的概念;

2、了解平行投影和中心投影的区别。

3、使学生学会关注生活中有关投影的数学问题,提高数学的应用意识。学习重点: 理解平行投影和中心投影的特征;

学习难点: 在投影面上画出平面图形的平行投影或中心投影。学习方法:设置疑问,引导学生主动发现方法与途径 学习过程:

(一)创设情境

你看过皮影戏吗? 皮影戏又名“灯影子”,是我国民间一种古老而奇特的戏曲艺术,在关中地区很为流行。皮影戏演出简便,表演领域广阔,演技细腻,活跃于广大农村,深受农民的欢迎。放映电影《小兵张嘎》部分片段---小胖墩和他爸在日军炮台内为日本鬼子表演皮影戏

(二)你知道吗 出示投影:

北京故宫中的日晷闻名世界,是我国光辉出灿烂文化的瑰宝.它是我国古代利用日影测定时刻的仪器,它由“晷面”与“晷针”组成,当太阳光照在日晷中轴上产生投影,晷针的影子就会投向晷面,随着时间的推移,晷针的影的长度发生变化,晷针的影子在晷面上慢慢移动,聪明的古人以此来显示时刻. 问题:那什么是投影呢?

出示投影让学生感受在日常生活中的一些投影现象。

一般地.用光线照射物体.在某个平面(地面、墙壁等)上得到的影子叫做物体的投影.照射光线叫做投影线,投影所在的平面叫做投影面.有时光线是一组互相平行的射线.例如太阳光或探照灯光的一束光中的光线(如图).由平行光线形成的投影是平行投影.例如.物体在太阳光的照射下形成的影子(简称日影)就是平行投影.由同一点(点光源)发出的光线形成的投影叫做中心投影.例如.物体在灯泡发出的光照射下形成影子就是中心投影.(三)问题探究(在课前布置,以数学学习小组为单位)探究平行投影和中心投影和性质和区别

1、以数学习小组为单位,观察在太阳光线下,木杆和三角形纸板在地面的投影。

2、不断改变木杆和三角形纸板的位置,什么时候木杆的影子成为一点,三角形

纸板的影子是一条线段?当木杆的影子与木杆长度相等时,你发现木杆在什么位置?三角形纸板在什么位置时,它的影子恰好与三角形纸板成为全等图形?还有其他情况吗?

3、由于中心投影与平行投影的投射线具有不同的性质,因此,在这两种投影下,物体的影子也就有明显的差别。如图4-14,当线段AB与投影面平行时,AB的中心投影A‘B’把线段AB放大了,且AB∥A’B‘,△OAB~ OA‘B’.又如图4-15,当△ABC所在的平面与投影面平行时,△ABC的中心投影△A‘B’C‘也把△ABC放大了,从△ABC到△A‘B’C‘是我们熟悉的位似变换。

4、请观察平行投影和中心投影,它们有什么相同点与不同点?平行投影与中心投影的区别与联系

(四)应用新知:

(1)地面上直立一根标杆AB如图,杆长为2cm。

①当阳光垂直照射地面时,标杆在地面上的投影是什么图形?

②当阳光与地面的倾斜角为60°时,标杆在地面上的投影是什么图形?并画出投影示意图;

(2)一个正方形纸板ABCD和投影面平行(如图),投射线和投影面垂直,点C在投影面的对应点为C’,请画出正方形纸板的投影示意图。

(3)两幅图表示两根标杆在同一时刻的投影.请在图中画出形成投影的光线.它们是平行投影还是中心投影?并说明理由。

解:分别连结标杆的顶端与投影上的对应点(图4-17).很明显,图(1)的投射线互相平行,是平行投影.图(2)的投射线相交于一点,是中心投影。

(五)小结:

我们这节课学习了什么知识? 布置作业:

画出一个四边形的不同平行投影图和中心投影图 课后反思:

投影

(二)学习目标:

1、了解正投影的概念;

2、能根据正投影的性质画出简单的平面图形的正投影

3、培养动手实践能力,发展空间想象能力。

学习重点: 正投影的含义及能根据正投影的性质画出简单的平面图形的正投影 学习难点: 归纳正投影的性质,正确画出简单平面图形的正投影。学习方法:设置疑问,引导学生主动发现方法与途径 学习过程:

(一)复习引入新课

下图表示一块三角尺在光线照射下形成投影,其中哪个是平行投影哪个是中心投影?图(2)(3)的投影线与投影面的位置关系有什么区别?

解:结论:图(1)中的投影线集中于一点,形成中心投影;图(2)(3)中,投影线互相平行,形成平行投影;图(2)中,投影线斜着照射投影面;图(3)中投影线垂直照射投影面〔即投影线正对着投影面).指出:在平行投影中,如果投射线垂直于投影面,那么这种投影就称为正投影。

(二)合作学习,探究新知

1、如图,把一根直的细铁丝(记为安线段AB)放在三个不同位置:

(1)铁丝平行于投影面;

(2)铁丝倾斜于投影面,(3)铁丝垂直于投影面(铁丝不一定要与投影面有公共点).三种情形下铁丝的正投影各是什么形状

通过观察,我们可以发现;

(1)当线段AB平行于投影面P时,它的正投影是线段A1B1,线段与它的投影的大小关系为AB A1B(2)当线段AB倾斜于投影面P时,它的正投影是线段A2B2,线段与它的投影的大小关系为AB

A2B2

(3)当线段AB垂直于投影面P时,它的正投影是一个点A3

2、如图,把一块正方形硬纸板P(例如正方形ABCD)放在三个不同位置:

(1)纸板平行于投影面;

(2)纸板倾斜于投影面;

(3)纸板垂直于投影面

结论:(1)当纸板P平行于投影面Q时.(2)当纸板P倾斜于投影面Q时.(3)当纸板P垂直于投影面Q时..当物体的某个面平行于投影面时,这个面的正投影与这个面的形状、大小完全相同.3、例1画出如图摆放的正方体在投影面P上的正投影.(1)正方体的一个面ABCD平行于投影面P图(1);(2)正方体的一个面ABCD倾斜于投影面F,上底面ADEF垂直于投影面P,并且上底面的对角线AE垂直于投影面P图(2).分析口述画图要领 解答按课本板书

(三)课堂练习练习和习题1、2、5

(四)小结

谈谈收获 布置作业 3、4 教学后记:

三视图

(一)主备人:潘继南 备课组长:何月光 教材分析:“投影与三视图”是人教版第二十五章的教学内容。

①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。

②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。学习目标:

1、会从投影的角度理解视图的概念

2、会画简单几何体的三视图

3、通过观察探究等活动使学生知道物体的三视图与正投影的相互关系及三视图中位置关系、大小关系。

学习重点: 从投影的角度加深对三视图的理解和会画简单的三视图 学习难点: 对三视图概念理解的升华及正确画出三棱柱的三视图 学习方法:设置疑问,引导学生主动发现方法与途径 课时安排:1课时 学习过程:

(一)创设情境,引入新课

这个水平投影能完全反映这个物体的形状和大小吗?如不能,那么还需哪些投影面?

物体的正投影从一个方向反映了物体的了全面地反映一个物体的形状和大小,再选择正面和侧面两个投影面,画出物投影。

如图(1),我们用三个互相垂直的平面 作为投影面,其中正对着我们的叫做正 面,正面下方的叫做水平面,右边的叫 做侧面.一个物体(例如一个长方体)在

形状和大小,为

我们常常体的正三个投影面内同时进行正投影,在正面 内得到的由前向后观察物体的视图,叫做 主视图,在水平面内得到的由上向下观 察物体的视图,叫做俯视图;在侧面内得 到由左向右观察物体的视图,叫做左视图.如图(2),将三个投影面展开在一个平面 内,得到这一物体的一张三视图(由主视

图,俯视图和左视图组成).三视图中的各视图,分别从不同方面表示物体,三者合起来就能够较全面地反映物体的形状.三视图中,主视图与俯视图表示同一物体的长,主视图与左视图表示同一物体的高.左视图与俯视图表示同一物体的宽,因此三个视图的大小是互相联系的.画三视图时.三个视图要放在正确的位置.并且使主视图与俯视图的长对正,主视图与左视图的高平齐.左视图与俯视图的宽相等。

通过以上的学习,你有什么发现?

物体的三视图实际上是物体在三个不同方向的正投影.正投影面上的正投影就是主视图,水平投影面上的正投影就是俯视图,侧投影面上的正投影就是左视图

(二)应用新知

例1画出下图2所示的一些基本几何体的三视图.分析:画这些基本几何体的三视图时,要注意从三个方面观察它们.具体画法为:

1.确定主视图的位置,画出主视图;

2.在主视图正下方画出俯视图,注意与主视图“长对正”。

3.在主视图正右方画出左视图.注意与主视图“高平齐”,与俯视图“宽相等”.解:

(三)课堂练习:

1、2、你能画出下图1中几何体的三视图吗 小明画出了它们的三种视图(图2),他画的对吗 请你判断一下.(四)小结

1、画一个立体图形的三视图时要考虑从某一个方向看物体获得的平面图形的形状和大小,不要受到该方向的物体结构的干扰。

2、在画三视图时,三个三视图不要随意乱放,应做到俯视图在主视图的下方,左视图在主视图的右边,三个视图之间保持:长对正,高平齐,宽相等。布置作业:习题25.2 2题 教学后记:

三视图

(二)主备人:潘继南 备课组长:何月光 教材分析:“投影与三视图”是人教版第二十五章的教学内容。

①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。

②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。学习目标:

1、进一步明确正投影与三视图的关系

2、经历探索简单立体图形的三视图的画法,能识别物体的三视图;

3、培养动手实践能力,发展空间想象能力。学习重点: 简单立体图形的三视图的画法 学习难点: 三视图中三个位置关系的理解

学习方法:设置疑问,引导学生主动发现方法与途径 课时安排:1课时 学习过程:

(一)复习引入

1、画一个立体图形的三视图时要注意什么?(上节课中的小结内容)

2、说一说:直三棱柱、圆柱、圆锥、球的三视图

3、做一做:画出下列几何体的三视图

4、讲一讲:你知道正投影与三视图的关系获 图29.2-7

(二)讲解例题

例2画出如图所示的支架(一种小零件)的三视图.分析:支架的形状,由两个大小不等的长方体构 成的组合体.画三视四时要注意这两个长方体的 上下、前后位置关系.解:

(三)课堂练习

1、P91 练习

2、一个六角螺帽的毛坯如图,底面正六边形的边长为250mm,高为 200mm,内孔直径为200mm.请画出六角螺帽毛坯的三视图.布置作业:复习题25 2题 教学后记:

三视图

(三)主备人:潘继南 备课组长:何月光 教材分析:“投影与三视图”是人教版第二十五章的教学内容。

①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。

②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。学习目标:

1、学会根据物体的三视图描述出几何体的基本形状或实物原型;

2、经历探索简单的几何体的三视图的还原,进一步发展空间想象能力。学习重点: 根据物体的三视图描述出几何体的基本形状或实物原型 学习难点: 根据物体的三视图描述出几何体的基本形状或实物原型 学习方法:设置疑问,引导学生主动发现方法与途径 课时安排:1课时 学习过程:

(一)复习引入

前面我们讨论了由立体图形(实物)画出三视图,那么由三视图能否也想象出立体图形(实物)呢?引导学生结合例例例的三视图想象一下构造还原过程(发展空间想象能力)

(二)新课学习

例3根据下面的三视图说出立体图形的名称.分析:由三视图想象立体图形时,要先分别根据主视图、俯视图和左视图想象立体图形的前面、上面和左侧面,然后再综合起来考虑整体图形,解:(1)从三个方向看立体图形,图象都是矩形,可以想象出:整体是长方体,如图(1)所示;(2)从正面、侧面看立体图形,图象都是等腰三角形;从上面看,图象是圆;可以想象出:整体是圆锥,如图(2)所示.例4根据物体的三视图(如下图)描述物体的形状.分析.由主视图可知,物体正面是正五边形,由俯视图可知,由上向下看物体是矩形 的,且有一条棱(中间的实线)可见到。两 条棱(虚线)被遮挡,由左视图知,物体的侧 面是矩形的.且有一条棱〔中间的实线)可 见到,综合各视图可知,物体是五棱柱形状的.解:物体是五棱柱形状的,如下图所示.(三)课堂练习

1、P89练习

2、如图所示图形是一个多面体的三视图,请根据视图说出该多面体的具体名称。

(四)1、间形主视图左视图俯视图小结:

一个视图不能确定物体的空

状,根据三视图要描述几何体或实物原型时,必须将各视图对照起来看。

2、一个摆好的几何体的视图是唯一的,但从视图反过来考虑几何体时,它有多种可能性。例如:正方体的主视图是正方形,但主视图是正方形的几何体有直三棱柱、长方体、圆柱等。

3、对于较复杂的物体,有三视图形象出物体的原型,应搞清三个视图之间的前后、左右、上下的对应关系。布置作业:习题25.2 4题 教学后记:

三视图

(四)主备人:潘继南 备课组长:何月光 教材分析:“投影与三视图”是人教版第二十五章的教学内容。

①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。

②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。

学习目标:

1、学会根据物体的三视图描述出几何体的基本形状或实物原型;

2、经历探索简单的几何体的三视图的还原,进一步发展空间想象能力;

3、了解将三视图转换成立体图开在生产中的作用,使学生体会到所学的知识有重要的实用价值。

学习重点: 根据三视图描述基本几何体和实物原型及三视图在生产中的作用 学习难点: 根据三视图想象基本几何体和实物原型的形状 学习方法:设置疑问,引导学生主动发现方法与途径 课时安排:1课时 学习过程:

(一)复习引入

1、完成下列练习

(1)如图所示是一个立体图形的三视图,请根据视图说出立体图形的名称_______。

(2)一张桌子摆放若干碟子,从三个方向上看,三种视图如下图所示,则这张桌子上共有________个碟子。

(3)某几何体的三种视图分别如下图所示,那么这个几何体可能是()。

(A)长方体(B)圆柱(C)圆锥(D)球

2、让学生欣赏事先准备好的机械制图中三视图与对应立体图形的图片,借助图片信息让学生体会到本章知识的价值。并借此可以讲述一下现在一些中专、中技甚至大学里开设的模具和机械制图专业和课程就需要这方面的知识,激发学生的学习兴趣,导入本课。

(二)自学质疑

例6某工厂要加工一批密封罐,设计者给出了密封罐的三视图(如下图),请你按照三视图确定制作每个密封罐所需钢板的面积.分析:对于某些立体图形,若沿其中一些线(例如棱柱的棱)剪开,可以把立体图形的表面展开成一个平面图形——展开图.在实际的生产中.三视图和展开图往往结合在一起使用.解决本题的思路是,由视图想象出密封罐的立体形状,再进一步画出展开图.从而计算面积.解:由三视图可知,密封罐的形状是正六棱柱(如图(左)).密封罐的高为50mm,底面正六边形的直径为100mm.边长为50mm,图(右)是它的展开图.由展开图可知,制作一个密封罐所需钢板的面积为

(三)课堂练习P101 练习

(四)拓展延伸

根据下面三视图请说出建筑物是什么样子的?共有几层?一共需要多少个小正方体?

分析:由俯视图确定该建筑物在平面上的形状,由主视图、左视图确定空间的形状如图所示.解:该建筑物的形状如图所示:

有3层,共9个小正方体.思考:一个物体的主视图如上右图所示, 请画出它的俯视图,耐心想一想有 几种不同的情形?

(五)课堂小结:

根据物体的三视图想像物体的形状一般是由俯视图确定物体在平面上的形状.然后再根据左视图、主视图嫁接出它在空间里的形状,从而确定物体的形状.布置作业:复习题25 7题 教学后记:

投影与视图(练习课)

主备人:潘继南 备课组长:何月光 教材分析:“投影与三视图”是人教版第二十五章的教学内容。

①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。

②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。

学习目标:

1、进一步体会投影中的平行投影、中心投影和正投影间的相互关系

2、加深体会立体图形或实物原型与三视图的互相转化,进一步拓展学生的空间想象力 学习重点: 体会投影中的平行投影、中心投影和正投影间的相互关系 学习难点: 体会立体图形或实物原型与三视图的互相转化,进一步拓展学生的空间想象力

学习方法:设置疑问,引导学生主动发现方法与途径 课时安排:1课时 学习过程:

(一)提问导入

前面我们都学习了哪些内容?

(让学生进行2~3分钟的梳理,然后让几个学生说说看,最后老师拓展总结)

(二)看谁学得好 1.填空题

(1)俯视图为圆的几何体是_______,______。(2)画视图时,看得见的轮廓线通常画成_______,看不见的部分通常画成_______。

(3)举两个左视图是三角形的物体例子:________,_______。(4)如图所示是一个立体图形的三视图,请根据视图说出立体图形的名称_______。

(5)请将六棱柱的三视图名称填在相应的横线上.(6)一张桌子摆放若干碟子,从三个方向上看,三种视图如下图所示,则这张桌子上共有________个碟子。

2.选择题

(1)圆柱对应的主视图是()。

   

(A) (B)(C) (D)

(2)某几何体的三种视图分别如下图所示,那么这个几何体可能是()。

(A)长方体(B)圆柱(C)圆锥(D)球(3)下面是空心圆柱在指定方向上的视图,正确的是()

(4)一个四棱柱的俯视图如右图所示,则这个四棱柱的主视图和左视图可能是()

(5)主视图、左视图、俯视图都是圆的几何体是()。(A)圆锥(B)圆柱(C)球(D)空心圆柱

3、解答题

(1)根据要求画出下列立体图形的视图。



(画左视图)(画俯视图)(画正视图)(2)画出右方实物的三视图。

(3)如图是一个物体的三视图,请画出物体的形状。

(4)根据下面三视图建造的建筑物是什么样子的?共有几层?一共需要多少个小正方体。

(三)课堂小结

学生谈收获

布置作业:复习题25 2题 教学后记:

制作立体模型(活动课)

主备人:潘继南 备课组长:何月光 教材分析:“投影与三视图”是人教版第二十五章的教学内容。

①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。

学习目标:通过根据三视图制作立体模型的实践活动,体验平面图形向立体图形转化的过程,体会用三视图表示立体图形的作用,进一步感受立体图形与平面图形之间的联系。

学习重点: 体会用三视图表示立体图形的作用,进一步感受立体图形与平面图形之间的联系。

学习难点: 体会用三视图表示立体图形的作用,进一步感受立体图形与平面图形之间的联系。

学习方法:设置疑问,引导学生主动发现方法与途径 课时安排:1课时 学习过程:

(一)、工具准备

刻度尺、剪刀、小刀、胶水、硬纸板、马铃薯(或萝卜)等。

(二)、具体活动

1、以硬纸板为主要材料,分别做出下面的两组视图所表示的立体模型。

2、按照下面给出的两组视图,用马铃薯(或萝卜)做出相应的实物模型

3、下面的每一组平面图形都是由四个等边三角形组成的。(1)

(2)

(3)(1)指出其中哪些可以折叠成多面体。把上面的图形描在纸上,剪下来,叠一叠,验证你的答案;

(2)画出由上面图形能折叠成的多面体的三视图,并指出三视图中是怎样体现“长对正,高平齐,宽相等”的;

(3)如果上图中小三角形的边长为1,那么对应的多面体的体积和表面积各是多少?

(三)、拓广延伸:

三视图和展开图都是与立体图形有关的平面图形,了解有关生产实际,结合具体例子,写一篇短文介绍三视图、展开图的应用。

(四)课堂小结:学生谈收获 教学后记:

投影与三视图 复习

主备人:潘继南 备课组长:何月光 教材分析:“投影与三视图”是人教版第二十五章的教学内容。①本节课教学内容从提出问题开始,进而向学习者描述投影的特点,并进一步分析三视图的形成原理,让学生充分认识三视图,并以形体的结构为例详细阐述三视图的具体制图步骤及要领;同时通过书本里的“马上行动”、“案例分析”以及相关的阅读资料,让学生主动去获取新知。

②在教材的结构上,本节占用的篇幅较长,意图很明显,就是在学习完了设计表现图之后,进一步掌握绘制简单的技术图样的方法,并能绘制简单形体的三视图。

学习目标:

1、通过复习系统掌握本章知识,2、体验数学来源于实践,又作用于实践。

3、提高解决问题分析问题的能力。

4、培养空间想象能力。

学习重点: 投影和三视图 学习难点: 画三视图

学习方法:设置疑问,引导学生主动发现方法与途径 课时安排:2课时 学习过程:

(一)、以提问形式小结本章知识

1、本章知识结构框架:

2、填空:

(1)人在观察目标时,从眼睛到目标的 叫做视线。所在的位置叫做视点,有公共 的两条 所成的角叫做视角。视线不能到达的区域叫做。

(2)物体在光线的照射下,在某个 内形成的影子叫做,这时光线叫做,投影所在的 叫做投影面。由 的投射线所形成的投影叫做平行投影。由 的投射线所形成的投影叫做中心投影。

(3)在平行投影中,如果投射线 垂直于投影面,那么这种投影就称为正投影。

(4)物体的三视图是物体在三个不同方向的。

上的正投影就是主视图,水平面上的正投影就是,(二)、例题讲解 例

1、(1)在同一时刻的阳光下,小明的影子比小强的影子长,那么在同一路灯下()

A、小明的影子比小强的影子长 B、小明的影子比小强的影子短 C、小明和小强的影子一样长 D、无法判断谁的影子长 分析:阳光是平行光线,出现平行投影。路灯是点光源,是中心投影,形成的影子是不一样的

2、如图所示图形是一个多面体的三视图,请根据视图说出该多面体的具体名称。

主视图左视图俯视图分析:从俯视图上看,该立体图形是个对称图形,从主视图、左视图上看,正面和左面都是等腰三角形,因此我们可以想象,该立体图形是正四棱锥。例

3、A、B 表示教室门口,张丽在教室内,王明、钱勇、李杰三同学在教室外,位置如图所示,张丽能看得见三位同学吗?请说明理由。

C张丽A王明李杰钱勇B

小王小李电线杆

例4、如右上图,小王、小李及一根电线杆在灯光下的影子。(1)确定光源的位置;

(2)在图中画出表示电线杆高度的线段。

分析:由条件易知,本题属于中心投影问题,根据中心投影的特点,物体与影子对应点的连线必须经过光源,因此我们可以利用两线的交点来求光源的位置。例5、如图,是由一些大小相同的小正方体组成的简单的几何体的主视图和俯视图。

(1)请你画出这个几何体的一种左视图;

(2)若组成这个几何体的小正方体的块数为n,请你写出n的所有可能值。分析:左视图为侧视图,由于几何体只知道主视图和俯视图,那么左视图就不是唯一的,而主视图表示几何体共有三层,所以侧视图有多种可能,俯视图只看见5个小正方体,这5个正方体可分布在1、2、3层。

(三)、课堂小结:学生谈收获 布置作业:复习题25 4 教学后记:

主视图 俯视图投影与三视图测试卷

姓名: 分数:

一、精心选一选(每小题5分,共50分)

1.圆形的物体在太阳光的投影下是

()(A)圆形.

(B)椭圆形.

(C)线段.

(D)以上都不可能. 2.如图所示的圆台的上下底面与投影线平行,圆台的正投影是()(A)矩形.

(B)两条线段.(C)等腰梯形.

(D)圆环. 3.如图摆放的几何体的左视图是

()

4.在同一时刻的阳光下,小明的影子比小强的影子长,那么在同一路灯下()(A)小明的影子比小强的影子长.

(B)小明的影子比小强的影子短.(C)小明的影子和小强的影子一样长.(D)无法判断谁的影子长. 5.“圆柱与球的组合体”如图所示,则它的三视图是

()

6.下列左边的主视图和俯视图对应右边的哪个物体

()

7.小明在操场上练习双杠时,在练习的过程中他发现在地上双杠的两横杠的影子()(A)相交.

(B)平行.

(C)垂直.

(D)无法确定. 8.在一个晴朗的好天气里,小颖在向正北方向走路时,发现自己的身影向左偏,你知道小颖当时所处的时间是

()(A)上午.

(B)中午.

(C)下午.

(D)无法确定. 9.如图是一根电线杆在一天中不同时刻的影长图,试按其一天中发生的先后顺序排列,正确的是

()

(A)①②③④.

(B)④①③②.

(C)④②③①.(D)④③②①. 10.如图是“马头牌”冰激凌模型图,它的三视图是

()

二、耐心填一填(每小题4分,共20分)

11.右图是基本几何体的三视图,该基本几何体为 . 12.皮影戏中的皮影是由投影得到的 .

13.为测量旗杆的高度我们取一米杆直立在阳光下,其长为1.5米,在

同一时刻测得旗杆的影长为10.5米.旗杆的高度是 . 14.如图是置于水平地面上的一个球形储油罐,小敏想测量它的半径.

在阳光下,他测得球的影子的最远点A到球罐与地面接触点B的 距离是10米(如示意图,AB=10米);同一时刻,他 又测得竖直立在地面上长为1米的竹竿的影子长为2 米,那么,球的半径是 米.

15.圆锥底面展开后是 ,侧面展开后是.三、用心想一想(每小题10分,共30分)

16.画出实物图(如图,上部分是长方体,下部是空心圆柱)的三视图.

17.与一盏路灯相对,有一玻璃幕墙,幕墙前面的地面上有一盆花和一棵树。晚上,幕墙反射路灯灯光形成了那盆花的影子(如图所示),树影是路灯灯光形成的。请你确定此时路灯光源 的位置.

18.要制作一个如图所示(图中阴影部分为底与盖,且SⅠ=SⅡ)的钢盒子,在钢片的四个角上分别截去两个相同的正方形与两个相同的小长方形,然后折合起来既可,求有盖盒子的高x.

第五篇:MFC规则DLL总结

MFC规则DLL总结

1、创建MFC规则DLL工程,生成XX.h, XX.cpp, XX.def文件,插入资源(对话框),生成类。

2、在XX.cpp 中添加ShowDlg函数,在该函数中定义对话框,显示对话框,对话框所需要的参数由ShowDlg的形参传递。

3、在XX.def中添加:

EXPORTS

;此处可以是显式导出

ShowDlg @14、编译生成XX.dll文件

5、新建测试工程,在需要调用该DLL处,添加类如下代码:

CString strName=_T(“王朋”);

double dScore=89;

HINSTANCE hdll;

typedef void(*dllfun)(CString,double);

dllfun thefunc;

hdll=LoadLibrary(_T(“RegularMFCDLL.dll”));

if(hdll!=NULL)

{

thefunc=(dllfun)GetProcAddress(hdll,“ShowScore”);

}

else

{

AfxMessageBox(_T(“加载DLL失败!”));return;} thefunc(strName,dScore);FreeLibrary(hdll);

6、静态调用

头文件中添加如下代码:

#pragma comment(lib,“RegularMFCDLL.lib”)

extern void ShowScore(CString,double);

在源文件中需要调用该DLL的函数处添加:

CString strName=_T(“王ª?朋¨®”);

double dScore=90;

ShowScore(strName,dScore);

7、可见,窗口等MFC对象是被定义在一个函数中,再导出这个函数来显示这些资源对象的。

下载MFC视图切换全总结word格式文档
下载MFC视图切换全总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    MFC经典绘图方法总结

    MFC经典绘图方法总结 Windows 绘图的实质就是利用 windows提供的图形设备接口GDI(Graphics Device Interface)将图形会制在显示器上。 为了支持GDI绘图,MFC提供了两种重要的......

    MFC 对话框编程 -- 总结

    MFC 对话框编程 -- 总结一、创建对话框对象 1.首先利用资源编辑器创建对话框资源,并针对该对话框资源定义一个对话框类:classCTestDlg :public CDialog 2.创建话话框对象 模态......

    UML九种视图总结

    1.UML关系 UML类图中的关系分为四种:泛化关系、依赖关系、关联关系、实现关系;关联关系又可以细化为聚合和组合。 1.1 泛化(Generalization) 泛化是父类和子类之间的关系,子类继......

    第二章 BMP位图类的创建与MFC单文档视图类的显示

    BMP位图文件的4个组成部分 bmp文件大体上分成四个部分。 位图文件头BITMAPFILEHEADER 、 位图信息头BITMAPINFOHEADER 、 调色板Palette 、 实际的位图数据ImageDate 第1部......

    MFC消息处理函数总结

    1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWnd Proc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应......

    MFC Lesson1~8笔记总结

    MFC Lesson1~8笔记总结 基础知识: ※Windows程序是通过发送消息来响应事件的。 ※操作系统将每个事件包装成为一个消息结构体传递给应用程序 ※Windows程序的入口函数为WinMa......

    MFC Windows程序设计语言总结(5篇)

    MFC Windows程序设计语言总结我在刚开始接触Windows编程时, 从Visual Basic开始, 从MFC开始, 虽然写出了程序, 但自己都不知道程序是如何运行的, 从而造成写程序"容易"修改......

    mfc文件操作个人总结

    MFC文件操作 一,打开文件对话框 CString szFilters=_T("txt Files (*.txt)"); CFileDialog fileDlg(TRUE, _T("txt"), _T("*.txt"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT......