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

相關文章
相關標籤/搜索