VC++程序设计 第5讲
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
+ C+ 给Help菜单的About菜单连接代码
void CMyMenuDlg::OnHelpAbout( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// CAboutDlg dlg; dlg.DoModal( ); //////////////// //代码结束 //////////////// }
在对话框的Menu组合框中选择IDR_MENU1。
给各菜单项连接代码
+ C + 给File菜单的Exit命令连接代码
打开Class Wizard对话框,选择Message Maps标签。
给各菜单项连接代码
单击Add Funtion按钮。 接受Visual C++建议的函数名OnFileExit。 单击Edit Code按钮。 void CMyMenuDlg::OnFileExit( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnOK( ); //////////////// //代码结束 //////////////// }
MB_ICONASTERISK 64
给各菜单项连接代码
+ C+ 给Beep菜单的Beep2菜单连接代码 void CMyMenuDlg::OnBeepBeep2( ) { // 添加自己的代码
///////////////// //代码开始 ///////////////
GetCurrentTime:API函数
适用于编辑框、复选框、单选按钮、列表框和组合框。 关联变量时,由ClassWizard自动完成有关代码。
“消息映射”机制
建立一个消息和响应函数的对应表,当收到消息时查 找表,如果表中有相应的消息,就将消息交给对应的函 数处理。
消
息
响应函数
OnTest1Button
BN_CLICKED(IDC_TEST1_BUTTON)
给各按钮连接代码
+ C+ 给Exit按钮连接代码
void CMyMenuDlg::OnExitButton( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnFileExit( ); //////////////// //代码结束 //////////////// }
MessageBeep(0); DWORD start=GetCurrentTime( ); while(GetCurrentTime( )<start+500); MessageBeep(0);
//////////////// //代码结束 ///////////////
获取当前的系统时间
}
给各菜单项连接代码
作为MyMenu程序主窗口对话框的可视实现
对话框中所有控件的属性如下所示:
对 象 ID Caption
对话框 按 钮 按 钮 按 钮 按 钮
IDD_MYMENU_DIALOG IDC_BEEP1_BUTTON IDC_BEEP2_BUTTON IDC_SHOW_BUTTON IDC_EXIT_BUTTON
BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间)
菜单设计
第 五 讲
菜单设计
菜单是用户和应用程序交互时命令的存放处。 因此,菜单在VC++编程中是很重要的。 子菜单 菜单项 菜单栏
在此主要介绍:
+ C+ 如何设计菜单栏? + C+ 如何显示菜单栏? + C+ 如何给菜单项连接相应代码?
选择 Menu项,单 击New按钮,这样就 在资源文件中增加了一 项资源——菜单。
菜单栏的可视实现
选择Resource Veiw标签。
点击Menu项左边的 +号,显示该资源的 ID号为IDR_MENU1 双击ID号,显示菜 单栏。 双击矩形框,在菜 单属性对话框中设 置该菜单项的标题 为&File。
给菜单连接一个类
菜单是一个资源,需要给它连接一个类。 回到菜单的编辑界面,打开ClassWizard对话框。 单击OK按钮后,在Select Class对话框中选择 CMyMenuDlg,这样完成了菜单与一个类的连接。
将菜单连接至主窗口
显示IDD_MYMENU_DIALOG对话框。 在对话框的任意一个空白区域单击鼠标右键,在 弹出的快捷菜单中选择Properties命令,打开Dialog Properties对话框。
}
给各菜单项连接代码
+ C+ 给Beep菜单的Beep1菜单连接代码
void CMyMenuDlg::OnBeepBeep1( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// MessageBeep:API函数 MessageBeep(0); 让计算机发出一声蜂鸣声 //////////////// //代码结束 MB_OK 0 //////////////// MB_ICONHAND 16 MB_ICONEXCLAMATION 48 }
菜单设计的步骤
+ C + 生成应用程序的工程文件 + C + 作为应用程序主窗口对话框的可视化实现 + C + 菜单的可视化实现
+ C + 给菜单连接一个类
+ C + 将菜单与应用程序主窗口对话框连接 + C + 给各菜单项连接代码 + C + 给各按钮连接代码
• 关于对话框的显示
CAboutDlg dlg; dlg.DoModal( );
给各菜单项连接代码
+ C+ 给File菜单的Show命令连接代码
void CMyMenuDlg::OnFileShow( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// MessageBox("这是我的菜单设计"); //////////////// //代码结束 ////////////////
将得到的字符串转换为数字。比如: double num1; num1=atof(str1); + C+ char * _gcvt( double value, int digits, char *buffer ); 将得到的结果转换为字符串。 _gcvt(num3, 10, str3);
MyMenu Beep &1 Beep &2 &Show E&xit
作为MyMenu程序主窗口对话框的可视实现
执行MyMenu应用程序,与预期结果一致。
菜单栏的可视实现
AppWizard生成的对话框中是没有菜单的, 需要在应用程序的资源中增加一个菜单资源。
选择Insert子菜单中的Resource命令,显示 Insert Resource 对话框。
给各按钮连接代码
+ C+ 给Show按钮连接代码
void CMyMenuDlg::OnShowButton( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnFileShow( ); //////////////// //代码结束 //////////////// }
给各按钮连接代码
+ C+ 给Beep1按钮连接代码
void CMyMenuDlg::OnBeep1Button( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnBeepBeep1( ); //////////////// //代码结束 //////////////// }
“数据交换和数据检查”机 制
将某一变量和对话框中的一个控件进行关联,通过在 二者之间交换数据,将变量中的数据放入控件,或是将 控件中的数据取到变量中进行合法性检查。
在数据交换时,一个控件可以和两种类型的变量相关 联,一种是Value种类(内容对象),一种是Control种 类(控件对象)。
给各按钮连接代码
+ C+ 给Beep2按钮连接代码
void CMyMenuDlg::OnBeep2Button( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnBeepBeep2( ); //////////////// //代码结束 ///ቤተ መጻሕፍቲ ባይዱ//////////// }
BN_CLICKED(IDC_CLEAR1_BUTTON) OnClear1Button
添加响应函数时,由ClassWizard自动完成有关代码
……
……
“消息映射”机制
一个消息响应函数在程序中有三处信息:
函数原型(.h文件 两个AFX_MSG注释宏之间)
函数实现(.cpp文件) 关联消息和消息响应函数的宏(.cpp文件
菜单栏的可视实现
ID ID_FILE_SHOW ID_FILE_EXIT
Caption &File &Show &Exit Beep
ID_BEEP_BEEP1 ID_BEEP_BEEP2 ID_HELP_ ABOUT
Be&ep1 Bee&p2 Help &About
菜单栏的可视实现
分割线的设置
作 业
P288
要求关于对话框中 要有自己的名字。
3. 设计一个菜单应用程序,程序的结构是对话框。 窗口布局如下: 文件: 退出 计算: 加 减 乘 除 帮助: 在编辑框中实现算术加、减、乘和除的运算。
关于
作 业 所用函数
+ C+ CEdit类成员函数: int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) 得到某个编辑框中的字符。比如: char str1[10]; m_Edit1.GetWindowText(str1,10); + C+ double atof( const char *string )
void CMyMenuDlg::OnHelpAbout( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// CAboutDlg dlg; dlg.DoModal( ); //////////////// //代码结束 //////////////// }
在对话框的Menu组合框中选择IDR_MENU1。
给各菜单项连接代码
+ C + 给File菜单的Exit命令连接代码
打开Class Wizard对话框,选择Message Maps标签。
给各菜单项连接代码
单击Add Funtion按钮。 接受Visual C++建议的函数名OnFileExit。 单击Edit Code按钮。 void CMyMenuDlg::OnFileExit( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnOK( ); //////////////// //代码结束 //////////////// }
MB_ICONASTERISK 64
给各菜单项连接代码
+ C+ 给Beep菜单的Beep2菜单连接代码 void CMyMenuDlg::OnBeepBeep2( ) { // 添加自己的代码
///////////////// //代码开始 ///////////////
GetCurrentTime:API函数
适用于编辑框、复选框、单选按钮、列表框和组合框。 关联变量时,由ClassWizard自动完成有关代码。
“消息映射”机制
建立一个消息和响应函数的对应表,当收到消息时查 找表,如果表中有相应的消息,就将消息交给对应的函 数处理。
消
息
响应函数
OnTest1Button
BN_CLICKED(IDC_TEST1_BUTTON)
给各按钮连接代码
+ C+ 给Exit按钮连接代码
void CMyMenuDlg::OnExitButton( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnFileExit( ); //////////////// //代码结束 //////////////// }
MessageBeep(0); DWORD start=GetCurrentTime( ); while(GetCurrentTime( )<start+500); MessageBeep(0);
//////////////// //代码结束 ///////////////
获取当前的系统时间
}
给各菜单项连接代码
作为MyMenu程序主窗口对话框的可视实现
对话框中所有控件的属性如下所示:
对 象 ID Caption
对话框 按 钮 按 钮 按 钮 按 钮
IDD_MYMENU_DIALOG IDC_BEEP1_BUTTON IDC_BEEP2_BUTTON IDC_SHOW_BUTTON IDC_EXIT_BUTTON
BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间)
菜单设计
第 五 讲
菜单设计
菜单是用户和应用程序交互时命令的存放处。 因此,菜单在VC++编程中是很重要的。 子菜单 菜单项 菜单栏
在此主要介绍:
+ C+ 如何设计菜单栏? + C+ 如何显示菜单栏? + C+ 如何给菜单项连接相应代码?
选择 Menu项,单 击New按钮,这样就 在资源文件中增加了一 项资源——菜单。
菜单栏的可视实现
选择Resource Veiw标签。
点击Menu项左边的 +号,显示该资源的 ID号为IDR_MENU1 双击ID号,显示菜 单栏。 双击矩形框,在菜 单属性对话框中设 置该菜单项的标题 为&File。
给菜单连接一个类
菜单是一个资源,需要给它连接一个类。 回到菜单的编辑界面,打开ClassWizard对话框。 单击OK按钮后,在Select Class对话框中选择 CMyMenuDlg,这样完成了菜单与一个类的连接。
将菜单连接至主窗口
显示IDD_MYMENU_DIALOG对话框。 在对话框的任意一个空白区域单击鼠标右键,在 弹出的快捷菜单中选择Properties命令,打开Dialog Properties对话框。
}
给各菜单项连接代码
+ C+ 给Beep菜单的Beep1菜单连接代码
void CMyMenuDlg::OnBeepBeep1( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// MessageBeep:API函数 MessageBeep(0); 让计算机发出一声蜂鸣声 //////////////// //代码结束 MB_OK 0 //////////////// MB_ICONHAND 16 MB_ICONEXCLAMATION 48 }
菜单设计的步骤
+ C + 生成应用程序的工程文件 + C + 作为应用程序主窗口对话框的可视化实现 + C + 菜单的可视化实现
+ C + 给菜单连接一个类
+ C + 将菜单与应用程序主窗口对话框连接 + C + 给各菜单项连接代码 + C + 给各按钮连接代码
• 关于对话框的显示
CAboutDlg dlg; dlg.DoModal( );
给各菜单项连接代码
+ C+ 给File菜单的Show命令连接代码
void CMyMenuDlg::OnFileShow( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// MessageBox("这是我的菜单设计"); //////////////// //代码结束 ////////////////
将得到的字符串转换为数字。比如: double num1; num1=atof(str1); + C+ char * _gcvt( double value, int digits, char *buffer ); 将得到的结果转换为字符串。 _gcvt(num3, 10, str3);
MyMenu Beep &1 Beep &2 &Show E&xit
作为MyMenu程序主窗口对话框的可视实现
执行MyMenu应用程序,与预期结果一致。
菜单栏的可视实现
AppWizard生成的对话框中是没有菜单的, 需要在应用程序的资源中增加一个菜单资源。
选择Insert子菜单中的Resource命令,显示 Insert Resource 对话框。
给各按钮连接代码
+ C+ 给Show按钮连接代码
void CMyMenuDlg::OnShowButton( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnFileShow( ); //////////////// //代码结束 //////////////// }
给各按钮连接代码
+ C+ 给Beep1按钮连接代码
void CMyMenuDlg::OnBeep1Button( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnBeepBeep1( ); //////////////// //代码结束 //////////////// }
“数据交换和数据检查”机 制
将某一变量和对话框中的一个控件进行关联,通过在 二者之间交换数据,将变量中的数据放入控件,或是将 控件中的数据取到变量中进行合法性检查。
在数据交换时,一个控件可以和两种类型的变量相关 联,一种是Value种类(内容对象),一种是Control种 类(控件对象)。
给各按钮连接代码
+ C+ 给Beep2按钮连接代码
void CMyMenuDlg::OnBeep2Button( ) { // 添加自己的代码 ///////////////// //代码开始 /////////////// OnBeepBeep2( ); //////////////// //代码结束 ///ቤተ መጻሕፍቲ ባይዱ//////////// }
BN_CLICKED(IDC_CLEAR1_BUTTON) OnClear1Button
添加响应函数时,由ClassWizard自动完成有关代码
……
……
“消息映射”机制
一个消息响应函数在程序中有三处信息:
函数原型(.h文件 两个AFX_MSG注释宏之间)
函数实现(.cpp文件) 关联消息和消息响应函数的宏(.cpp文件
菜单栏的可视实现
ID ID_FILE_SHOW ID_FILE_EXIT
Caption &File &Show &Exit Beep
ID_BEEP_BEEP1 ID_BEEP_BEEP2 ID_HELP_ ABOUT
Be&ep1 Bee&p2 Help &About
菜单栏的可视实现
分割线的设置
作 业
P288
要求关于对话框中 要有自己的名字。
3. 设计一个菜单应用程序,程序的结构是对话框。 窗口布局如下: 文件: 退出 计算: 加 减 乘 除 帮助: 在编辑框中实现算术加、减、乘和除的运算。
关于
作 业 所用函数
+ C+ CEdit类成员函数: int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) 得到某个编辑框中的字符。比如: char str1[10]; m_Edit1.GetWindowText(str1,10); + C+ double atof( const char *string )