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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 用C语言输入方程怎么
    • ¥15 网站显示不安全连接问题
    • ¥15 github训练的模型参数无法下载
    • ¥15 51单片机显示器问题
    • ¥20 关于#qt#的问题:Qt代码的移植问题
    • ¥50 求图像处理的matlab方案
    • ¥50 winform中使用edge的Kiosk模式
    • ¥15 关于#python#的问题:功能监听网页
    • ¥15 怎么让wx群机器人发送音乐
    • ¥15 fesafe材料库问题