第五节 CView和GDI以及类与继承.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五节 CView和GDI以及类与继承

CView和GDI以及类与继承 一.建立MFC单文档 首先打开VS2008,在“文件”中新建项目,选择visualC++中的“MFC应用程序” 命名为“Five”确认,弹出“MFC应用程序向导”; 点击下一步,在应用程序类型中选择“单文档”,在“用户功能界面”中勾选“最大化”;点击下一步,在生成的类中的 基类选择“CView”,点击完成单文档CView的建立。 然后像以前一样将工程属性中的常规中使用的字符集改为“使用多字节字符集”。 熟悉CView的结构 CView不像前面所说的CFromView,在CView中没有对话框,没有可以从工具箱拖动的控件等,只能在自己利用代码创建一个控件并为其添加事件。 下面我们以建立一个CTreeCtrl,即树状控件。 首先在FiveView.h中实例化一个控件对象,代码如下: CTreeCtrl m_tree; 然后再FiveView.cpp中创建一个CTreeCtrl,创建前需要先为FiveView.cpp添加一个OnCreat()事件,创建方法在前面几节中有介绍,下面创建CTreeCtrl,代码如下: int CFiveView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; m_tree.Create(WS_VISIBLE|WS_CHILD|WS_BORDER|TVS_HASLINES|TVS_HASBUTTONS|TVS_EDITLABELS|TVS_LINESATROOT|TVS_CHECKBOXES,CRect(0,0,0,0),this,IDC_TREECTRL); m_tree.ModifyStyle(TVS_CHECKBOXES,0); return 0; } 如果直接写上面的程序会报出错误,因为没有IDC_TREECTRL,其中IDC代表资源文件。因此我们需要现在resources.h中声明此ID,代码如下: #define IDC_TREECTRL 130 不能与resources.h中的其他重复。 另外我需要介绍下m_tree.Creat方法中的相关内容,代表了创建的CTreeCtrl拥有的样式, 而后面的m_tree.ModifyStyle()的作用是对CTreeCtrl的样式进行增加或删除,其定义为: BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0); dwRemove是进行删除的项,若没有,设为0;dwAdd是进行添加的项,同样,没有则设为0。 上面的功能就是移除已经定义了的TVS_CHECKBOXES。 其中的CRect(0,0,0,0)代表建立一个确定坐标的矩形。 当改变窗体大小时,树状控件也随其变化,并充满窗体。首先为FiveView.cpp添加一个OnSize()事件,写下如下代码: if(m_tree.m_hWnd) m_tree.SetWindowPos(NULL,0,0,cx,cy,SWP_NOZORDER); 在属性为FiveView.cpp添加一个OnInitialUpdate()方法,通过此方法为树状控件添加节点,代码如下: void CFiveView::OnInitialUpdate() { CView::OnInitialUpdate(); HTREEITEM m_node=m_tree.InsertItem(根节点,TVI_ROOT); m_tree.InsertItem(第一层节点,m_node); m_tree.InsertItem(根节点2,TVI_ROOT); } 运行效果如图: 基于CView的GDI绘图 新建一个工程,命名为“Five_GDI”,方法与上面一样。 找到Five_GDIView.cpp中的OnDraw()方法,其中的CDC就是进行绘图的类, 1)下面在指定坐标上输出文字,代码如下: void CFive_GDIView::OnDraw(CDC* pDC) { CFive_GDIDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; pDC-TextOut(100,100,Hello,World!); }效果如图 在窗口中画线,代码如下: pDC-MoveTo(100,200); pDC-LineTo(500,600); 效果如图 在窗口画矩形和椭圆 pDC-Rectangle(100,100,200,200); pDC-Ellipse(400,200,500,400); 效果如

文档评论(0)

xutiantian250 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档