首先用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::OnMouActivate和CView::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 条评论) |