((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頭文件是系統自動生成的,應該沒錯的.
問題出在哪里了?

解决方案 »

  1.   

    不是你这儿出错的,
    是'GetDocument' 处出错的。
      

  2.   

    那個public 類型的變量是在視圖頭文件中聲明的,這樣對嗎?
    我剛才又用同樣的方法試了一個簡單的程序,可提示的錯誤和上面是同樣的,那些提示有錯的地方都是我的視圖頭文件中,這些是系統自動生成的,
    這個問題如何解決???
      

  3.   

    在VIEW类的.H文件中加入#include"*DOC.H"
    试试
      

  4.   

    問題解決了,樓上的高手(shmily1280 (锄禾))說說為何這樣做?why???誰能給我指點指點......
      

  5.   

    我想也是个BUG吧,因为我前些日子碰到过
    搞的我头都快爆了,后来看VIEW类里没有DOC.H文件,所以就尝试了一下,结果成功
    所以也没深究之,原因至今不明-_-~!
      

  6.   

    我猜是:
    ((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView()获得的是CVIEW型的,而其对应的DOC类为默认的CDOCUMENT型的,我们将GetActiveView()强制转换成我们自己的C**VIEW型时,由于SDI结构找不到对应的DOC类(即没有数据源),所以会报错(错误类型和我们没有包含某个类,而用到其对象时很象).当加上**DOC.H后,C*VIEW.H中的GetDocument()应该对将其与C*VIEW尖对应起来(猜测).
    不知道对不对...