NND怎么一直说我编译有问题....错误
1 error C2065: “NodeNode”: 未声明的标识符 d:\mybrowser\MainFrm.h 64 MyBrowser做的浏览器,准备实现多标签现在有问题,想不明白问题出在哪?请大家指点一下~~~~在MainFrm.h中定义:
CList <NodeNode,NodeNode&> Listview;
//这句一直有问题,但改为下面这个就编译通过
CList <int,int&> Listview;在StdAfx.h中定义
struct NodeNode //主要是保存视图,切换时显示
{
CMyBrowserView* pOldView;
CMyBrowserView* pCurrView;
};自己换了几种方法,但NodeNode就是不识别
1 error C2065: “NodeNode”: 未声明的标识符 d:\mybrowser\MainFrm.h 64 MyBrowser做的浏览器,准备实现多标签现在有问题,想不明白问题出在哪?请大家指点一下~~~~在MainFrm.h中定义:
CList <NodeNode,NodeNode&> Listview;
//这句一直有问题,但改为下面这个就编译通过
CList <int,int&> Listview;在StdAfx.h中定义
struct NodeNode //主要是保存视图,切换时显示
{
CMyBrowserView* pOldView;
CMyBrowserView* pCurrView;
};自己换了几种方法,但NodeNode就是不识别
将
struct NodeNode //主要是保存视图,切换时显示
{
CMyBrowserView* pOldView;
CMyBrowserView* pCurrView;
};
加入
看看运行时是否还报错
////////////////#if !defined(AFX_STDAFX_H__1923D407_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_)
#define AFX_STDAFX_H__1923D407_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxhtml.h> // MFC HTML view support
#include <afxtempl.h>
#include "MyBrowserView.h"#define WM_CREATEVIEW WM_USER+1
#define WM_CHANGVIEW WM_USER+2
#define WM_CLOSEVIEW WM_USER+3struct NodeNode
{
CMyBrowserView* pOldView;
CMyBrowserView* pCurrView;
};//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif
CMyBrowserView 中是否也包含了stdAfx.h?
{
CMyBrowserView* pOldView;
CMyBrowserView* pCurrView;
}; #include "MyBrowserView.h" #define WM_CREATEVIEW WM_USER+1
#define WM_CHANGVIEW WM_USER+2
stdAfx.h中
必须#include "MyBrowserView.h"在struct NodeNode 结构前...
因为struct NodeNode 结构中用到MyBrowserView.h文件中的CMyBrowserView类
把这句给注册掉
//CList <NodeNode,NodeNode&> Listview;
然后再这样定义
NodeNode abdd;
就抱错错误 error C2146: 语法错误 : 缺少“;”(在标识符“abdd”的前面) d:\mybrowser\MainFrm.h 67 MyBrowser
我自己真晕了,,,不知道错误在哪???
把结构体放到MainFrm.h里试试
不是nodenode的问题,可能还是别的地方的问题
// MyBrowserView.h : interface of the CMyBrowserView class
//
/////////////////////////////////////////////////////////////////////////////#if !defined(AFX_MYBROWSERVIEW_H__1923D40D_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_)
#define AFX_MYBROWSERVIEW_H__1923D40D_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include "MyBrowserDoc.h"
#include "MainFrm.h"
#include "afxext.h"
//#include "ModelessDlg.h"
//#define WM_CLOSE_CHILDWINDOW WM_USER+118class CMyBrowserView : public CHtmlView
{
protected: // create from serialization only
CMyBrowserView();
DECLARE_DYNCREATE(CMyBrowserView)// Attributes
public:
//CModelessDlg * m_MDlg;
CMyBrowserDoc* GetDocument();
public:
virtual BOOL CreateControlSite(COleControlContainer* pContainer,
COleControlSite** ppSite, UINT nID, REFCLSID clsid);
// Operations
public:// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyBrowserView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual void OnDocumentComplete(LPCTSTR lpszURL);
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual void OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel);
virtual void OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel);
virtual void OnCommandStateChange(long nCommand, BOOL bEnable);
// virtual void OnNavigateComplete2(LPCTSTR strURL);
virtual BOOL OnAmbientProperty(COleControlSite* pSite, DISPID dispid, VARIANT* pvar);
virtual void BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL,
VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData,
VARIANT* Headers, VARIANT_BOOL* Cancel);
protected:
virtual void OnInitialUpdate(); // called first time after construct
//}}AFX_VIRTUAL// Implementation
public:
HWND m_active;
int m_closetime;
CStringArray strarray;
virtual ~CMyBrowserView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:// Generated message map functions
protected:
//{{AFX_MSG(CMyBrowserView)
afx_msg void OnGoback();
afx_msg void OnGofoward();
afx_msg void OnStop();
afx_msg void OnUpdate();
afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnTimer(UINT nIDEvent);
// afx_msg LRESULT OnCloseWindow();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
void AlterRegedit(CString);
BOOL CheckDefaultBrowser();
public:
// bool m_bResizeWindow;
afx_msg void OnParentNotify(UINT message, LPARAM lParam);// afx_msg void OnSize(UINT nType, int cx, int cy);
// afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
// afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg void OnBtnSaft();
afx_msg void OnBtnClear();
};#ifndef _DEBUG // debug version in MyBrowserView.cpp
inline CMyBrowserDoc* CMyBrowserView::GetDocument()
{ return (CMyBrowserDoc*)m_pDocument; }
#endif///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_MYBROWSERVIEW_H__1923D40D_8C14_11D4_8EE7_0000B444E5F4__INCLUDED_)
#include "MyBrowserView.h"
换成
class CMyBrowserView;
#include "MainFrm.h"
出现嵌套调用了,
删除stdafx.h里的#include "MyBrowserView.h"
在mainfrm.h里添加
class CMyBrowserView;
struct NodeNode
{
CMyBrowserView* pOldView;
CMyBrowserView* pCurrView;
};
应该就可以了.