派生通用类涉及到派生类的构造函数需要传递窗口ID和CWnd,所以要在派生类中事先定义好

在Dialog中构造函数是这样定义的

public:
CDialogEx();
CDialogEx(UINT nIDTemplate, CWnd *pParent = NULL);
CDialogEx(LPCTSTR lpszTemplateName, CWnd *pParentWnd = NULL);

所以在派生

Dialog类时要这样构造
class CThemeDialogForFixShootSearch : public CDialogEx
{
DECLARE_DYNAMIC(CThemeDialogForFixShootSearch) public:
CThemeDialogForFixShootSearch(UINT nIDTemplate, CWnd* pParent = NULL); // standard constructor
virtual ~CThemeDialogForFixShootSearch();
}
#include "stdafx.h"
#include "ThemeDialogForFixShootSearch.h" // CThemeDialogForFixShootSearch dialog IMPLEMENT_DYNAMIC(CThemeDialogForFixShootSearch, CDialogEx) CThemeDialogForFixShootSearch::CThemeDialogForFixShootSearch(UINT nIDTemplate, CWnd* pParent /*=NULL*/)
: CDialogEx(nIDTemplate, pParent)
{ } CThemeDialogForFixShootSearch::~CThemeDialogForFixShootSearch()
{
} void CThemeDialogForFixShootSearch::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
} BEGIN_MESSAGE_MAP(CThemeDialogForFixShootSearch, CDialogEx)
END_MESSAGE_MAP()
同样FormView的构造函数为
protected:      // must derive your own class
CFormView(LPCTSTR lpszTemplateName);
CFormView(UINT nIDTemplate);

因为FormView没有默认构造,所以必须带参数

#pragma once
#include "afxext.h" class CBackgroundColor :public CFormView
{
DECLARE_DYNAMIC(CBackgroundColor)
public:
CBackgroundColor(UINT nIDTemplate);
virtual ~CBackgroundColor();
DECLARE_MESSAGE_MAP()
afx_msg void OnPaint();
};
#include "stdafx.h"
#include "BackgroundColor.h"
#include <afxtempl.h>
IMPLEMENT_DYNAMIC(CBackgroundColor, CFormView)
CBackgroundColor::CBackgroundColor (UINT nIDTemplate)
: CFormView(nIDTemplate)
{
} CBackgroundColor::~CBackgroundColor()
{
}
BEGIN_MESSAGE_MAP(CBackgroundColor, CFormView)
ON_WM_PAINT()
END_MESSAGE_MAP()
 
05-21 21:38