((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView()
这样得到的是CView*, 再次强制转换我程序中的視圖類指針。
CView *pView = ((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();
CMyView *pMyView = (CMyView*)pView;
pMyView->就可以访问视图类中的public 成员变量了。我的視圖繼承於CScrollView 類理論上沒問題,但運行時有錯誤:
d:\eview.h(21) : error C2143: syntax error : missing ';' before '*'
d:\eview.h(21) : error C2501: 'CEDoc' : missing storage-class or type specifiers
d:\eview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers
這個.h頭文件是系統自動生成的,應該沒錯的.
問題出在哪里了?
这样得到的是CView*, 再次强制转换我程序中的視圖類指針。
CView *pView = ((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView();
CMyView *pMyView = (CMyView*)pView;
pMyView->就可以访问视图类中的public 成员变量了。我的視圖繼承於CScrollView 類理論上沒問題,但運行時有錯誤:
d:\eview.h(21) : error C2143: syntax error : missing ';' before '*'
d:\eview.h(21) : error C2501: 'CEDoc' : missing storage-class or type specifiers
d:\eview.h(21) : error C2501: 'GetDocument' : missing storage-class or type specifiers
這個.h頭文件是系統自動生成的,應該沒錯的.
問題出在哪里了?
是'GetDocument' 处出错的。
我剛才又用同樣的方法試了一個簡單的程序,可提示的錯誤和上面是同樣的,那些提示有錯的地方都是我的視圖頭文件中,這些是系統自動生成的,
這個問題如何解決???
试试
搞的我头都快爆了,后来看VIEW类里没有DOC.H文件,所以就尝试了一下,结果成功
所以也没深究之,原因至今不明-_-~!
((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView()获得的是CVIEW型的,而其对应的DOC类为默认的CDOCUMENT型的,我们将GetActiveView()强制转换成我们自己的C**VIEW型时,由于SDI结构找不到对应的DOC类(即没有数据源),所以会报错(错误类型和我们没有包含某个类,而用到其对象时很象).当加上**DOC.H后,C*VIEW.H中的GetDocument()应该对将其与C*VIEW尖对应起来(猜测).
不知道对不对...