// SelectorDlg.h : header file
//
#if !defined(AFX_SELECTORDLG_H__679D7B67_BBE1_4B10_BFA3_0707446C5017__INCLUDED_)
#define AFX_SELECTORDLG_H__679D7B67_BBE1_4B10_BFA3_0707446C5017__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CSelectorDlg dialog
class CSelectorDlg : public CDialog
{
// Construction
public:
CSelectorDlg(CWnd* pParent = NULL); // standard constructor
void SetList(CList<CString, CString> *pLstPages);
void GetList(CList<CString, CString> &lstPages);
// Dialog Data
//{{AFX_DATA(CSelectorDlg)
enum { IDD = IDD_SELECTOR_DIALOG };
CListBox m_listPages;
CString m_strPageAddress;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSelectorDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CSelectorDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnAdd();
afx_msg void OnRemove();
afx_msg void OnSelchangeListPages();
afx_msg void OnButtonOpen();
virtual void OnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CList<CString, CString> m_listPageAddress;
};
void CSelectorDlg::SetList(CList<CString, CString> *pLstPages)
{
m_listPageAddress.RemoveAll();
m_listPageAddress.AddTail(pLstPages);
};
void CSelectorDlg::GetList(CList<CString, CString> &lstPages)
{
lstPages.RemoveAll();
lstPages.AddTail(&m_listPageAddress);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SELECTORDLG_H__679D7B67_BBE1_4B10_BFA3_0707446C5017__INCLUDED_)
///////////*****************************/////////////////////
// BrowserView.h : interface of the CBrowserView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_BROWSERVIEW_H__5E6A502F_EC67_4A87_9F71_1562364F89EB__INCLUDED_)
#define AFX_BROWSERVIEW_H__5E6A502F_EC67_4A87_9F71_1562364F89EB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CBrowserView : public CHtmlView
{
CSelectorDlg m_selDlg;
CList<CString, CString> m_listPages;
protected: // create from serialization only
CBrowserView();
DECLARE_DYNCREATE(CBrowserView)
// Attributes
public:
CBrowserDoc* GetDocument();
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBrowserView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void OnInitialUpdate(); // called first time after construct
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CBrowserView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CBrowserView)
afx_msg void OnFileSelect();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in BrowserView.cpp
inline CBrowserDoc* CBrowserView::GetDocument()
{ return (CBrowserDoc*)m_pDocument; }
#endif
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_BROWSERVIEW_H__5E6A502F_EC67_4A87_9F71_1562364F89EB__INCLUDED_)
Документ/вид + диалог (переменная типа диалога в классе вида)
Пишу приложение документ/вид для отображения html файлов. По выбору пункта меню должно вызываться диалоговое окно. Класс его CSelectorDlg
Почему когда я объявляю в классе вида CBrowserView переменную CSelectorDlg m_selDlg; компилятор пишет
c:\program files\microsoft visual studio\myprojects\browser\browserview.h(16) : error C2146: syntax error : missing ';' before identifier 'm_selDlg'
c:\program files\microsoft visual studio\myprojects\browser\browserview.h(16) : error C2501: 'CSelectorDlg' : missing storage-class or type specifiers
c:\program files\microsoft visual studio\myprojects\browser\browserview.h(16) : error C2501: 'm_selDlg' : missing storage-class or type specifiers
Код обоих классаов:
Код:
Код:
#include "SelectorDlg.h"
Код:
#include "SelectorDlg.h"
Результат:
Код:
rowserView.obj : error LNK2005: "public: void __thiscall CSelectorDlg::SetList(class CList<class CString,class CString> *)" (?SetList@CSelectorDlg@@QAEXPAV?$CList@VCString@@V1@@@@Z) already defined in Browser.obj
BrowserView.obj : error LNK2005: "public: void __thiscall CSelectorDlg::GetList(class CList<class CString,class CString> &)" (?GetList@CSelectorDlg@@QAEXAAV?$CList@VCString@@V1@@@@Z) already defined in Browser.obj
SelectorDlg.obj : error LNK2005: "public: void __thiscall CSelectorDlg::SetList(class CList<class CString,class CString> *)" (?SetList@CSelectorDlg@@QAEXPAV?$CList@VCString@@V1@@@@Z) already defined in Browser.obj
SelectorDlg.obj : error LNK2005: "public: void __thiscall CSelectorDlg::GetList(class CList<class CString,class CString> &)" (?GetList@CSelectorDlg@@QAEXAAV?$CList@VCString@@V1@@@@Z) already defined in Browser.obj
Debug/Browser.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
BrowserView.obj : error LNK2005: "public: void __thiscall CSelectorDlg::GetList(class CList<class CString,class CString> &)" (?GetList@CSelectorDlg@@QAEXAAV?$CList@VCString@@V1@@@@Z) already defined in Browser.obj
SelectorDlg.obj : error LNK2005: "public: void __thiscall CSelectorDlg::SetList(class CList<class CString,class CString> *)" (?SetList@CSelectorDlg@@QAEXPAV?$CList@VCString@@V1@@@@Z) already defined in Browser.obj
SelectorDlg.obj : error LNK2005: "public: void __thiscall CSelectorDlg::GetList(class CList<class CString,class CString> &)" (?GetList@CSelectorDlg@@QAEXAAV?$CList@VCString@@V1@@@@Z) already defined in Browser.obj
Debug/Browser.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
Вынеси реализацию методов CSelectorDlg в .cpp файл
Спасибо, что помог, заработало!
Последний маленький вопрос: как открыть html документ с помощью метода Navigate2. Файлы, расположенные в сети открываются нормально, а вот те что на компе - вызвают ошибку