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条回答

    报告相同问题?

    悬赏问题

    • ¥35 平滑拟合曲线该如何生成
    • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
    • ¥15 名为“Product”的列已属于此 DataTable
    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 自己瞎改改,结果现在又运行不了了
    • ¥15 链式存储应该如何解决
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站