Forum
Please
Log In
to post a new message or reply to an existing one. If you are not registered, please
register.
NOTE: Some forums may be read-only if you are not currently subscribed to
our technical support services.
Subject |
Author |
Date |
|
Bertil Morefält
|
Nov 5, 2009 - 5:18 AM
|
Hi! I have an MDI application with 28 dll:s (MFC Extenstion DLL:s) and I am trying to bild a new MFC Extenstin DLL where I want to use yours ProfUIS 2.85. My new DLL have CAnvFrame (CMDIChildWnd), CAnvDoc (CDocument) and CAnvView (CFormView) classes. I have mixed yours examples MIDIDOCVIEW and FormView from StatusPanes. When I comile my example I get the following error when CAnvView is done. 1>c:\program files (x86)\foss software inc\prof-uis\include\exttempl.h(306) :
error C2664: ’CExtAFV<CExtAFVBase>::CExtAFV(__EXT_MFC_SAFE_LPCTSTR,CWnd *)’ : cannot convert parameter1 from ’UINT’ to ’__EXT_MFC_SAFE_LPCTSTR’ What have I done wrong? My class declaration begins with.. ---------- #pragma once
#ifdef IMPL_DANV
#define CLASS_DECL_DANV _declspec(dllexport)
#else
#define CLASS_DECL_DANV _declspec(dllimport)
#endif
#include "ExtButton.h"
class CAnvDoc;
// CAnvView
class CLASS_DECL_DANV CAnvView
: public CExtWA < CExtWS < CExtAFV < CFormView > > >
{
protected: // create from serialization only
CAnvView();
DECLARE_DYNCREATE(CAnvView)
// Form Data
public:
//{{AFX_DATA(CArtView)
enum { IDD = IDD_DEDU_AAA };
CExtButton m_ctlOk;
//}}AFX_DATA
-------------------- and the cpp-file begins with: #include "stdafx.h"
#include "DAnv.h"
#include "Dedu.h"
#include "AnvFrame.h"
#include "AnvDoc.h"
#include "AnvView.h"
// CAnvView
IMPLEMENT_DYNAMIC(CAnvView, CFormView)
CAnvView::CAnvView()
: CExtWA < CExtWS < CExtAFV < CFormView > > > ( CAnvView::IDD, ((CWnd *)NULL) )
{
}
CAnvView::~CAnvView()
{
}
-------------------
|
|
Technical Support
|
Nov 5, 2009 - 1:31 PM
|
You faced a Visual C++ bug related to the incorrect exporting of template based classes. The solution is tricky. You need to declare one additional non-exported class:
class /* not exported-imported */ CDllInternalFormViewClass : public CExtWA < CExtAFV < CFormView > >
{
. . .
};
class CLASS_DECL_DANV CAnvView : public CDllInternalFormViewClass
{
. . .
};
Your CAnvView will need to implement all the virtual methods present in the CDllInternalFormViewClass class.
|
|