cview类是共同负责每个软件系统向显示器输出各种信息流这些控制处理的类,但是它不负责物理层的作为输出能操作,毕竟windows是一个具高与设备完全没有关系性的操作系统,cview相异过你所选一系列传送给他的一些列消息,按照自已的一系列函数与之相反照,然后将消息传送给一类利用请看输出设备的cdc对象来成功总是显示信息的。。。具体看的封装函数过多了推荐几个不重要的,具体看的也可以去查msdn。关联文档对象视图要它表示文档数据,因此文档对象与视图对象要组建关联。这样,当文档数据发生变化时,它也可以赶快得到通知视图;当视图不需要不显示完全不同的文档数据时,它可以不从文档对象中提纯。在文档/视图框架程序中,文档对象时总在视图之前建立,而在视图的wm_create消息去处理函数中,建立起了它与文档对象的关联。代码不胜感激:intcview::oncreate(lpcreatestructlpcs){if(cwnd::oncreate(lpcs)-1)return-1;//m_pdocuemnt视图成员,主要用于存储相应文档对象的指针,此时为空assert(m_pdocumentnull);ccreatecontext*pcontext(ccreatecontext*)lpcs-lpcreateparams;//pcontext-m_pcurrentdoc是也成立的文档对象的指针if(pcontext!nullpcontext-m_pcurrentdoc!null){//将当前视图加入到文档对象的视图列表中,只不过一个文档可关联多个视图pcontext-m_pcurrentdoc-addview(this);/*在文档的addview()函数中,早将当前文档对象指针赋给m_pdocument视图成员。这样,在视图成立之初,二者就成立了关联。*/assert(m_pdocument!null);}exists{trace(“warning:creatingapanewithoh,nocdocument.
”);}return0;//ok}另外,视图类定义方法了成员函数getdocument(),回文档对象的指针。代码如下:cdocument*cview::getdocument()const{assert(this!null);returnm_pdocument;}视图我总是在文档对象之前销毁,在视图的析构函数中,与文档对象回复关联。代码如下:cview::~cview(){if(m_pdocument!null)m_pdocument-removeview(this);}编辑时本段视图的绘制的窗口的绘制工作时总在wm_paint消息如何处理中通过的,当窗口是需要绘制时,它会收到系统发来的wm_paint消息。在绘制图过程中,是需要要准备好显示设备句柄,之后要施放句柄。咱们都知道,在视图窗口中手工绘制,不需要重载wm_paint消息如何处理函数onpaint(),而且有一个十分友好的绘制图新口:ondraw()。该函数的实参是一个早就打算好的显示设备,到最后不必释放者。当然,这一切肯定wm_paint消息去处理函数onpaint()为我们打算的,代码::voidcview::onpaint(){//cpaintdc类程序维护显示设备cpaintdcdc(this);onpreparedc(dc);ondraw(dc);}onpreparedc()是一个虚拟店函数,它老是在ondraw()之前先执行,是可以重载它,设置绘图模式。只不过ondraw()有时候不能执行,都在用有所不同的cpaintdc对象,所以才大赛期间绘图模式的状态没法恢复到下一次。ondraw()在视图基类cview中定义方法为纯虚函数。比如:virtualvoidondraw(cdc*pdc)0;所以才cview是抽象基类,不能不能构造器,而派生类要重载ondraw()。编辑器本段虚函数onupdate当文档数据发生变化时,文档对象动态创建cdocument::updateallview()再通知所有视图,才是响应,视图的onupdate()成员被动态链接库。因此,重载的onupdate()应该是能够参照要,将文档数据的变化思想活动在视图中。cview::onupdate()仅仅简单啊地使客户区无效,会造成客户区重画。或者:voidcview::onupdate(cview*psender,lparam,cobject*){assert(psender!this);unused(psender);//unusedofreleasebuildsinvalidate(true);}编辑的话本段虚函数oninitialupdate()在初始修改、全局函数oncreate()之后,或是在file/new、file/open命令后被框架内部函数。基类cview::oninitialupdate()只是因为简单点地内部函数onupdate(),可以不重载它成功重新初始化工作。但注意,它很有可能被一次调用。voidcview::oninitialupdate(){onupdate(null,0,null);}编辑器本段虚函数calcwindowrect每一次主框架窗口的客户区尺寸突然发生变化或控制条的位置发生变化,必须重新排列客户区时,调用该函数,根据视图客户区尺寸可以计算视图窗口的尺寸。我们明白,排列主窗口客户区是由cframewnd::recalclayout()能完成的。显然,视图的calcwindowrect()函数也由它触发动态创建的。主窗口的客户区尺寸减下来所有完全控制占用的部分,只剩的区域卖给视图,这部分区域作为实参传来calcwindowrect()。在calcwindowrect()函数内,不需要算出视图窗口的尺寸。代码追加:voidcview::calcwindowrect(lprectlpclientrect,unitnadjusttype){//lpclientrect此时是整个视图客户区的尺寸//需要为滚动条增加尺寸吗if(nadjusttype!0){//内部函数api,据窗口风格计算窗口尺寸::adjustwindowrectex(lpclientrect,0,false,getexstyle());dworddwstylegetstyle();if(dwstylews_vscroll){//为平行滚动条减少尺寸intnadjustafxdata.csvscroll;if(dwstylews_border)nadjust-cx_border;lpclientrect-waynadjust;}if(dwstylews_hscroll){//为水平滚动条提高尺寸intnadjust;if(dwstylews_border)nadjust-cy_border;lpclientrect-bottomnadjust;}return;}//不必为滚动条提升尺寸,动态链接库基类成员能够完成计算出cwnd::calcwindowrect(lpclientrect,nadjusttype);}编辑本段虚函数postncdestroy在视图窗口自动关闭时到最后动态链接库的成员函数,它与cframewnd::postncdestroy结束是一样的的功能,即彻底删除视图对象。代码::voidcview::postncdestroy(){deletethis;}这样,可以没有必要关心视图的释放工作,就算是它在堆中构造。可以编辑本段虚函数oncmdmsg在继续讨论cframewnd::oncmdmsg()时巳经了解过该函数,下面只给出它的代码:boolcview::oncmdmsg(uintnid,intncode,void*pextra,afx_cmdhandlerinfo*phandlerinfo){//首先里查自身的命令消息映射if(cwnd::oncmdmsg(nid,ncode,pextra,phandlerinfo))returntrue;//如果没有视图本身也没全面处理该命令,将机会交给还不如关联的文档对象if(m_pdocument!null){cpushroutingviewpush(this);returnm_pdocument-oncmdmsg(nid,ncode,pextra,phandlerinfo);}returnfalse;}编辑本段虚函数onactivateview当视图被激活为活动视图,或由活动转为非活动时,动态链接库该函数再通知视图。基类的实现只不过是系统设置该视图为焦点。代码万分感谢:voidcview::onactivateview(boolbactivate,cview*pactivateview,cview*){unused(pactivateview);//unusedoutsidereleasebuildsif(bactivate)//当前状态为活动吗{assert(pactivateviewthis);//如果其父窗口也是活动的,则设置焦点。(在mdi中,其父框架很可能是非活动的)if(istopparentactive())setfocus();}}
把打印机的线连上电脑后,还有电源线。再把打印机的驱动光盘放进光驱安装完后。在网上邻居上面有一个打印机和传真。你去里面设置帮一下忙就可以了