对话框使用View

更新时间:2023-08-11 21:19:02 阅读: 评论:0

对话框使用View
首先用VC向导建立一个基于对话框的工程。我们这里试验一下无模式对话框使用视图的情况(原理和模式对话框是一样的)。通过创建相关的对话框,并进行显示。准备工作就绪,我们着手处理对话框上创建VIEW了。
    牛津小学英语1a第一步:通过ClassWizard新建一个基于CVIEW的新类,这里命名为CTestView,然后在建立一个基于CDocument的类CTestDoc
    第二步:在需要显示视图的对话框中定义视图对象
eryaprivate:
    CFrameWnd m_Frame;
    CTestView *pView;
    第三步:建立视图:
CCreateContext pContext;
    CWnd* pFrameWnd = this;
    pContext.m_pCurrentDoc = new CTestDoc;
    pContext.m_pNewViewClass = RUNTIME_CLASS(CTestView);
sorry that i loved you    pView =(CTestView *) ((CFrameWnd*)pFrameWnd)->CreateView(&pContext);
    ASSERT(pView);
    pView->ShowWindow(SW_NORMAL);
    CRect rectWindow;
    GetWindowRect(rectWindow);
    ScreenToClient(&rectWindow);
    pView->MoveWindow(rectWindow);

完成,是不是很简单呢,但是相关的工作还没有完成面料成分缩写
carven为了避免主控程序将CTestView对象看作是文档/视图框架,需要重载,CView::OnMouActivateCView::OnDestroy。此外,当用户在控制中单击时,OnMouActivate要负责响应(冬季连衣裙搭配WM_MOUSEACTIVATE)。67是什么意思 int CTestView::OnMouActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT msg)
{   
    //成长兔英语旁路 CView 文档/框架   
    return CWnd::OnMouActivate(pDesktopWnd, nHitTest, msg);
}

void CTestView::OnDestroy()
{   
    CWnd::OnDestroy(); // 旁路 CView 文档/框架
}

通常,CTestView是在virtual void PostNcDestroy()中释放空间,但对话框中的控制常常是作为堆栈对象实现的,所以,在PostNcDestroy()中不必在做什么。   
virtual void PostNcDestroy() {  }   

同时没有给CView使用DYNAMIC_CREATE宏时,MFC不调用OnMouActivate所以在这里需要进行处理。于是在创建的视图类中间手工添加消息映射ON_MESSAGE(WM_MOUSEACTIVATE,  OnMouActivate) 

编译运行,OK,为了能够证明我们是在对话框中间使用了视图,我们对OnDraw函数进行修改,进行我们需要的信息的显示,这里采用前面文章提到的叠加字体显示一些信息
void CTestView::OnDraw(CDC* pDC)
{
    CDocument* pDoc = GetDocument();
    // TODO: add draw code here
    CFont pUnitFont, *pOldFont;
    LOGFONT lf;
    lf.lfEscapement = 0;
    lf.lfItalic = NULL;
    lf.lfUnderline = NULL;
    lf.lfStrikeOut = NULL;
    lf.lfCharSet = DEFAULT_CHARSET;
    lf.lfHeight = 45;
    strcpy(lf.lfFaceName, "隶书");
    pUnitFont.CreateFontIndirect(&lf);
    pOldFont = (CFont *)pDC->SelectObject(&pUnitFont);   
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(0, 0, 0));
    CRect rectText(10 + 3, 10 + 3, 520 + 3, 300 + 3);
    pDC->DrawText("对话框使用视图的例子2020中考时间", rectText, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    pDC->SetTextColor(RGB(255, 0, 0));
    rectText = CRect(10, 10, 520, 300);
    pDC->DrawText("对话框使用视图的例子", rectText, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    pDC->SelectObject(pOldFont);
    pUnitFont.DeleteObject();
凝华}
效果可以如下了:

本文发布于:2023-08-11 21:19:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/194028.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对话框   视图   显示   进行   使用   需要   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图