MFC程序设计基础_第1页
MFC程序设计基础_第2页
MFC程序设计基础_第3页
MFC程序设计基础_第4页
MFC程序设计基础_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MFC程序设计基础1. MFC是采用面向对象程序设计技术对Windows API函数特点:(1)文档视图类(2)窗口类,对话框类,DC类,字符串类(CString)(3)消息映射(4)工具栏,状态栏,切分视图,滚动视图(5)数据库类,通讯类2. MFC的程序入口被隐藏在应用程序框架内部(Appmodul.cpp)3. 一个MFC项目的创建(以Visual Studio 2010为例)4. 基于MFC的形状控制器(1)标题与初始窗口大小设置在CProj2App:InitInstance()函数中更改窗口标题:m_pMainWnd-SetWindowTextW(_T(Shape Control);在CMainFrame类中修改窗口大小:BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)cs.cx = 600;cs.cy = 480;(2)绘制形状在视图类OnDraw函数中绘制图形void CProj2View:OnDraw(CDC* pDC)CProj2Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;pDC-SelectObject(new CBrush(RGB(0, 128, 255);pDC-Ellipse(100, 100, 300, 250);在视图类中增加成员变量:int m_x;int m_y;int m_len;int m_wid;enum ELLIPSE, RECTANGLEm_shape;在视图类构造函数中初始化:CProj2View:CProj2View()m_x = 200;m_y = 175;m_len = 200;m_wid = 150;m_shape = ELLIPSE;重写OnDraw函数中的形状绘制代码:void CProj2View:OnDraw(CDC* pDC)pDC-SelectObject(new CBrush(RGB(0, 125, 255);if(m_shape = ELLIPSE)pDC-Ellipse(m_x-m_len/2, m_y-m_wid/2, m_x+m_len/2, m_y+m_wid/2);elsepDC-Rectangle(m_x-m_len/2, m_y-m_wid/2, m_x+m_len/2, m_y+m_wid/2);(3)显示文字在OnDraw函数中添加代码:CString strInfo;strInfo.Format(_T(x=%d, y=%d, len=%d, wid=%d), m_x, m_y, m_len, m_wid);pDC-SetBkMode(TRANSPARENT);pDC-TextOut(m_x-m_len/2, m_y, strInfo);(4)鼠标交互控制形状位置右键单击视图类,在属性选项中激活消息映射列表,选择WM_LBUTTIONDOWN消息,并添加函数到视图类。MFC将自动生成如下代码:void CProj2View:OnLButtonDown(UINT nFlags, CPoint point)/ TODO: Add your message handler code here and/or call defaultCView:OnLButtonDown(nFlags, point);添加如下代码至OnLButtonDown函数:m_x = point.x;m_y = point.y;Invalidate(TRUE);(5)添加菜单项在资源视图中选择Menu下的IDR_MAINFRAME。添加新的菜单项Shape及子项Ellipse,Rectangle和Animate,并设置对应ID为ID_SHAPE_ELLIPSE,ID_SHAPE_RECTANGLE和ID_SHAPE_ANIMATE。添加消息映射至视图类:系统将自动生成下列代码:void CProj2View:OnShapeEllipse()/ TODO: Add your command handler code herevoid CProj2View:OnShapeRectangle()/ TODO: Add your command handler code herevoid CProj2View:OnShapeAnimate()/ TODO: Add your command handler code here在OnShapeEllipse函数中添加代码:m_shape = ELLIPSE;Invalidate(TRUE);在OnShapeRectangle函数中添加代码:m_shape = Rectangle;Invalidate(TRUE);(6)动画设置设置定时器bool m_bAnimationOn;m_bAnimationOn = false;在OnShapeAnimate中添加代码:m_bAnimationOn = !m_bAnimationOn;if(m_bAnimationOn)SetTimer(1,500,NULL);elseKillTimer(1);映射WM_TIMER消息,生成下列函数:void CProj2View:OnTimer(UINT_PTR nIDEvent)/ TODO: Add your message handler code here and/or call defaultCView:OnTimer(nIDEvent);在函数中修改形状位置:m_x = rand()%200+100;m_y = rand()%200+75;Invalidate(TRUE);(7)形状参数设置对话框在资源中选择Dialog后选择Insert Dialog。通过Toolbox添加静态文本和编辑框控件,其中编辑框控件对应ID分别为:ID_EDIT_X, ID_EDIT_Y, ID_EDIT_LEN, ID_EDIT_WID。双击对话框自动生成对话框类CSetShapeDlg。在对话框中关联编辑控件对应公有数据成员:int m_edtX;int m_edtY;int m_edtLen;int m_edtWid;映射按钮ok对应函数并添加代码:void CSetShapeDlg:OnBnClickedOk()/ TODO: Add your control notification handler code hereUpdateData(TRUE);CDialogEx:OnOK();在菜单栏Shape中加入菜单子项Set Shape并添加事件处理函数:void CProj2View:OnShapeSetting()/ TODO: Add your command handler code here在视图类头文件中包含:#include SetShapeDlg.h并添加代码如下:CSetShapeDlg dlg;dlg.m_edtX = m_x;dlg.m_edtY = m_y;dlg.m_edtLen = m_len;dlg.m_edtWid = m_wid;if(IDOK=dlg.DoModal()m_x = dlg.m_edtX;m_y = dlg.m_edtY;m_len = dlg.m_edtLen;m_wid =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论