Hilfe C2512: 'CTabBasisPage': Kein geeigneter Standardkonstruktor verfügbar
-
ich habe ein Dialog erstellt in dem ich ein Tab Control eingefügt habe.
Doch da die Seitenanzahl zur Laufzeit bekannt wird. Hab ich jetzt eine Klasse namens tabBasisPage abgeleite von CPropertySheet erstellt in ihr sind 2 Variablen von den jeweiligen typ von dialog welches auf der seite angezeigt werden soll. Da ich auch erst zur Laufzeit weis welcher dieser Dialoge auf welcher Seite angezeigt werden soll kann ich sie nicht beide in den konstruktor Packen.
nun sollte das Auswählen des Dialoges die Klasse von Tab Control übernehmen und hab die Beiden Konstruktoren (wieso die Klasse 2 Konstruktoren hat weis ich auch nicht!) von der CPropertySheet leer gelassen.
Aber Irgendwie Klappt das alles nicht!
CMyTabCtrl.H #if !defined(AFX_MYTABCTRL_H__F3E8650F_019C_479F_9E0F_60FE1181F49F__INCLUDED_) #define AFX_MYTABCTRL_H__F3E8650F_019C_479F_9E0F_60FE1181F49F__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // MyTabCtrl.h : header file // #include "TabBasisPage.h" ///////////////////////////////////////////////////////////////////////////// // CMyTabCtrl window class CMyTabCtrl : public CTabCtrl { // Construction public: CMyTabCtrl(); int m_tabCurrent; int m_nNumberOfPages; CTabBasisPage* m_tabPages; // Attributes public: // Operations public: void Init(int KnGroesse,int *PinNr,CString *StBez); void SetRectangle(); // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMyTabCtrl) //}}AFX_VIRTUAL // Implementation public: virtual ~CMyTabCtrl(); // Generated message map functions protected: //{{AFX_MSG(CMyTabCtrl) afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_MYTABCTRL_H__F3E8650F_019C_479F_9E0F_60FE1181F49F__INCLUDED_) CMyTabCtrl.cpp #include "stdafx.h" #include "KabelstPrüf.h" #include "MyTabCtrl.h" #include "TabPageA.h" #include "TabPageB.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMyTabCtrl CMyTabCtrl::CMyTabCtrl() : m_tabPages(NULL) { } CMyTabCtrl::~CMyTabCtrl() { for(int nCount=0; nCount < m_nNumberOfPages; nCount++){ delete m_tabPages[nCount]; } } void CMyTabCtrl::Init(int KnGroesse,int *PinNr,CString *StBez) { m_nNumberOfPages=KnGroesse; //Erstellung der Seiten von Tab Control m_tabPages=new CTabBasisPage[KnGroesse]; m_tabCurrent=0; for(int i=0;i<KnGroesse;i++) { //Auswahl welches Dialog auf der Seite Angezeigt wird InsertItem(i,"Anschl.",i); if(i=0) { m_tabPages[i].m_SeiteA.m_pnPinNr=PinNr; m_tabPages[i].m_SeiteA.m_pszStBez=StBez; m_tabPages[i].m_SeiteA.Create(IDD_PROPPAGE_A, this); m_tabPages[i].m_SeiteA.ShowWindow(SW_SHOW); m_tabPages[i].ShowWindow(SW_SHOW); } else { m_tabPages[i].m_SeiteB.m_pnPinNr=PinNr; m_tabPages[i].m_SeiteB.m_pszStBez=StBez; m_tabPages[i].m_SeiteB.Create(IDD_PROPPAGE_B, this); m_tabPages[i].m_SeiteB.ShowWindow(SW_SHOW); m_tabPages[i].ShowWindow(SW_HIDE); } } SetRectangle(); } void CMyTabCtrl::SetRectangle() { CRect tabRect, itemRect; int nX, nY, nXc, nYc; GetClientRect(&tabRect); GetItemRect(0, &itemRect); nX=itemRect.left; nY=itemRect.bottom+1; nXc=tabRect.right-itemRect.left-1; nYc=tabRect.bottom-nY-1; m_tabPages[0].m_SeiteA.SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW); for(int nCount=1; nCount < m_nNumberOfPages; nCount++){ m_tabPages[nCount].m_SeiteB.SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW); } } BEGIN_MESSAGE_MAP(CMyTabCtrl, CTabCtrl) //{{AFX_MSG_MAP(CMyTabCtrl) ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMyTabCtrl message handlers void CMyTabCtrl::OnLButtonDown(UINT nFlags, CPoint point) { CTabCtrl::OnLButtonDown(nFlags, point); if(m_tabCurrent != GetCurFocus()){ m_tabPages[m_tabCurrent].ShowWindow(SW_HIDE); m_tabCurrent=GetCurFocus(); if(m_tabCurrent!=0) { m_tabPages[m_tabCurrent].m_SeiteB.m_nKnPos=m_tabCurrent; } m_tabPages[m_tabCurrent].ShowWindow(SW_SHOW); m_tabPages[m_tabCurrent].SetFocus(); } }Danke im vorraus
MfC bzw. MfG
Twist
-
Hallo,
du erstellst hier:
m_tabPages=new CTabBasisPage[KnGroesse];ein Array von CTabBasisPage's, das geht aber nur, wenn die Klasse CTabBasisPage einen Standard-Konstruktor hat (also einen, der auch ohne Argumente aufgerufen werden kann)
MfG