前几天由于项目的需要,需要用到拆分窗口,同时显示到SplitterWnd内,但是是网上收到的都是继承自CView,或是CFormView。
我工程中都是继承CDialog,难道我都要改一遍,那将是一件非常糟糕的事。后来跟踪一下源码,发现CreateView并不是不能插入CDialog,而是没有动态创建的子针而报错。于是查看CView的派生类,发现CDialog和CView的派生类的不同。
class CSplitteDlg : public CDialogEx
{
DECLARE_DYNCREATE(CSplitteDlg) // CView
// DECLARE_DYNAMIC(CSplitteDlg) // CDialog**重点内容**
public:
CSplitteDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CSplitteDlg();
// 对话框数据
enum { IDD = IDD_DIALOG1 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnPaint();
};