2 u011714408 u011714408 于 2013.09.03 21:44 提问

关于动态创建的问题,内容如下。

IMPLEMENT_DYNCREATE(CMyView,CView)

BEGIN_MESSAGE_MAP(CMyView,CView)

END_MESSAGE_MAP()
void CMyView::OnDraw(CDC * pDC){
pDC->TextOut(100,100,"CMyView::OnDraw");
}
class CMainFrame:public CFrameWnd{
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext );
public:
CSplitterWnd m_splitter1;
CSplitterWnd m_splitter2;
};
BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
END_MESSAGE_MAP()
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){
m_splitter1.CreateStatic(this,2,1);
m_splitter2.CreateStatic(&m_splitter1,1,2,WS_CHILD|WS_VISIBLE,m_splitter1.IdFromRowCol(0,0));//先创建两个框架窗口
//其中一个为日字形,还有一个在日字形的上半部分,创建成为倒日字形。
m_splitter2.CreateView(0,0,RUNTIME_CLASS(CMyView),CSize(100,100),pContext);
m_splitter2.CreateView(0,1,RUNTIME_CLASS(CEditView),CSize(100,100),pContext);
m_splitter1.CreateView(1,0,RUNTIME_CLASS(CHtmlView),CSize(200,200),pContext);//然后镶嵌三块玻璃。问题,为何
//三个函数均能够使用动态创建信息。
CHtmlView * pHtml=(CHtmlView*)m_splitter1.GetPane(1,0);//获取某一个视图对象的地址
pHtml->Navigate("c:/");
m_splitter1.SetRowInfo(0,200,100);//设置日字形窗口第0行,高度是200,最低100
// m_splitter1.SetColumnInfo(0,200,100);//列宽
return CFrameWnd::OnCreateClient(lpcs,pContext);//返回基类默认处理

}
class CMyWinApp: public CWinApp{
public:
virtual BOOL InitInstance();
};
CMyWinApp theApp;
BOOL CMyWinApp::InitInstance(){
CMainFrame* pFrame=new CMainFrame();
pFrame->Create(NULL,"mfcsplitter");
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
}
仅仅在CView中写了两个宏定义,为何子类都能用? 是否父类定义了宏定义,子类都可以用? 那么子类定义了宏定义,父类可不可以用动态创建? CEditView,CHtmlView就这两个

Csdn user default icon
上传中...
上传图片
插入图片