手动创建CView视图

通过VC2010向导创建一个标准的MFC单文档框架,去掉文档/视图结构支持。然后,在资源中插入一个FormView窗口,在MainFrame的Create中创建并显示此视图窗口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;
 
    pView = (CMainView *)(RUNTIME_CLASS(CMainView)->CreateObject());
    if(!pView)
    {
        MessageBox(_T("创建视图不成功!"));
        return 0;
    }
 
    CRect crt;
    CCreateContext Cnt;
    GetClientRect(crt);
    Cnt.m_pCurrentDoc = NULL;//GetDocument();
    //创建新添加的视图,资源ID为:IDD_FORMVIEW
    pView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, crt, this, IDD_FORMVIEW, &Cnt);
    pView->ShowWindow(SW_SHOWNORMAL);
    pView->MoveWindow(&crt); 
     
    //----------------------------------------------------------------------
    if (!m_wndStatusBar.Create(this))
    {
        TRACE0("未能创建状态栏\n");
        return -1;      // 未能创建
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
 
    return 0;
}

手动创建CView视图
去掉视图窗口下凹风格,如下图:

1
2
3
4
5
6
BOOL CMainView::PreCreateWindow(CREATESTRUCT& cs)  
{  
    // TODO: 在此添加专用代码和/或调用基类  
    cs.style &= ~WS_BORDER; /* 去除视图凹陷效果 */  
    return CFormView::PreCreateWindow(cs);  
}

注意,修改MainFrame中的OnCmdMsg,OnSetFocus函数中的视图变量
手动创建CView视图















本文转自Chinayu201451CTO博客,原文链接: http://blog.51cto.com/9233403/1967107,如需转载请自行联系原作者