我在对话框中 包含了视图类的头文件 但调试时还是回出错!
在对话框中的定义如下:
#include "DrawView.h"
class CWriteDlg:public CDialog
{
  CDrawView* pView;
  - - - - - -  - -
};
CTextWriteDlg::TCextWriteDlg(CWnd* pParent,CString Text):CDialog(TextWriteDlg::IDD, pParent)
{
m_pView=(CDrawView *)pParent;      //记录传入指针
}void CTextWriteDlg::OnOK() 
{
// TODO: Add extra validation here
UpdateData();
m_pView->SendMessage(WM_COMMAND,ID_TEXT_ONOK);

CDialog::OnOK();
调试出错:
g:\vc程序\复件 928draw\textwritedlg.h(23) : error C2143: syntax error : missing ';'before '*'
g:\vc程序\复件 928draw\textwritedlg.h(23) : error C2501: 'CDrawView' : missing storage-class or type specifiers
g:\vc程序\复件 928draw\textwritedlg.h(23) : error C2501: 'm_pView' : missing storage-class or type specifiers还有在视图类引用对话框类时 也出现了同样的问题
(头文件都引用了)
请问这是怎么回事啊?????
谢谢!

解决方案 »

  1.   

    路过,很经典的症状了;

    #include "DrawView.h"
    之前加
    #include "DrawDoc.h"
      

  2.   

    你这是编译报错吧
    声明的是CWriteDlg,使用的是CTextWriteDlg……好好检查下代码
      

  3.   

    m_pView定义成局部变量,在cpp文件中#include "DrawView.h"需要调用的时候:CDrawView *pView = (CDrawView *)GetParent();或者利用获取当前试图指针的办法:其他类中获取当前活动视图CxxxView指针:多文档:
    CMainFrame *pMF=(CMainFrame *)AfxGetMainWnd();
    CChildFrame *pCF=(CChildFrame *)pMF->GetActiveFrame();
    CxxxView *pActiveView = (CxxxView *)pCF->GetActiveView();
    单文档:
    #include "MainFrame.h"
    #include "xxxDoc.h"
    #include "xxxView.h"
    CMainFrame *pMF=(CMainFrame *)AfxGetMainWnd();
    CxxxView *pActiveView = (CxxxView *) pMF->GetActiveView();
      

  4.   

    还有一种办法:
    把 #include "DrawView.h" 换成
    声明 class CDrawView;  //因为你定义的是指针
      

  5.   

    我也出现这种问题啊。关键是声明class CDrawView以后还是出现和包含头文件#include "DrawView.h" 一样的错误。各位大虾,怎么回事啊?