VC语法陷阱总结

最近对VC语法陷井进行了一下总结,但愿对你们有帮助!php

一、手工添加类的成员函数时,常常发生在.h和.cpp中的函数原型不一致!特别是你从别的相似的程序复制过来时,类的名称已经改变时!这时的报错会很莫名奇妙,但共有的现象就是双击这个成员函数时,它不能正肯定位,会提示找不到:p程序员

二、类的声明的最后一个花括号后面少了一个分号结束符就会致使.cpp文件的"constructors not allowed a return type"!编程

三、注意:虽然选中了SPLIT天然就有了滚动条控件(即便是CView),但若是你要用SetScrollSize()的话,则必须将此视图派生于CScrollView(不然只有本身手工处理了?)!!固然,要将已经用CView生成的MFC程序改过来很简单,不太重新作一遍向导再加上本身的代码(累死人的啦)。你能够直接将xxxView.h和xxxView.cpp中将全部CView换成CScrollView(但要特别注意,参数中的最好不要换,好比OnUpdate中的第一个参数!)
四、建立MDI程序时若是使用了两个以上的文档模板,则若是向导自动生成的使用了splitter,则另一个手工加入的文档模板若是缺省地也用了原来的ChildFrame则也会有分隔条,但不会正常工做,呵。恐怕得本身手工加入splitter控件并进行同步更新处理:p。固然,你也能够很简单地再建立一个ChildFrame并不让它支持分隔条:)框架

五、OnUpdate()现象:当拉出分隔条或新建窗口时,也会自动解发到本事件,固然也会触发OnDraw()。但当调整分隔条或窗口大小位置时却不会触发本事件,只会触发OnDraw()!函数

6.一个文档模板能够有多个文档,每一个文档模板都保留并维护了一个全部对应文档的指针列表。
用CDocTemplate::GetFirstDocPosition函数得到与文档模板相关的文档集合中第一个文档的位置,并用POSITION值做为CDocTemplate::GetNextDoc的参数来重复遍历与模板相关的文档列表。函数原形为: viaual POSITION GetFirstDocPosition( ) const = 0;
visual CDocument *GetNextDoc(POSITION & rPos) const = 0;
若是列表为空,则rPos被置为NULL. .net

7.在文档中能够调用CDocument::GetDocTemplate得到指向该文档模板的指针。函数原形以下: CDocTemplate * GetDocTemplate ( ) const;
若是该文档不属于文档模板管理,则返回值为NULL。指针

8.一个文档能够有多个视。每个文档都保留并维护一个全部相关视的列表。CDocument::AddView将一个视链接到文档上,将该视加入到文档相联系的视的列表中,并将视的文档指针指向该文档。当有File/New、File/Open、Windows/New或Window/Split的命令而将一个新建立的视的对象链接到文档上时, MFC会自动调用该函数,框架经过文档/视的结构将文档和视联系起来。固然,程序员也能够根据本身的须要调用该函数。 Virtual POSITION GetFirstViewPosition( ) const;
Virtual CView * GetNextView( POSITION &rPosition) cosnt;
应用程序能够调用CDocument::GetFirstViewPosition返回与调用文档相联系的视的列表中的第一个视的位置,并调用CDocument::GetNextView返回指定位置的视,并将rPositon的值置为列表中下一个视的POSITION值。若是找到的视为列表中的最后一个视,则将rPosition置为NULL.对象

9.从一个视图类取得另外一视图类的指针
这个应用在多视的应用程序中不少见,通常若是本身在主程序或者主框架中作好变量记号,也能够得到,还有比较通用的就是用文档类做中转,以文档类的视图遍历定位,取得另外一个视图类。这个功能从本文第10项中能够获得。事件

 
◆ ◆ 这里是快速回复,赶忙文档

本文摘自: 智趣网-C语言/C++语言编程技术交流论坛(http://www.bczh.net) 详细出处请参考:http://www.bczh.net/forum.php?mod=viewthread&tid=1307&page=1&extra=#pid1792

相关文章
相关标签/搜索