VC 计数器体会.docx
- 文档编号:12472636
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:10
- 大小:52.19KB
VC 计数器体会.docx
《VC 计数器体会.docx》由会员分享,可在线阅读,更多相关《VC 计数器体会.docx(10页珍藏版)》请在冰豆网上搜索。
VC计数器体会
以下是readme中的对项目中文件的描述
但是,readme是怎么得到的呢。
是自动生成还是作者写的?
========================================================================
微软基础类库:
计数器
========================================================================
应用程序向导创建此计数器申请您。
此应用程序不仅表明了基本的使用Microsoft基础类而且也是一个起点书面申请。
该文件载有什么你会发现在每一个文件,弥补您的柜台申请。
Counter.dsp 该文件(项目文件)包含的信息,在项目的水平和是用来建立一个单一的项目或子项目。
其他用户可以共享项目(。
DSP)的文件,但他们应该出口当地的Makefiles中。
Counter.h 这是主要的头文件的应用程序。
它包括其他项目具体的标题(包括Resource.h)和宣布CCounterApp应用类。
Counter.cpp 这是主要的应用,其中包含源文件的应用 一流的CCounterApp。
Counter.rc这是一个清单,把所有的MicrosoftWindows资源,程序使用。
它包括图标,位图,并游标是储存在复位子目录。
此文件可以直接编辑在MicrosoftVisualC++中。
点开之后就是资源视图(ResourcesView)
Counter.clw 该文件包含的信息所使用的类向导若要修改现有的班或添加新的类别。
类向导也使用此文件存储 必要的信息,以创建和编辑邮件的地图和对话框数据地图和创造原型成员函数。
res\Counter.ico 这是一个图标文件,它被用来做应用程序的图标。
这个图标包括的主要资源文件Counter.rc。
Res\Counter.rc2 该文件包含的资源,没有编辑的微软VisualC++中。
你应该把所有的资源不可编辑的资源编辑器在此文件中。
/////////////////////////////////////////////////////////////////////////////
AppWizarred(应用程序向导)创建一个对话框类:
CounterDlg.h,CounterDlg.cpp-对话框相关文件
这些文件包含有您的CCounterDlg类。
这一类定义的行为,您的应用程序的主对话框。
对话的模板是在Counter.rc,可在微软VisualC++中编辑。
/////////////////////////////////////////////////////////////////////////////
其他的标准文件:
StdAfx.h,StdAfx.cpp
这些文件是用来建立一个预编译头(PCH)文件命名Counter.pch和预编译类型文件,名为StdAfx.obj
Resource.h
这是标准的头文件,它定义新的资源的ID。
微软VisualC++中读取和更新该文件。
VC基础学习-AppWizard和ClassWizard
AppWizard
1.定义:
在可视化开发环境下,生成一个应用程序要做的工作主要包括编写源代码、添加资源和设置编译方式。
向导实质上是一个源代码生成器,利用应用程序向导可以快速创建各种风格的应用程序框架,自动生成程序通用的源代码,同时自动生成程序框架所需要的支持文件。
我们可以为VisualC++MFC编程作一个形象的总结,MFC应用程序框架使我们的程序设计工作犹如做填充题,DeveloperStudio中的集成工具使我们的程序设计工作犹如做选择题,程序员犹如软件集成装配车间里的技术工人
2.对文件的理解:
1.文件类型
VisualC++中通用的文件类型
后缀 类型 说明
dsw工作区文件 将项目的详细情况组合到工作区中
dsp 项目文件 存储项目的详细情况并替代mak文件
h C++头文件 存储类的定义代码
cpp C++源文件 存储类的成员函数的实现代码
rc 资源脚本文件存储菜单、工具栏和对话框等资源
rc2 资源文件 用来将资源包含到项目中
ico 图标文件 存储应用程序图标
bmp位图文件 存储位图
clw 类向导文件 存储ClassWizard类向导使用的类信息
PS:
黑体是不经常用到的
2.文件中的类
1). 定义:
MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,编程时需要利用C++类的继承性从MFC类中派生出自己的类,实现标准Windows应用程序的功能
2).类的命名:
应用程序框架中类(框架窗口类例外)的命名规则一般遵照如下要求:
ClassName=C+ProjectName+ClassType ( CFrameWnd CMysdiDocCMysdiView等等)
3).常见的类中的成员变量和成员方法:
a. 框架窗口类的头文件MainFrm.h,该头文件用于定义框架窗口类CMainFrame。
不同的SDI应用程序,其框架窗口类名和文件名是统一的。
CMainFrame类是MFC的CFrameWnd类的派生类,它主要负责创建标题栏、菜单栏、工具栏和状态栏。
CMainFrame类中声明了框架窗口中的工具栏m_wndToolBar、状态栏m_wndStatusBar两个成员变量和四个成员函数。
b.文档类的头文件MysdiDoc.h,该头文件用于定义文档类CMysdiDoc。
CMysdiDoc类是MFC的CDocument类的派生类,它主要负责应用程序数据的保存和装载,实现文档的序列化功能
c. 视图类的头文件MysdiView.h,该头文件用于定义视图类CMysdiView。
视图类用于处理客户区窗口,它是框架窗口中的一个子窗口。
CMysdiView类是MFC的CView类的派生类,它主要负责客户区文档数据的显示,以及如何进行人机交互。
d.应用程序类的头文件Mysdi.h,该头文件用于定义应用程序类CMysdiApp。
CMysdiApp类是MFC的CWinApp类的派生类,它主要负责完成应用程序的初始化、程序的启动和程序运行结束时的清理工作
课程设计
本计算器可以进行简单的十进制四则运算(加、减、乘、除),十进制最多可以输入20位数,clear表示初始化,采用对话框模式设计,在window下直接运行。
运行参考界面如图2-1所示。
图2-1计算器运行参考界面
2.2课程设计要求
单独定义一个计算器类,用于完成计算器的功能,通过对象操作完成与相关界面类的交互,设计参考类图如图2-2所示。
图2-2设计参考类图
其中计算器类的主要功能如下:
十进制四则运算;
初始化;
2.3课程设计参阅资料
基于对话框的Windows编程技术;
VC中的MFC编程技术;
按钮和编辑框控件的使用方法;
基于事件(消息)驱动的编程方法;
子对象使用技术。
课程设计的关键点:
在头文件中定义需要的变量
private:
//定义数据成员
doublenumber1;//记录第一操作数
doublenumber2;//记录第二操作数
intn;//控制精度
intsign;//记录运算符,1--"+";2--"-";3--"*";4--"/"
intflag;//判断是否按下小数点符号,为0--没按下;为1--按下
intm;//进行连加连减或乘除的标志符号,为0--非连运算;为1--需要先计算前面的结果
boolNeedClear;//输入下一个数字之前清除
而且在
Public中定义
//DialogData
//{{AFX_DATA(CTestDlg)
enum{IDD=IDD_TEST_DIALOG};
CStringm_value;//自己定义的变量
这个变量放在同的位置的颜色不一样,放在前面就是黑色,放在这里就是灰色。
按理说,灰色的代码应该是由机器自动生成的。
而m_value似乎和IDC_EDIT控件绑定的,用于编辑框的数字显示。
那怎么把一个变量和控件联系起来呢。
下面的代码似乎和这相关:
voidCCounterDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCounterDlg)
DDX_Text(pDX,IDC_EDIT1,m_value);
//}}AFX_DATA_MAP
}
而我自己最开始的这块的代码是:
voidCTestDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestDlg)
//NOTE:
theClassWizardwilladdDDXandDDVcallshere
//}}AFX_DATA_MAP
}
好了,你现在有了一个文本编辑框,可是如何使用它,你还是一无所知。
那么,我们开始学习如何将控件映射成一个变量,这个过程即“映射控件变量”,或曰“绑定控件变量”。
映射控件变量是VC的一个很好的功能,有了它,你就可以象使用一个变量一样控制控件。
映射成什么类型的变量,这依赖于你的控件。
一般来说,一个控件可以映射成一个值变量(Value),也可以映射成一个控件对象(Control)。
如:
一个文本编辑框既可以映射成一个CString值,也可以映射成一个CEdit对象,CString是个字符串,而CEdit则是MFC为文本编辑框专门准备的控件类。
在cpp中对每个按钮进行事件处理:
{
//TODO:
Addyourcontrolnotificationhandlercodehere
n=strlen(m_value);
if(n<20)
m_value+="2";
UpdateData(FALSE);
}
美观的计数器实现过程
该计数器是基于对话框的应用程序,利用MFCAppWizard生成计算器应用程序框架,
1.窗体设计
1.New—Project—MFCAppWizard(exe)选项。
2.Diallogbased(基本对话框),使用MFC标准风格,自动生成源文件备注,将MFC库作为静态DLL使用。
会自动生成创建CCaculatorApp和CCalculatorDlg类
基于CWinApp基类生成CCaculatorApp类,具体由CCaculatorApp.h和CCaculatorApp.cpp文件具体实现。
而CCalculatorDlg类由CDialog基类派生得到,具体由CalculatorDlg.h和CalculatorDlg.cpp文件具体实现。
2.编辑资源
由于选择的应用程序类型是对话框应用程序,所以在工程建立之后,就具有对话框资源。
2.1编辑对话框以及控件资源
2.2编辑菜单资源(可以不要)
选择ResourceView,右击,选择插入,出现
会自动插入IDR_MENU1菜单,接着编辑该菜单。
3.实现高级按钮控件类(可以省去)
查看->建立类向导(Ctrl+W),利用ClassWizard添加一个新的按钮类,该高级按钮控件能对鼠标的移动和单机作出相应的颜色变化。
4.实现高级编辑控制类
以CEdit为基类生成新类CAdvEdit。
5.对话框界面设计
1.编辑按钮控件
需要为每个按钮控件定义一个CAdvButton的对象与之相关联,并为每个按钮控件建立一个成员函数来响应其EN_CLICKED消息。
2.加载菜单资源
利用CMenu类的LoadMenu函数,将菜单资源加载到内存中,再调用SetMenu函数将菜单添加到对话框上。
(CMenu类是MFC类)
在CCalculatorDlg:
的OnInitDialog()方法中利用CMenu加载资源中设计好的menu类。
BOOLCCalculatorDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
m_Menu=newCMenu;
m_Menu->LoadMenu(IDR_MENU);
SetMenu(m_Menu);
CMenu*pSysMenu=GetSystemMenu(FALSE);
3.关联控件与对象(作用是将原来的按钮联系为高级按钮,应该是可以省去的。
)
在CCalculatorDlg类的申明中,已经为对话框(窗体)上的编辑框、以及每一个按钮声明了相应类型的对象与之相对应,但是这些控件与对象的关联工作是在DoDataExchange函数中利用DDX_Control宏来完成的。
DDX_Control宏需要三个参数:
CDataExchange类型的指针、控件ID、相应类型的对象。
(将按钮控件与CAdvButton对象相关联)
4.实现对话框扩展功能。
(大小窗体界面的切换,可以省去)
5.屏蔽Enter键
6.数值计算功能的实现
在CCalculatorDlg.h头文件中添加成员变量
计数器的所有运算都是二元计算,就需要声明两个浮点数,表示初始操作数和结果操作数;声明两个字符串类型的变量,分别用来(在编辑框中)显示初始操作数和结果操作数;还需要一个整形变量用来记录当前运算符,以及一个整形变量记录当前小数点按钮是否被单机过。
对于一个Dialog类,在vc中会自动分为两部分进行管理。
即.h头文件和.cpp文件。
在ClassView中不展开时,双击是编辑其头文件,展开之后是编辑其cpp文件,也就是实现文件。
在项目中自动的有一段代码:
voidCTestDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestDlg)
//NOTE:
theClassWizardwilladdDDXandDDVcallshere
//}}AFX_DATA_MAP
}
实现控件和变量的联系
CWnd:
:
UpdateData()主要用于控件与程序变量之间的交互,比如说当你在编辑框中输入内容后,需要调用这个函数将你的输入值传给与编辑框邦定的变量。
具体用法可查看MSDN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 计数器体会 计数器 体会