您好,欢迎访问三七文档
1基于MFC的VC++编程入门1.创建程序框架2.编译程序3.设计程序界面4.添加菜单项的消息相应函数5.菜单项Ckeck状态(√)的控制6.创建对话框7.将对话框与MenuItem(或其他事件)联系起来8.通过对话框进行数据的输入和输出9.设定对话框TabOrder及初始光标焦点位置10.鼠标事件的响应11.WINDOWS定时器TIMER的使用12.在窗口内显示文本信息13.在窗口中画图14.使用MFC消息框15.在窗口中画曲线2基于MFC的VC++编程入门1.创建程序框架:运行MicrosoftVisualC++,进入VC++编译器主界面。打开“File”菜单项,点击“New”,出现一个对话框,点击对话框上方“Projects”,在该对话框下面的栏目中点击“MFCAppWizard(exe)”,并在对话框右上方“ProjectName”中填上项目名称,如“MyfirstCpp”,然后按“OK”Button,出现“MFCAppWizard–Step1”对话框,选“SingleDocument”然后按“Finish”Button,直至结束这一步。查看VC++编译器界面左面的文件(项目)管理窗口,点击下方的“FileView”,项目管理窗口内出现“MyFirstCppfiles”,点击该条目,下面出现“SourceFiles”、“HeaderFiles”及“ResourceFiles”等条目,分别为该Project(项目)的源代码、头文件及资源文件。点击“SourceFiles”或“HeaderFiles”,发现其中应经存在了一些文件,这些是机器自动生成的文件和代码。2.编译程序:点击“Build”菜单项,其中出现一项“BuildMyfirstCpp.exe”,点击该项,启动VCC++编译器,待编译结束后,生成一个名为“MyfirstCpp.exe”的可执行文件。运行该程序(可以点击“Build”菜单的“ExecuteMyfirstCpp.exe”或直接点击工具栏中“!”按钮),出现该程序的窗口,该窗口中已经有了几个菜单项:“文件”、“编辑”、“查看”及“帮助等”,这些都是编译器自动生成的。3.设计程序界面:点击左侧项目管理窗口下方的“ResourceView”,项目管理窗口内出现“Accelerator”、“Dialog”、“Menu”、“ToolBar”等条目,要在编译器自动生成的窗口中添加(或修改)菜单项,点击“menu”下的“IDR-MAINFRAME”,编译器右侧窗口出现该程序的界面。增加新的菜单项,可以点击最后一个菜单项后面的虚线框,弹出一个编辑新的菜单项的对话框,在“Caption”编辑框内填上菜单的名字。若菜单为弹出(下拉)式的,选中“Pop-up”项,否则不选。非弹出菜单,要填写一个ID名。而弹出式菜单,本身不需要ID名,填好菜单名后,点击该新加的菜单,下面出现下拉框,点击该框内的虚线框可以增加该菜单项的下拉框的条目,在“Caption”栏内填写每个条目的名称(如“Item1”,“Item2”)和ID,ID名的格式为“ID_XXXX_YYYY”,其中“XXXX”为菜单项名,“YYYY”为下拉项目名,如“ID_TEST_ITEM1”,再次点击虚线框可以继续增加该菜单项的下拉框的条目,并为其填写新的ID,如“ID_TEST_ITEM2”。菜单设计结束后,点击“BuildMyfirstCpp.exe”重新编译。编译结束后,再运行程序(点击工具栏中“!”按钮),界面中出现了刚添加的菜单项,但点击该菜单项,下拉项目均为灰色,处于无效状态(i.e.,notactive)。4.添加菜单项的消息相应函数:在VC++主界面的“View”菜单项中点击“Classwizard”,进入“MFCClasswizard”对话框。在“ObjectIDs”栏中中出现刚添加的菜单项的ID:“ID_TEST_ITEM1”及“ID_TEST_ITEM2”。选中“ID_TEST_ITEM1”,并在对话框右上“Classname”栏目选中“CMyfirstCppView”,然后点击“Messages”栏目中的“COMMAND”,此时对话框右侧的“AddFunction”Button变亮,点击“COMMAND”项或“AddFunction”按钮,弹出一个对话框“AddMemberFunction”,添加相应得成员函数名(可以使用默认名,也可以自己添加),如添加函数名“OnTest_Item1”,然后按“OK”Button,此时“MFCClasswizard”最3下面的“Memberfunctions”栏目内出现一行新内容“OnTest_Item1ON_ID_OnTest_Item1:COMMAND”。最后按“OK”Button结束,退回到VC++主界面窗口。查看“MyfirstCppView.cpp”发现在最后面增加了下面一段程序:voidCMyfirstCppView::On_Test_Item1(){//TODO:Addyourcommandhandlercodehere}这段程序即为菜单选项“Test”中的“Item1”项的消息响应函数,该函数的原型也自动出现在相应的头文件“MyfirstCppView.h”中。当然,这个函数目前只是个框架而已,尚不能做任何事情,具体代码将根据程序的需要由编程者自行添加。同时在“MyfirstCppView.cpp”文件的开头部分的消息映射表(MESSAGE_MAP)当中也出现了以下新内容(灰色字):BEGIN_MESSAGE_MAP(CMyfirstCppView,CView)//{{AFX_MSG_MAP(CMyfirstCppView)ON_COMMAND(ID_TEST_ITEM1,OnTest_Item1)//}}AFX_MSG_MAP//Standardprintingcommands………………………..END_MESSAGE_MAP()同样方法添加菜单项“Item2”的消息响应函数,然后重新编译程序,完成菜单消息响应函数的添加。再次运行程序,点击菜单项“Test”,见其下拉项目“Item1”和“Item2”变为黑色(有效),可以点击,但点击后并无任何反应。5.菜单项Ckeck状态(√)的控制:下拉菜单的每个条目前面可以用“√”标出是否该项已被选中。添加Check标志的具体步骤为:(1)先在相应的HeaderFile中添加一个字串变量,如在“MyfirstCppView.h”文件中加入下面一行:CStringItemStatus;(2)用Classwizard工具创建“OnCreate”函数:在Classwizard对话框内将“Classname”栏选为“CMyfirstCppView”,“Message”栏选“WM_CREATE”,此时对话框右侧的“AddFunction”Button变亮,点击“AddFunction”按钮,然后按“OK”Button。在MyfirstCppView.Cpp文件中出现下面函数:intCMyfirstCppView::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;//TODO:Addyourspecializedcreationcodeherereturn0;}双冒号(::)前面是类名,后面是函数明,表示函数OnCreate()是属于CMyfirstCppView类的成员函数。在该函数里添加下面一行,对变量ItemStatus进4行初始化:ItemStatus=OFF;(3)在On_Test_Item1()函数中添加下面代码:if(ItemStatus==ON)ItemStatus=OFF;elseItemStatus=ON;(4)利用Classwizard创建“OnUpDateItem1”函数:在Classwizard对话框内将“Classname”选为CMyfirstCppView,“ObjectIDs”栏选“ID_TEST_ITEM1”,右边“Messages”栏目选“UPDATE_COMMAND_UI”,按“OK”钮,在“CMyfirstCppView.Cpp”文件中出现下面代码段:voidCMyfirstCppView::OnUpdateTestItema(CCmdUI*pCmdUI){//TODO:AddyourcommandupdateUIhandlercodehere}在该函数内添加下面一行:pCmdUI-SetCheck(ItemStatus==ON);(5)重新编译并运行程序,发现菜单项“Test”=“Item1”开始时未被选中,按一次该项变为选中(其前出现√),再按一次又变为未选中。6.创建对话框:两种方法可以进入对话框资源编辑状态:1)在VC++编译器主界面左侧的项目文件管理对话框内选择下方的“ResourceView”,然后将光标放在“Dialog”上点击鼠标右键,在弹出的对话框内选“Insert”;2)在VC++主界面的菜单中打开“Insert”项,点击“Resource”再点击“Dialog”,进入对话框编辑界面,并出现一个默认的最简单的对话框,只包含“OK”和“Cancel”按钮,同时旁边还有一个控件(controls)工具栏,内有各种常用控件(如下图所示)。其中“Aa”控件为静态文本框,只用来显示一些说明信息,而“ab|”控件为编辑框,可以用来输入和输出数据。根据需要可用鼠标将其拖入对话框内,设计所需要的对话框。下5面创建一个简单的对话框:1)给新对话框命名:编译器为刚创建的对话框分配一个默认的名称和ID号,如不想用默认的名字,可自行命名。将光标放在新对话框内,单击鼠标右键,弹出一个菜单,点击最后一项“Properties”弹出一个“DialogProperties”对话框,在“Caption”栏中填写新创建对话框的名字(如“Dialog1”),在“ID”栏目中填写新对话框的ID(如,“IDD_MYDIALOG1”)(对话框的ID都以IDD_开头)。2)将“Aa”控件拖入对话框内(或鼠标左键单击一下工具栏中的“Aa”,然后在对话框内任意位置单击鼠标左键),则对话框内出现一个新的“Static”控件,将光标放在该控件上,然后单击鼠标右键,弹出一个菜单,点击最后一项“Properties”弹出一个“TextProperties”对话框,在“Caption”栏目内填写欲显示的内容,如“Thisismyfirstdialog!”,其ID为“IDC_STATIC”可以不用修改。3)创建对话框类:对话框不同于菜单项,每个对话框为一个新的类,因此要想使用(在某一时刻显示)该对话框,必须首先为新创建的对话框窗创建相应的类。鼠标左键双4)击新创建的对话框,弹出一个“Addingaclass”对话框,按“OK”钮,弹出另一对话框,“DialogID”栏显示的是刚创建的对话框的ID(若不是,利用下拉条找到刚创建的对话框的ID),中间一栏“BaseClass”中显示的是“CDialog”表示将从MFC的对话框类“CDialog”派生一个新的对话框类,在最上面的“Name”栏中添加该新类的名称,如“MyDia1”,同时下面的“Filename”一栏自动出现对应该类的原代码文件名:“MyDia1.cpp”,按“OK”钮,进入MFCClasswizard界面,右上角“Classname”栏目中出现“MyDia1”,按“OK”钮退回到VC++编辑器主界面,查看左侧的文件管理器窗口HeaderFile和SourceFile中分别出现了“MyDia1.h”和“MyDia1.cpp”文件,在MyDia1.h文件中有一行classMyDia1:publicCDialog表明增加了一个新的名为“MyDia1”的类,冒号(:)表示该类是从MFC基类“CDialog”中派生出来的。此时文件MyDia1.cpp几乎是空的,表示该对话框
本文标题:VC++编程入门
链接地址:https://www.777doc.com/doc-3383007 .html