chaojidayuanzi 2013-09-03 13:44
浏览 896

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

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就这两个

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算
    • ¥15 java如何提取出pdf里的文字?