This should be simple, so please help me find my dumb mistake.
I have a custom base class derived from CDialog, and I need to derive
several more classes from it. I followed KB article 99601, which seems
to describe my situation exactly.
1. Both my base class and my derived class were made using Class Wizard.
2. Both used CDialog as their base class.
3. In my derived class, all references to CDialog were changed to my
base class.
4. The .clw file was deleted and regenerated.
When the project was recompiled, one error was generated:
error C2660: 'CProjectsSetupDlg::CProjectsSetupDlg' : function does not
take 2 parameters
(Note that CProjectsSetupDlg is my base class and CProjectsAddDlg is my
derived class.)
Thanks for looking at this,
Rick Lee
/*
*
* THIS IS THE .CPP FILE
*
*/
/////////////////////////////////////////////////////////////////////////////
// CProjectsAddDlg dialog
CProjectsAddDlg::CProjectsAddDlg(CWnd* pParent /*=NULL*/)
: CProjectsSetupDlg(CProjectsAddDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CProjectsAddDlg)
m_AddProjectDesc = _T("");
m_AddProject_ID = _T("");
m_AddProjectName = _T("");
//}}AFX_DATA_INIT
}
void CProjectsAddDlg::DoDataExchange(CDataExchange* pDX)
{
CProjectsSetupDlg::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CProjectsAddDlg)
DDX_Text(pDX, IDC_PROJ_SETUP_DESCRIPTION, m_AddProjectDesc);
DDV_MaxChars(pDX, m_AddProjectDesc, PROJECT_DESC_LENGTH);
DDX_Text(pDX, IDC_PROJ_SETUP_ID, m_AddProject_ID);
DDV_MaxChars(pDX, m_AddProject_ID, PROJECT_ID_LENGTH);
DDX_Text(pDX, IDC_PROJ_SETUP_NAME, m_AddProjectName);
DDV_MaxChars(pDX, m_AddProjectName, PROJECT_NAME_LENGTH);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CProjectsAddDlg, CProjectsSetupDlg)
//{{AFX_MSG_MAP(CProjectsAddDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CProjectsAdd message handlers
void CProjectsAddDlg::OnOK()
{
CString oldItemText;
// TODO: Add extra validation here
this->UpdateData(TRUE);
m_AddProject_ID.TrimLeft();
m_AddProject_ID.TrimRight();
m_AddProjectName.TrimLeft();
m_AddProjectName.TrimRight();
m_AddProjectDesc.TrimLeft();
m_AddProjectDesc.TrimRight();
// Project ID must not be empty.
if (m_AddProject_ID == "") {
AfxMessageBox("Please enter a value for Project ID");
return;
}
// Project ID must be unique.
int nItems = localProjectList.GetSize();
for (int i=0; i<nItems; i++) {
oldItemText = localProjectList[i].GetIndexedMember(1);
if (oldItemText.CompareNoCase(m_AddProject_ID) == 0) {
AfxMessageBox("Please enter a unique value for the Project ID.");
return;
}
}
// Add the project to the static local list.
localProjectList.Add(CSingleProject(m_AddProject_ID, m_AddProjectName,
m_AddProjectDesc));
// Out we go...
CProjectsSetupDlg::OnOK();
}
void CProjectsAddDlg::OnCancel()
{
// TODO: Add extra cleanup here
CProjectsSetupDlg::OnCancel();
}
/*
*
* THIS IS THE .H FILE
*
*/
/////////////////////////////////////////////////////////////////////////////
// CProjectsAdd dialog
class CProjectsAddDlg : public CProjectsSetupDlg
{
// Construction
public:
CProjectsAddDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CProjectsAddDlg)
enum { IDD = IDD_PROJECTS_ADD };
CString m_AddProjectDesc;
CString m_AddProject_ID;
CString m_AddProjectName;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CProjectsAddDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CProjectsAddDlg)
virtual void OnOK();
virtual void OnCancel();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};