dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>文章内容
深入浅出MFC文档/视图架构之视图
来源: 天极开发 作者: 宋宝华 <
  视图类CView

  在MFC"文档/视图"架构中,CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。在"文档/视图"架构中,文档负责管理和维护数据;而视图类则负责如下工作:

  (1) 从文档类中将文档中的数据取出后显示给用户;

  (2) 接受用户对文档中数据的编辑和修改;

  (3) 将修改的结果反馈给文档类,由文档类将修改后的内容保存到磁盘文件中。

  文档负责了数据真正在永久介质中的存储和读取工作,视图呈现只是将文档中的数据以某种形式向用户呈现,因此一个文档可对应多个视图。

  下面我们来看看CView类的声明:

class CView : public CWnd
{
 DECLARE_DYNAMIC(CView)
 // Constructors
protected:
 CView();

 // Attributes
public:
 CDocument* GetDocument() const;

 // Operations
public:
 // for standard printing setup (override OnPreparePrinting)
 BOOL DoPreparePrinting(CPrintInfo* pInfo);

 // Overridables
public:
 virtual BOOL IsSelected(const CObject* pDocItem) const; // support for OLE

 // OLE scrolling support (used for drag/drop as well)
 virtual BOOL OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll = TRUE);
 virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE);

 // OLE drag/drop support
 virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject,DWORD dwKeyState, CPoint point);
 virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject,DWORD dwKeyState, CPoint point);
 virtual void OnDragLeave();
 virtual BOOL OnDrop(COleDataObject* pDataObject,DROPEFFECT dropEffect, CPoint point);
 virtual DROPEFFECT OnDropEx(COleDataObject* pDataObject,
 DROPEFFECT dropDefault, DROPEFFECT dropList, CPoint point);
 virtual DROPEFFECT OnDragScroll(DWORD dwKeyState, CPoint point);

 virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);

 virtual void OnInitialUpdate(); // called first time after construct

protected:
 // Activation
 virtual void OnActivateView(BOOL bActivate, CView* pActivateView,CView* pDeactiveView);
 virtual void OnActivateFrame(UINT nState, CFrameWnd* pFrameWnd);

 // General drawing/updating
 virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
 virtual void OnDraw(CDC* pDC) = 0;

 // Printing support
 virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
 // must override to enable printing and print preview

 virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
 virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
 virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

 // Advanced: end print preview mode, move to point
 virtual void OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point,CPreviewView* pView);

 // Implementation
public:
 virtual ~CView();
 #ifdef _DEBUG
  virtual void Dump(CDumpContext&) const;
  virtual void AssertValid() const;
 #endif //_DEBUG

 // Advanced: for implementing custom print preview
 BOOL DoPrintPreview(UINT nIDResource, CView* pPrintView,CRuntimeClass* pPreviewViewClass, CPrintPreviewState* pState);

 virtual void CalcWindowRect(LPRECT lpClientRect,UINT nAdjustType = adjustBorder);
 virtual CScrollBar* GetScrollBarCtrl(int nBar) const;
 static CSplitterWnd* PASCAL GetParentSplitter(const CWnd* pWnd, BOOL bAnyState);

protected:
 CDocument* m_pDocument;

public:
 virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,AFX_CMDHANDLERINFO* pHandlerInfo);
protected:
 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
 virtual void PostNcDestroy();

 // friend classes that call protected CView overridables
 friend class CDocument;
 friend class CDocTemplate;
 friend class CPreviewView;
 friend class CFrameWnd;
 friend class CMDIFrameWnd;
 friend class CMDIChildWnd;
 friend class CSplitterWnd;
 friend class COleServerDoc;
 friend class CDocObjectServer;

 //{{AFX_MSG(CView)
  afx_msg int OnCreate(LPCREATESTRUCT lpcs);
  afx_msg void OnDestroy();
  afx_msg void OnPaint();
  afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message);
  // commands
  afx_msg void OnUpdateSplitCmd(CCmdUI* pCmdUI);
  afx_msg BOOL OnSplitCmd(UINT nID);
  afx_msg void OnUpdateNextPaneMenu(CCmdUI* pCmdUI);
  afx_msg BOOL OnNextPaneCmd(UINT nID);

  // not mapped commands - must be mapped in derived class
  afx_msg void OnFilePrint();
  afx_msg void OnFilePrintPreview();
 /
上一篇:深入浅出MFC文档/视图架构之文档   下一篇:使用SDL打造游戏世界之入门篇
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言学习
·C语言指针
·C语言数组排序小结
·c语言 最简单的推箱子游戏
·c语言 全国计算机编程大赛复赛试
·c语言 全国计算机编程大赛复赛试
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
  相关文章
·深入浅出MFC文档/视图架构之文档
·使用SDL打造游戏世界之入门篇
·深入浅出MFC文档/视图架构之文档
·深入浅出MFC文档/视图架构之框架
·深入浅出MFC文档/视图架构之基本
·深入浅出MFC文档/视图架构之相互
·基于Visual C++ 6.0的Add-in编程
·深入浅出MFC文档/视图架构之实例
·在VC中使用Windows管道技术编程
·VC++与Matlab混合编程之引擎操作
·利用MFC文档视图框架编写打印程
·GIS系统三维地景仿真的设计之基
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763