VS2008通过类向导添加消息响应函数
- 格式:doc
- 大小:61.50 KB
- 文档页数:2
VS2008下计算器的MFC编程实现简单的计算器编程,完全在VS2008下实现,主要用于熟悉VS2008的功能。
谨以此分享给和我一样初学MFC的朋友们。
STEP1:页面设计1.新建工程首先打开Visual Studio2008,选择MFC应用程序,设定好路径和工程名(这里我设置工程名为为“Calculator”)。
这里要注意的是在创建向导步骤1的时候,我们选择“基本对话框”,其他选项默认即可。
之后我们可以点击完成便看到以下界面:此时我们把当前页面上原配的控件按Delete全部清除(如下图)2.添加控件接着我们按照MFC自带的控件选项进行我们本次计算器的控件添加。
点击右侧的工具栏按钮(以下是控件)我们在原先清空的界面中依次用上图控件画出一个基本的计算器页面(如下图)。
影响用户的心情。
3.修改空间ID和Caption上图各控件类型如下:Edit ControlButtonGroup Box:选择其中一个GroupBox,右键单击,选择[属性]。
在右边显示属性对话框。
每个控件“属性”都有属于它自己的ID,默认的Group Box的ID为IDC_STATIC,而且Cap当然我们为了“顾名思义”,对控件ID进行修改成我们容易辨认的(也可以不改),添加完控件并修改ID。
4个Group Box的ID分别修改为IDC_STATIC_FRAME ,IDC_STATIC_IN, IDC_STATIC_RESULT, IDC_STATIC_BUTTON 控件Edit Control和Button也按相同的办法处理。
ID设置完成可以在“Resourse.h”中查看。
完成修改ID后,就需给控件添加消息响应了。
在属性对话框的上方点击闪电“”图标,添加控件事件。
如对于按钮“”,点击“”点击下拉键头,添加控件事件,页面自动切换到代码的编辑页面,如“添加OnBnClickedButton5”MFC默认下了的响应信息都为On_开头。
Visual Studio一直是广大程序员所关注的重要的软件开发平台。
目前,大家可以从微软网站下载Visual Studio 2008 bate2 版本。
此次大会中,微软.NET咨询顾问周敏向大家介绍了微软Visual Studio 2008的基本情况和开发语言的增强等情况。
功能上的增强目前,微软的Visual Studio团队、SQL Server团队、Office团队都在使用Team Foundation Server进行企业级的应用开发。
Visual Studio 2008的设计目标主要有3点:提高开发效率、在开发过程生命周期中使团队成员能够更好的协作、能够开发基于微软最新技术的一些应用。
Visual Studio 2008支持.NET framework 3.5,并且对以前.NET framework版本进行支持。
同时,在VB3.5和C#3.5中加入了对LINQ的支持。
LINQ使用户能够使用VB和C#编写出类似于SQL语句这样的指令,使得开发语言和数据库语言彼此能够结合起来。
以前的SQL语言检索能力很强,但是并不擅长进行复杂的运算。
现在VB和C#能够获取数据,并且能够对数据进行复杂的运算。
这也是在Visual Studio 2008中引入LINQ技术的原因。
在软件过程管理中,Visual Studio 2008引入了CODE MATRIX,可以测量代码的复杂度,对代码的性能进行定量的分析,从而对代码的优劣有一个比较深入的了解。
此外,在Visual Studio 2008中引入了新的负载测试的模型、界面和报表。
更重要的是,还有一个连续集成的构建,例如,一个企业有一个开发主线,还有很多开发分支。
假定每个开发分支都是其中的一个功能点,当功能点开发完成以后,需要合并到开发主线,在对开发主线进行合并操作的时候,Visual Studio 2008能够自动进行团队构建,并且给出构建的结果。
而在Visual Studio 2005时,需要进行很多手工操作。
第7章使用消息框众所周知,消息框是一种使用频率非常高的人机交互窗口,例如在操作Windows操作系统或者访问网络的过程中就经常看到消息框。
本章首先介绍了消息框的使用情况,并结合实例和代码介绍了在Visual C# 2008中,使用MessageBox创建消息框的方法。
7.1 消息框简介消息框是常用的一种人机交互对话框,使用消息框作为人机交互对话框的情况一般有两种:第一种是仅用来给用户显示信息,这种情况下的消息框一般只具有一个按钮,如在某个网站上注册用户完毕后可能会弹出一个“新用户注册成功!”的消息框,如图7-1所示,该消息框中只有一个【确定】按钮,其作用仅仅是提醒用户注册已成功,用户得到该信息后单击【确定】按钮,关闭消息框即可。
图7-1 注册成功消息框第二种情况是用来询问用户,也是用的最多的一种情况,这时的消息框一般有如【是】、【否】、【确定】、【取消】等的多个按钮,并且系统根据用户的选择采取不同的处理方式,例如修改了Word文档后,在没有保存修改的情况下单击系统关闭按钮,则会弹出类似于图7-2所示的对话框。
图7-2 关闭Word文档弹出的消息框这时用户的选择不同,系统的处理方式也不同,如选择【是】按钮,则保存Word文档并关闭Word软件;若选择的是【否】按钮,则不会保存Word文档并关闭Word软件;若选择的是【取消】按钮,则不保存Word文档,也不关闭Word软件,而是返回到Word当前的工作状态。
7.2 MessageBox通过上面的介绍,已经清楚了消息框的作用是输出信息和询问用户,在Visual C# 2008中,可以使用MessageBox来创建消息框。
其语法格式为:MessageBox.Show(text[,caption][,buttons][,icon][,defaultbutton])说明:①Show()为MessageBox的方法,其作用是在屏幕上显示消息框。
②text字符串表示消息框输出的信息。
以下为vs2008的相关操作和代码:一、简单的逃跑按钮//注意下列方法,定义一个类为了捕获鼠标移动点的方便1,创建一个基于对话框的mfc应用程序选中对话框→属性→Front可以改变整个对话框字体2,创建CButton的派生类,与按钮相关联添加类(图1)3,给对话框添加2个相同按钮“你能抓住我吗?”让两个按钮轮流显示。
其中一个visible 设为false,使初始状态只显示一个按钮。
每个按钮都关联一个变量:添加控件变量(图2)mfc8_1Dlg.h头文件自动添加 #include"mybutton.h"CmyButton类添加消息WM_MOUSEMOVE4,给CmyButton类添加变量5,在OnInitDialog添加以下语句,交换2个button的地址m_btn1.m_pBtn = &m_btn2;m_btn2.m_pBtn = &m_btn1;6,CmyButton::OnMouseMove中添加交换显示的语句ShowWindow(SW_HIDE);//SW_HIDE:隐藏窗口并激活其他窗口。
m_pBtn->ShowWindow(SW_SHOW);//SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。
大功告成!当然可以SetWindowPos函数实现更客观二、属性表的编辑新建mfc应用程序mfc8_21.创建属性页右键属性ID: IDD_PROP1Caption:属性页1属性页1放置groupboxRadio button 单选框List box列表框属性页3添加组合框ComboBox要向下拉的长一些,使列表能向下展开Style:Dropdown 能向下展开、输入Simple列表和编辑框同时显示Droplist 只能展开选择,不能输入本程序设为Droplist2. 双击属性页1添加类类CPropertyPage的对象表示一张属性表的各页,或者说是被看作是标签对话框。
消息响应函数一、概述消息响应函数是指在程序运行时,当某个事件发生时,程序会调用相应的函数来响应这个事件。
在大多数编程语言中,消息响应函数通常是一个回调函数,也就是说它不是由程序主动调用的,而是由系统或其他程序在特定情况下调用的。
二、消息响应函数的使用场景消息响应函数在很多场景中都有广泛的应用。
比如,在图形界面编程中,当用户点击按钮或者输入文本时,程序需要相应地做出反应;在网络编程中,当服务器接收到客户端请求时,需要相应地处理这些请求;在游戏开发中,当玩家进行操作时,游戏需要相应地做出反应等等。
三、消息响应函数的实现方式不同的编程语言和框架对于消息响应函数的实现方式可能会有所不同。
下面以C++和Qt框架为例来介绍一下消息响应函数的实现方式。
1. C++中的消息响应函数在C++中实现消息响应函数通常需要用到回调函数和指针。
具体步骤如下:(1)定义回调函数类型typedef void (*CallbackFunc)(int param);其中CallbackFunc表示回调函数类型名字,在这里我们定义了一个参数为int类型返回值为void类型的回调函数。
(2)定义消息响应函数void OnMessageReceived(int param){// 处理消息}这里我们定义了一个名为OnMessageReceived的函数,它的参数为int类型,表示接收到的消息。
(3)将消息响应函数注册到回调函数中CallbackFunc callback = &OnMessageReceived;这里我们将OnMessageReceived函数的地址赋值给了callback指针,这样当有消息到来时就可以通过callback指针来调用OnMessageReceived函数。
2. Qt框架中的消息响应函数在Qt框架中实现消息响应函数通常需要用到信号和槽机制。
具体步骤如下:(1)定义信号signals:void MessageReceived(int param);这里我们定义了一个名为MessageReceived的信号,它有一个参数为int类型。
vs2008中的右键弹出菜单和添加虚函数在以前的VC6.0中,编译器已经给我们做好了一个有复制,剪切,粘贴三个选项的右键弹出菜单,我们直接添加即可,但是在vs2008中没有了,我们好像只有手动添加了。
以前的VC6.0中,我们可以直接在CLASS WIZARD中添加虚函数,例如添加一个CFRAME类中的ONCOMMAND函数等等,但是在VS中没有CLASS WIZARD,怎么办呢,其实我们也可以直接添加,只不过位置不一样而已,现在的位置是在属性里面,然后点击重写,就可以在里面找到我们所需要的ONCOMMAND函数了,添加即可。
在vs2008中,添加消息响应和类似添加虚函数的操作都变到属性窗口了。
添加右键菜单方法及代码:1,自己添加一个Menu资源,例如命名为IDR_MENU1,编辑之。
顶级菜单是不出现的我们可以随便设置不妨为abc。
然后添加两个弹出菜单项:显示(IDM_SHOW)和退出(IDM_EXIT).2,给CMenuView类中添加WM_RBUTTONDOWN消息的响应函数。
代码如下:void CMenuView::OnRButtonDown(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值CMenu menu;menu.LoadMenuA(IDR_MENU1);CMenu* pPopup = menu.GetSubMenu(0);ClientToScreen(&point); //客户坐标转换成屏幕坐标pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);CView::OnRButtonDown(nFlags, point);}对菜单项添加事件很Easy。
动态菜单添加主要用到如下的函数:BOOL AppendMenu(UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL);。
用VS2008 制作对话框向导用VS2008 制作对话框向导(完)本内容整理自rover12421《用VS2008 制作对话框向导(完)》/forum/thread-9243-1-1-uid54410.html 本人喜欢用VS,所以先说明,在这只教大家怎么用VS2008制作杨老师的那个对话框向导。
或许你还能做的比那个更好。
至于VC6的那个请自己查阅资料。
制作步骤:1.制作一个对话框工程2.创建一个空向导3.制作对话框向导4.怎么让别人使用你制作的向导制作前,先说下VS路径。
我是用的是默认路径:C:\Program Files\Microsoft Visual Studio 9.0\VC 。
如果不是这个路径的,请修改成对用的目录就行。
后面不再提示。
帖子因为中间有人回帖,和评分问题,所以操作步骤并不是一个一个的接着了,但也不是很乱。
希望对大家有帮助。
第二步,创建空向导。
文件--新建--Visual C++---自定义向导下载(81.96 KB)2010-2-8 11:03我命名为DialogBased Application 。
在弹出对话框点下一步。
下载(31.25 KB)2010-2-8 11:03这里,因为我们不需要交互操作,也不需要弹出什么提示,选择界面什么的,就不选择“用户界面”。
然后完成。
下载(24.35 KB)2010-2-8 11:03只有简单的几个文件。
制作向导最关键的是default.js文件和Templates.inf文件。
创建好以后,在“新建--项目--向导”里就能看到这个向导了下载(61.27 KB)2010-2-8 11:03现在这个向导什么事也不能。
下一步再教大家制作一个功能完善的向导。
这节很简单,就说一些相关知识,以减少下节的负担。
首先看下怎么向导向导说明。
就是上图中位于名称上方的“TODO:向导说明。
”这个需要在vsdir文件修改。
打开DialogBased Application.vsdir文件,只有简单的一行:DialogBased Application.vsz| |DialogBasedApplication|1|TODO: 向导说明。
visual C++ 2008简单使用教程2009-05-21 17:04创建新项目:在“文件”菜单上,指向“新建”,然后单击“项目”。
在“Visual C++”项目类型中,单击“Win32”,然后单击“Win32 控制台应用程序”。
输入项目名称。
默认情况下,包含项目的解决方案与新项目同名,当然,您也可以键入其他名称。
如果愿意,您可以为项目输入一个不同的位置。
单击“确定”创建新项目。
在“Win32 应用程序向导”中,选择“空项目”并单击“完成”。
如果“解决方案资源管理器”不可见,请单击“视图”菜单上的“解决方案资源管理器”。
向该项目添加新的源文件:在“解决方案资源管理器”中,右击“源文件”文件夹,指向“添加”并单击“新建项”。
单击“代码”节点中的“C++ 文件(.cpp)”,输入一个文件名,然后单击“添加”。
该 .cpp 文件即显示在“解决方案资源管理器”中的“源文件”文件夹中,并且在键入代码的位置,出现一个选项卡式窗口。
在 Visual Studio 中,在新创建的选项卡中单击并键入使用标准 C++ 库的有效 C++ 程序,或者复制并粘贴示例程序之一。
例如,您可以使用 set::find (STL Samples) 示例程序,该程序位于帮助中的“标准模板库示例”主题中。
如果要为此过程使用示例程序,请注意 using namespace std; 指令。
此指令将允许程序使用 cout 和 endl,而无需要求完全限定名(std::cout 和 std::endl)。
在“生成”菜单上,单击“生成解决方案”。
“输出”窗口显示有关编译过程的信息,如生成日志的位置,以及指示生成状态的消息。
在“调试”菜单上,单击“开始执行(不调试)”。
如果使用了示例程序,将显示一个命令窗口,其中显示是否在集合中找到了特定的整数。
VS2008和VS2010 OpenGL的MFC初始化(吐血整理)1.建立一个单文档工程XXX2.这时你会看见自动生成了很多的类,08和10版本的还是不一样,但是主要的类还是那么几个,我们主要关注的是XXXView类,首先得保证你的电脑包含了OpenGL工具包,没有的话自己下载个很方便。
查看方法安装路径下vc/include/GL看看有没有GL.h,glu.h,gluax.h,自己最好添加个glut.h.。
3.在stdafx.h头文件中,添加#include”GL/gl.h”, #include”GL/glu.h”,如果有glut.h的话就直接添加一句#include”GL/glut.h”就可以了。
4.在XXXView.h文件中加入所需的成员变量和函数:public:CClientDC *m_pDC;void InitOpengl();BOOL SetupPixelFormat(void);void DrawScene(void);5.在XXXView.cpp文件中,在CXXXView的构造函数中加入:m_pDC=NULL;6.在XXXView.cpp文件中,加入相应的成员函数(直接复制就行):void CXXXView::InitOpengl(){PIXELFORMATDESCRIPTOR pfd;int n;HGLRC hrc;m_pDC=new CClientDC(this);ASSERT(m_pDC != NULL);if(!bSetupPixelFormat())return;n=::GetPixelFormat(m_pDC->GetSafeHdc());::DescribePixelFormat(m_pDC->GetSafeHdc(), n,sizeof(pfd),&pfd);hrc=wglCreateContext(m_pDC->GetSafeHdc());wglMakeCurrent(m_pDC->GetSafeHdc(),hrc);glClearDepth(1.0f);glEnable(GL_DEPTH_TEST);}BOOL CXXXView::SetupPixelFormat(){static PIXELFORMA TDESCRIPTOR pfd ={sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW |PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,PFD_TYPE_RGBA,24,0, 0, 0, 0, 0, 0,0,0,0,0, 0, 0, 0,32,0,0,PFD_MAIN_PLANE,0,0, 0, 0};int pixelformat;if((pixelformat = ChoosePixelFormat(m_pDC->GetSafeHdc(), &pfd)) == 0) {MessageBox("ChoosePixelFormat failed");return FALSE;}if(SetPixelFormat(m_pDC->GetSafeHdc(), pixelformat, &pfd) == FALSE) {MessageBox("SetPixelFormat failed");return FALSE;}return TRUE;}void CXXXView::DrawScene(void){//设置清屏颜色为黑色glClearColor(0.0f,0.0f,0.0f,0.0f);//清除颜色缓冲区和深度缓冲区glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//矩阵堆栈函数,和glPopMatrix()相对应添加你想要话的图形,如:glRectf(-0.5,-0.5,0.5,0.5);//画一个矩形;SwapBuffers(wglGetCurrentDC());//不能省略}7.在XXXView.cpp文件中,在PreCreateWindow函数中加入:cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN;//比较重要8.在XXXView.cpp文件中,在OnDraw函数中加入:DrawScene();9.在CXXXView中,建立如下消息的映射函数:WM_CREATE, WM_DESTROY, WM_SIZE, WM_ERASEBKGND,并加入划线的代码,如下所示:int CXXXView::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CView::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code hereInitOpengl();return 0;}void CXXXView::OnDestroy(){CView::OnDestroy();// TODO: Add your message handler code hereHGLRC hrc;hrc = ::wglGetCurrentContext();::wglMakeCurrent(NULL,NULL);if(hrc)::wglDeleteContext(hrc);if(m_pDC)delete m_pDC;}BOOL CXXXView::OnEraseBkgnd(CDC* pDC){return TRUE;}void CXXXView::OnSize(UINT nType, int cx, int cy){CView::OnSize(nType, cx, cy);// TODO: Add your message handler code hereint w=cx;int h=cy;GLfloat nRange=1.0f;//避免除数为0if(h==0)h=1;//设置视口与窗口匹配glViewport(0,0,w,h);//重新设置坐标系统glMatrixMode(GL_PROJECTION);glLoadIdentity();//建立正交变换下的剪切体if(w<h)glOrtho(-nRange,nRange,-nRange*h/w,nRange*h/w,-nRange,nRange);elseglOrtho(-nRange*w/h,nRange*w/h,-nRange,nRange,-nRange,nRange);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}需要注意的是08中没有类向导,需要右键你的类添加消息映射,最后祝大家学习愉快。
Vs2008下如何建立一个MFC的应用程序。
1、依次点击文件,新建,项目,如下图所示图一2、在弹出的图二中,选中“MFC”,然后选择“MFC应用程序”,在相应框中输入项目名称。
按确定按钮,出现图三。
注意:如果接受“创建解决方案的目录”,则会在工程名目录下又产生一个以工程名为名的子目录,在该子目录下有该工程所有的源文件。
图二图三3、图三是项目wingreet的缺省设置。
按《下一步》按钮,就进入图四的《MFC 应用程序向导的应用程序类型》,按照图四中的选择图四 MFC 应用程序向导的应用程序类型使用Unicode 库指定是使用Unicode 版MFC 库还是使用非Unicode 版MFC 库。
视觉样式和颜色确定应用程序的视觉样式。
下列选项可用:Windows 本机/默认设置Office 2003Visual Studio 2005Office 2007 (蓝色主题)Office 2007 (黑色主题)Office 2007 (银色主题)Office 2007 (水绿色主题)启用视觉样式切换指定在运行时,用户通常是否可以通过从菜单或工作区中选择适当的视觉样式来更改应用程序的视觉样式。
4、按《下一步》按钮,弹出图五。
图五5、接收缺省设置,按《下一步》按钮,弹出图六。
图六6、按《下一步》按钮,弹出图七。
图七7、按《下一步》按钮,弹出图八。
图八8、在图八中按图中所示选择,按《下一步》按钮,弹出图九。
9、在图九中按图中所示进行选择,按《下一步》按钮,弹出图十。
图十10、按《完成》按钮,出现主界面。
图十一按F5 键,编译连接,如果没错误,会在目录下的debug子目录下生成可执行文件wingreet.exe,然后开始运行。
出来的窗口如下:如何打开工程或解决方案在win7下先打开vs2008再打开工程,后缀是vcproj技巧:(1)工具箱不显示”自动隐藏”,即“自动隐藏”变灰的解决办法出现工具箱窗口后,双击该工具箱窗口(2)删除类中的函数vc6 中可以通过选中该函数,右键单击出现快捷菜单,在菜单中有Delete。