mfc界面设计教程
- 格式:docx
- 大小:37.12 KB
- 文档页数:2
MFC画图程序步骤MFC(Microsoft Foundation Class)是一种用于开发Windows应用程序的C++类库。
在MFC中,我们可以使用GDI(Graphics Device Interface)来创建和操作图形。
下面是使用MFC创建一个简单的画图程序的步骤。
步骤1:创建一个新的MFC项目首先,打开Visual Studio并选择创建一个新的项目。
在项目类型中,选择Visual C++ -> MFC,然后选择MFC应用程序类型。
输入项目名称并选择保存的位置。
在应用程序类型中,选择“单文档”或“多文档”视图,具体根据你的需求而定。
点击“确定”按钮创建项目。
步骤2:设计用户界面在MFC应用程序中,用户界面是通过对话框资源来设计的。
在资源视图中,双击IDD_DIALOG(或其他对话框资源)以打开对话框编辑器。
在对话框编辑器中,你可以添加按钮、文本框、菜单等控件来设计你的用户界面。
在画图程序中,你可以添加一个画布控件来显示绘制的图形。
步骤3:添加绘图功能在MFC中,你可以使用GDI来进行绘图操作。
打开你的对话框类的头文件(例如,CMyDialog.h),添加以下头文件引用:#include <afxwin.h>#include <afxext.h>#include <afxdisp.h>在对话框类的源文件(例如,CMyDialog.cpp)中,添加以下代码来处理绘图操作:```void CMyDialog::OnPaint(){CPaintDC dc(this); // 用于绘制的设备上下文// 在这里进行绘图操作dc.Rectangle(100, 100, 200, 200); // 绘制一个矩形dc.Ellipse(300, 100, 400, 200); // 绘制一个椭圆}```步骤4:处理绘图事件在对话框类的消息映射中添加对绘图事件的处理。
图形画板2008设计文档目录1. 图形后台框架1.1. 基本图形类框架如下:2. 界面框架2.1. 快捷菜单2.2. 主菜单2.3. 工具栏3. 如何创建OFFICE风格的MFC工程4. 如何在工具栏上面添加按钮4.1. 添加菜单主项4.2. 为菜单项添加事件4.3. 添加Ribbon字符4.4. 将按钮添加到工具栏4.4.1. 创建主类别(CMFCRibbonCategory)4.4.2. 创建面板(CMFCRibbonPanel)4.4.3. 添加按钮(CMFCRibbonButton)到面板∙∙1. 图形后台框架1.1. 基本图形类框架如下:2. 界面框架主用应用了Visual Studio 2008 SP1添加的新增强包,可以方面的创建出像OFFCIE2007的Ribbon界面。
Ribbon工具栏是在MainFrm.CPP中的void CMainFrame::InitializeRibbon()生成的整个工具栏CMFCRibbonBar分为2.1. 快捷菜单2.2. 主菜单主菜单按钮CMFCRibbonApplicationButton主菜单CMFCRibbonMainPanel2.3. 工具栏主要分成3层结构:第一层:分类(容器)CMFCRibbonCategory,如图中红色部分所示。
第二层:面板(容器)CMFCRibbonPanel ,如图中红色部分所示。
第三层:元素CMFCRibbonBaseElem,如图中红色部分所示。
先有一个整体的概念~3. 如何创建OFFICE风格的MFC工程以下是创建Visual C++ 2008 SP1创建Office风格的MFC的步骤:首先,新建项目,选择Visual C++ 中的MFC应用程序,输入名称,点击确定接着选择Office的项目类型,MFC的使用选择“在静态库中使用MFC”(这样可以保证在任何Windows系统中都能正确运行,如果选择共享DLL,则只能在有MFC7.0库的机子上正确运行,所以推荐选“在静态库中使用MFC”)接下来的几个步骤都直接按默认即可这里我们先将“导航窗格”的勾去掉(由于本程序没有用到它,所以再此不详细介绍)这里将视图类的基类选为CScrollView,点击完成然后运行一下,基本的雏形就出来啦,简单吧~4. 如何在工具栏上面添加按钮4.1. 添加菜单主项接着继续添加菜单子项,并在属性栏中设置相应的属性,注意Prompt要按照“解释\n标题”这种格式,例如:Prompt绘制一个圆\n画圆做完要记得保存哦4.2. 为菜单项添加事件右键点击需要添加事件的选项,选择添加“事件处理程序”点击“添加编辑”,然后就到视图类的结尾找到这个事件的函数,开始编写事件,可以注意到“函数处理程序名称”是根据“命令名”自动生成的,虽然自己也可以修改,不过还是按默认的比较好,所以也说明上面提到的加入ID时候要根据这样的命名规则来命名。
画直线:ye在cview 中加入private:CPoint m_point; //自己加的在onlbutoondown 加入m_point=point; //自己加的在onlbuttonup 加入HDC hdc; //自己加的hdc=::GetDC(m_hWnd);MoveToEx(hdc,m_point.x,m_point.y,NULL);LineTo(hdc,point.x,point.y);::ReleaseDC(m_hWnd,hdc); //自己加的完成功能圆,直线,矩形的画法ye1首先在菜单添加各种ID然后定义一个变量m_way赋予不同的值然后增加鼠标按下和弹起的函数处理根据m_way的值按下:m_point=point;保存点的相关信息弹起:CClientDC dc(this);CPen pen(m_linestyle1,m_linewidth,RGB(255,0,0));dc.SelectObject(&pen);CBrush *pbrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));dc.SelectObject(pbrush);switch(m_way){case 1:dc.SetPixel(point,RGB(255,0,0));break;case 2:dc.MoveTo(m_point);dc.LineTo(point);break;case 3:dc.Rectangle(CRect(m_point,point));break;case 4:dc.Ellipse(CRect(m_point,point));break;}再定义一个类:实现设置不同的线宽和线形,在弹出框进行编写加载位图:ye2首先构造一幅位图(不是位图的可以转化为位图在加载),然后增加一个消息处理BOOL CY e2View::OnEraseBkgnd(CDC* pDC)CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP2);CDC dcCompatible;dcCompatible.CreateCompatibleDC(pDC);dcCompatible.SelectObject(&bitmap);CRect rect;GetClientRect(&rect);pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);return TRUE;//return CV iew::OnEraseBkgnd(pDC);第二种情况BOOL CY e2View::OnEraseBkgnd(CDC* pDC){// TODO: Add your message handler code here and/or call defaultCBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP2);BITMAP bmp;bitmap.GetBitmap(&bmp);CDC dcCompatible;dcCompatible.CreateCompatibleDC(pDC);dcCompatible.SelectObject(&bitmap);CRect rect;GetClientRect(&rect);//pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp. bmHeight,SRCCOPY);return TRUE;//return CV iew::OnEraseBkgnd(pDC);}图片根据大小而放大缩小渐变:ye3先定义一个变量int width;然后在oncreat函数里输入如下函数调用SetTimer(1,100,NULL);最后开辟一个time消息做如下处理:void CYe3View::OnTimer(UINT nIDEvent){// TODO: Add your message handler code here and/or call defaultwidth+=5;CClientDC dc(this);TEXTMETRIC tm;dc.GetTextMetrics(&tm);CRect rect;rect.left=0;rect.top=200;rect.right=width;rect.bottom=rect.top+tm.tmHeight;dc.SetTextColor(RGB(255,0,0));CString str;str.LoadString(ID_XIANSHI);dc.DrawText(str,rect,DT_LEFT);rect.top=150;rect.bottom=rect.top+tm.tmHeight;dc.DrawText(str,rect,DT_LEFT);CSize sz=dc.GetTextExtent(str);if(width>sz.cx){width=0;dc.SetTextColor(RGB(0,255,0));dc.TextOut(0,200,str);//dc.DrawText(str,rect,DT_LEFT);}CView::OnTimer(nIDEvent);}动态的画线先实现画线的代码然后在菜单中添加一个按钮实现触发SetTime()函数定时的发送TIME消息增加消息处理是捕获time消息,改变线长不断画线。
MFC如何创建多按钮功能的界面最终的效果如下:点击按钮“方块”,弹出方块设置对话框,输入值然后点OK时,绘画方块图像;点击按钮“三角”,同样弹出三角设置对话框然后点OK时,绘画三角图像。
下面介绍制作步骤:一、创建一图形显示界面二、创建两图形显示界面三、创建三图形显示界面四、创建四图形显示界面1.打开visual C++,点“文件”,“新建”,“MFC AppWizard(exe)”,“工程名称”,“位置”,“确定”“基本对话框”“完成”2.得到如图:按照我的习惯,“确定”“取消”和“TODO”全部删掉,如图:3. 创建三个按钮和一个静态文本,分别命名“方块”“三角”“OK”。
静态文本清空,其属性里“扩展样式”“静态边缘”打勾。
他们的ID分别为:IDC_fang,IDC_san,IDC_OK,IDC_DRAW。
如图:4. 双击“方块”按钮,点“确定”,然后输入代码:void CTest425Dlg::Onfang(){ // TODO: Add your control notification handler code hereextern int flag;flag=1;}其中变量flag的作用是用来标志,用来判断接下来点“OK”的时候,执行哪种操作。
因为是全局变量,所以加上了extern同样,双击“三角”按钮,输入代码:void CTest425Dlg::Onsan(){ // TODO: Add your control notification handler code hereextern int flag;flag=2;}当然,如果我们需要更多功能时,可以绘制更多的按钮,然后给他们flag=3,flag=4等等的赋值。
5. 双击“OK”按钮,输入代码前半段:void CTest425Dlg::OnOk(){ // TODO: Add your control notification handler code hereextern int flag;CWnd *pWnd=GetDlgItem(IDC_DRAW);CDC *pDC=pWnd->GetDC();CBrush WhiteBrush;WhiteBrush.CreateSolidBrush(RGB(255,255,255));CRect rect;pWnd->Invalidate();pWnd->UpdateWindow();pWnd->GetClientRect(&rect);}这些代码的作用是初始画图功能。
实验一 MFC程序的界面设计一、实验目的和要求1、熟悉Visual C++编程环境。
2、掌握常用客户区鼠标消息的用法。
二、实验内容编程实现下图1.1所示界面,要求:在客户区点击鼠标左键、右键时弹出消息框显示当前鼠标坐标。
在客户区按下字符键时弹出消息框显示当前按下的字符。
利用应用程序向导建立基于单文档/视图结构的应用程序,查看框架程序中各类的结构。
图1.1 实验二程序运行界面三、实验步骤1. 新建工程新建一个工程,工程名称为Mouse,工程类型为MFC AppWizard(exe),应用程序类型为单文档/视图结构,最终会得到一个框架程序。
2. 定义鼠标消息处理函数选择“查看”菜单下的“建立类向导”菜单项,调出如图1.2所示的类向导界面。
图1.2 ClassWizard界面由于对客户区鼠标消息的处理封装在视图类中,所以在图1.2所示的界面中,Class name选择CMouseView,Object IDs选择CMouseView,Messages选择WM_LBUTTONDOWN,然后单击Add Function按钮,添加消息WM_LBUTTONDOWN的处理函数,最后单击Edit Code按钮,进入该函数的代码编辑区,,如图1.3所示。
图1.3 鼠标消息处理函数代码编辑界面在如图1.3所示的鼠标消息处理函数中添加下列代码,捕捉鼠标当前坐标。
void CMouseView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultMessageBox("you have pressed the left button",”Mouse”,MB_YESNOCANCEL|MB_ICONWARNING);CView::OnLButtonDown(nFlags, point);}在图1.2所示的界面中,用同样的方法添加消息WM_RBUTTONDOWN的处理函数,在该函数中添加下列代码。
MFC框架窗口界面设计MFC(Microsoft Foundation Classes)是一个用于开发Microsoft Windows应用程序的C++类库。
MFC提供了一整套用于创建Windows应用程序的类和函数,其中包括窗口界面设计。
本文将探讨MFC框架窗口界面设计的一些关键方面。
首先,MFC框架中的窗口界面设计基于窗口类。
每个窗口类都有一个相应的类对象,用于管理窗口的创建、显示、隐藏以及事件处理等。
设计MFC窗口界面时,首先需要确定窗口的布局和功能。
通常,应该继承自CWnd类,CWnd类是MFC框架中窗口类的基类。
其次,MFC框架提供了丰富的控件类,可以用于设计窗口界面的各种元素,例如按钮、文本框、列表框、菜单、工具栏等等。
开发者可以根据实际需求选择并配置适当的控件类,并根据需要调整控件的位置和大小,以实现所需的窗口界面。
MFC框架还提供了对话框类CDialog,用于设计对话框窗口。
对话框是一种特殊的窗口,通常用于显示和接收用户输入的信息。
开发者可以使用对话框模板设计器来设计对话框的布局,并通过类成员变量和控件关联实现对对话框中各个控件的操作。
在MFC框架中,窗口界面设计通常采用消息映射的方式。
通过在窗口类中添加消息映射函数,可以实现对窗口消息的处理。
开发者可以根据需要添加相应的消息映射函数,处理窗口消息并执行相应的操作。
例如,当用户点击按钮时,可以响应WM_COMMAND消息,并执行与该按钮相关的操作。
此外,MFC框架还提供了一些辅助类和函数,用于简化窗口界面设计的过程。
例如,CDialogEx类是对话框类的一个扩展类,提供了一些额外的功能,如主题支持和阻止空格键输入等。
另外,MFC框架还提供了一些用于绘制窗口界面的绘图类和函数,例如CDC类和绘图函数。
总的来说,MFC框架提供了丰富而强大的工具和类库,用于设计和开发Windows应用程序的窗口界面。
通过合理选择和配置窗口类、控件类和对话框类,并使用消息映射和辅助类,开发者可以很容易地实现自定义的、具有丰富功能的窗口界面。
MFC图形界面编程入门教程MFC(Microsoft Founda tionClasse s)是微软提供的用于简化编程的一个类库,其使用面向对象的思想将W indo ws的图形界面编程接口封装到若干个类中,并且提供了一个可视化的编程环境,方便的程序员的开发。
使用MFC可以方便地创建基于对话框或文档视图的程序,在其上添加各种控件(按钮、编辑框等等),通过消息映射机制使控件操作和某个函数对应起来。
第一章如何添加按钮和编辑框工程文件见:演示工程.rar新建工程到现在,我们的工作都是在资源编辑器里完成的,主要针对的是界面方面。
下面我们将为按钮添加一些处理代码,比如弹出一个对话框,显示我们在编辑框里输入的文字。
点击OK,完成添加变量操作。
下面添加按钮的响应函数右击按钮,选择建立类向导,弹出的对话框要求我们为按钮响应函数取个名字。
我们将函数名设为OnS how,点击OK后,可以看到Cl assWi zard对话框下半部分多了一行信息,双击它或者点击右边的E di t Code按钮就在里面添加如下代码:Update Data(TRUE);AfxMes sageB ox(m_myst ring);这两个函数都是由MFC提供的。
调用Upda teDat a(TRUE)将我们在编辑框输入的文本更新到其对应的变量中(即m_mystring),AfxMes sageB ox(m_myst ring)可以将变量的内容显示到消息框中。
现在编译运行程序,在编辑框中如入一些内容,点击显示按钮,效果如下:第二章点名程序中的控件工程文件见:点名程序工程.rar编辑框学号和姓名的显示使用了只读的编辑框,和普通编辑框的添加方式相同,只读属性可以在其属性中设置(右下):与前面的例子不同的还有其是用于显示文本而输入文本,下拉列表我们使用了下拉列表来选择班级。
MFC框架窗口界面设计MFC(Microsoft Foundation Classes)是一种用于开发Windows应用程序的C++框架。
它提供了一套面向对象的API,使开发人员能够快速创建Windows GUI应用程序。
在MFC框架中,窗口界面设计是非常重要的一部分,良好的界面设计可以提升用户体验,使应用程序更加易于使用和理解。
在进行MFC窗口界面设计时,需要考虑以下几个方面:1.窗口布局:首先要考虑的是窗口的布局。
通过合理的布局可以使窗口界面看起来整洁、统一,并且便于用户操作。
可以使用容器控件(如面板、分组框)来划分窗口区域,并使用控件对界面进行进一步的细分和排列。
3.控件排列:选择合适的控件后,需要对它们进行合理的排列。
可以使用布局管理器(如网格布局、堆栈布局)来自动调整控件的位置和大小,以适应不同窗口大小的变化。
同时,应该考虑控件之间的间距和对齐方式,使界面看起来更加整齐美观。
4.界面元素:除了基本的控件外,还可以添加一些界面元素来增强用户体验。
比如图标、图片、背景色等。
这些元素可以帮助用户更好地理解应用程序的功能和状态,并增加界面的可视化效果。
5.字体和颜色:选择合适的字体和颜色可以改善界面的可读性和视觉吸引力。
应该选择易于阅读的字体,并确保文字和背景颜色的对比度足够高,使用户能够清晰地看到和理解界面上的信息。
6.响应式设计:现代应用程序通常需要适应不同分辨率和窗口大小的设备,因此,响应式设计变得越来越重要。
在MFC框架中,可以使用响应式布局和弹性控件来实现窗口界面的自适应性。
这样,无论应用程序在大屏幕、小屏幕还是移动设备上运行,都能保持良好的用户体验。
7.错误处理和反馈:在设计窗口界面时,要考虑用户输入错误或操作失误的情况,并提供相应的错误处理和反馈机制。
比如,在输入框中输入无效数据时,可以显示错误提示信息或闪烁该输入框,以引起用户的注意。
总之,MFC框架窗口界面设计需要考虑布局、控件选择和排列、界面元素、字体和颜色、响应式设计,以及错误处理和反馈等方面。
基于对话框的界面设计Wang Wenjiang,2006,05项目的建立打开MicrosoftVisualStudio2005按照“文件|新建|项目|智能设备|MFC智能设备应用程序|项目名称(这里以DlgTest为例)|基于对话框”顺序新建项目.应用程序的入口和界面的初始化选中类视图,会发现自动生成了两个新类CDlgTestApp和CDlgTestDlg.在类CDlgTestApp中成员函数InitInstance就是对话框应用程序的入口(注:在win32应用程序中是WinMain函数).在InitInstance函数中将对话框类事例化(CDlgTestDlg dlg),并将CDlgTestDlg型变量dlg的地址指针赋给全局的窗口指针pMainWnd,即pMainWnd=&dlg.接下来执行CDlgTestDlg的基类CDialog的成员函数DoModal,进而执行CDlgTestDlg的成员函数OnInitDialog实现对话框界面的初始化工作(注:在这里可以加入自己的一些界面显示前的初始化代码).界面的设计展开资源视图中Dialog下的IDD_DLGTEST_DIALOG就会出现对话框面板,然后就可以用右边的工具箱中的控件非常方便的进行界面的删除和增加等功能设计了.下面我用一个简单的实现加法的例子讲述如何在界面控件间传递数据.1.界面设计如下,控件ID从左向右依次为IDC_EDIT_X,IDC_STATIC_ADD,IDC_EDIT_Y,IDC_BTN_EQ,IDC_EDIT_Z.注意控件ID命名要养成一个好的习惯,以免界面复杂时,逻辑不清,给以后修改带来麻烦!2.分别为IDC_EDIT_X,IDC_EDIT_Y,IDC_EDIT_Z添加double型的全局public型变量,分别为m_x,m_y和m_z(注:一般成员变量前加m_,以便和其他变量相区分).3. 为IDC_BTN_EQ添加事件处理程序,如图选中添加编辑即可.变量初始化CDlgTestDlg::CDlgTestDlg(CWnd* pParent /*=NULL*/): CDialog(CDlgTestDlg::IDD, pParent), m_x(0), m_y(0), m_z(0){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}以上是系统自动生成的代码,也可以按以下方式初始化CDlgTestDlg::CDlgTestDlg(CWnd* pParent /*=NULL*/): CDialog(CDlgTestDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);m_x=0;m_y=0;m_z=0;}至于怎样写那就看你的习惯了,不过我用第二种方法比较多.数据传递和添加代码void CDlgTestDlg::OnBnClickedBtnEq(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);//数据从界面传入变量.m_z=m_x+m_y;UpdateData(FALSE);//用变量新值刷新界面.}如何定义和使用全局函数为了便于管理,最好把同类的函数放到同一模块,例如:添加头文件MyMath.h// MyMath.h//#pragma onceextern double Add(double a,double b);extern double Sub(double a, double b);添加源文件MyMath.cpp// Math.cpp//double Add(double a,double b){return a+b;}double Sub(double a, double b){return a-b;}如果要使用以上函数,只要包含头文件MyMath.h即可,这和以往纯C代码的用法是一样的.。
MFC建立一个简单的图形界面的过程的截图
1、安装并打开Visual C++
2、文件/新建后出现
3、选择,并在工程名称后写上名称,即工程名
4、点击下一步出现
5、选择基本对话框
6、点击下一步出现
7、按默认点击下一步只到完成点击即可,如下所示
点击确定即可出现如图所示:
可在右边的控件中选择相应的控件到左边的界面中。
到此完成简单的界面建立
添加文本:
在控件中点击静态文本,在左侧用鼠标拖动形成如图所示的文本如图所示:
选择静态文本,按下enter键,出现如图所示:
点击常规出现:
其中标题原来是Static,可以改成你定义的数值,这里改为用户名在控件中选择编辑框,可输入内容,如图:
同上添加密码:如下图所示:
把密码的编辑框改为密码不可见形式
选择密码的编辑框,按下enter键,出现如图所示:
点击样式,选择密码,如图所示:
制作过程完结,结果如下图所示:
按下F5运行,出现运行结果如下:。
mfc界面设计教程
MFC(Microsoft Foundation Classes)是一套用于开发Windows平台上图形用户界面(GUI)的C++类库。
MFC界
面设计是开发Windows应用程序中不可或缺的一部分。
本文
将向您介绍一些MFC界面设计的基本原则和技巧,帮助您创
建出具有吸引力和用户友好的应用程序界面。
首先,设计一个清晰的用户界面是至关重要的。
您需要确保您的应用程序界面布局简洁明了,易于导航。
使用适当的菜单和工具栏来组织您的功能,使用户能够方便地找到和使用这些功能。
避免界面过于拥挤或混乱,这会给用户带来困惑和不满。
其次,选择合适的颜色和字体可以提升您应用程序界面的外观。
一般来说,最好选择与您应用程序主题相关的颜色,并确保文字清晰可读。
避免使用太多花哨的字体或颜色,这可能会让用户感到眼花缭乱。
另外,为您的界面添加一些可视化元素也是一个不错的选择。
例如,您可以使用图标来表示不同的功能或操作,这有助于用户更快地识别和理解这些内容。
您还可以考虑使用一些动画效果或过渡效果来吸引用户的注意力,但要确保这些效果不会分散用户的注意力或降低应用程序的性能。
此外,考虑到用户的反馈是很重要的。
您可以通过使用弹出窗口、对话框或状态栏来向用户显示相关的提示信息,告知他们当前的操作状态或发生的错误。
提供适当的错误处理机制也非常重要,以便用户能够轻松地解决问题或进行必要的更正。
最后,测试是一个不可忽视的环节。
在设计和开发过程中,您应该经常测试您的界面,以确保它在不同屏幕分辨率和操作系统上都能够正常显示和工作。
同时,您还应该进行用户体验测试,以了解用户对您设计的界面的感受和反馈,并根据需要进行相应的修改和改进。
总结起来,MFC界面设计需要注意清晰布局、合适的颜色和字体、可视化元素、合理的反馈机制以及充分的测试。
通过遵循这些原则和技巧,您可以创建出用户友好和吸引人的应用程序界面。
希望本文对您的MFC界面设计有所帮助!。