基于MFC的科学计算器编程

合集下载

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计M F C简单计算器实验报告Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

2. 能实现加、减、乘、除及乘方的运算。

3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。

4. 屏幕、图形颜色、形状自定3 总体设计总体框架图1 系统框架系统功能说明在VC++中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。

拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。

4 程序详细设计系统主调模块图5 程序流程图各模块详细设计建立的变量,控件的命名,对应的消息处理函数对应表double poz; 按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; && buffer[i+1]==0)之前那位}m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。

C++-MFC计算器编程课程设计实践报告

C++-MFC计算器编程课程设计实践报告

中南大学本科生课程设计(实践)设计报告(程序设计基础)题MFC编程科学计算器目学生1104120502学号学生郭斌繁姓名指导蔡旭晖教师学院交通运输工程学院专业交通运输类1205班班级计算机基础教学实验中心2013年7月1日程序设计(C++)实践报告1.引言C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1) C++是一个更好的C,它保持了C S言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。

这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。

(2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。

这对于设计、编制和调试一些大型的软件尤为重要。

⑶C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++ 程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++?序。

(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。

其优点是给用户编程带来书写上的方便。

其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。

次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。

并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。

(1).设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。

在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。

通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。

(2).选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。

MFC计算器

MFC计算器

《C++面向对象程序设计》实验报告学院:信息科学与工程学院专业:学号:姓名:一.题目:利用MFC框架编写Windows附件中所示的简易计算器二.功能描述:1.能够实现最基本的加,减,乘,除四则基本运算。

2.界面有清空,退格按钮,方便用户计算使用。

3.此计算器具有开方,取倒数,求对数的高级运算。

三.概要设计:1.Windows消息处理机制通过对教材的阅读,对Windows程序的消息处理机制有个大致的了解。

Windows的程序都是通过消息来传送数据,并且存在异常处理等不需要用户参与的系统消息,用户消息就是鼠标的单击,双击等。

2.界面的设计如图,简易的计算器界面主要使用菜单中相关控件,并合理的布置各个按钮的位置,使得界面让用户看起来整洁简单。

3.框架描述Windows 简易计算器在资源视图画好界面添加控件的同时,通过属性修改名称为各个按钮和编辑框添加不同的函数四则运算+,-,*,/ 1/x,lgx等函数退格和清空键4.建立的变量和控件的命名,对应的消息处理函数命名表ID CAPTION Message Handler IDC_BUTTON0 0 OnButton0()IDC_BUTTON1 1 OnButton1()IDC_BUTTON2 2 OnButton2()IDC_BUTTON3 3 OnButton3()IDC_BUTTON4 4 OnButton4()IDC_BUTTON5 5 OnButton5()IDC_BUTTON6 6 OnButton6()IDC_BUTTON7 7 OnButton7()IDC_BUTTON8 8 OnButton8()IDC_BUTTON9 9 OnButton9()IDC_BUTTON10 . OnButton11()IDC_BUTTON11 = OnButtonequal() IDC_BUTTON12 + OnButtonadd()IDC_BUTTON13 - OnButtoncut()IDC_BUTTON14 * OnButtonmultiply() IDC_BUTTON15 / OnButtonremove() IDC_BUTTON16 1/x OnButton1x()IDC_BUTTON17 lg OnButtonlg()IDC_BUTTON18 sqrt OnButtonsqrt()IDC_BUTTON19 Backspace OnButtonbackspace() IDC_BUTTON20 C(清空) OnButtonclear()5.下图是基本对话框中所有的类四.详细设计:1.新建工程,选择MFC AppWizard[exe],并命名工程的名称为mycalculator2.选择基本对话框3.通过控件添加各种按钮和编辑框(对话框右边的“Controls”控件箱提供了可用于对话框的各种组建,在此次计算器中,基本上只用到上面四个控件,对话框只能通过控件来实现它们的功能,把控件中的数据保存在对话框类的数据成员中,应用程序才能通过这些数据成员获取控件中的数据)4.考虑用户们的习惯,把编辑框的显示的数字属性由靠左改成靠右(选中编辑框,右击选择属性-样式,排列文本改为向左)5.用同样的方法改变按钮的标题,其他按钮同理6.为美观改变对话框的标题为“计算器”7.右击编辑框添加类向导,添加变量m_result,且type为CString//可通过其改变类型和名称8.实现每个按钮的功能,双击按钮,为按钮添加函数,可以改变函数的名称① 0~9和小数点的函数大致类似void CMycalculatorDlg::OnButton1(){// TODO: Add your control notification handler code herem_result +=_T("1");UpdateData(FALSE);}函数_T()可以对字符串进行操作,UpdateData(FALSE)可以把数据传到文本框里面,小数点与数字同样这样处理。

visual 2015 mfc 计算器 代码

visual 2015 mfc 计算器 代码

以下是一个简单的 Visual Studio 2015 MFC 计算器的示例代码。

它包括两个窗口,一个用于输入和显示数字,另一个用于显示结果。

```cpp// MainFrm.cpp : implementation of the CMainFrame class //#include "pch.h"#include "framework.h"#include "Calculator.h"#include "MainFrm.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// CMainFrameIMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)ON_WM_CREATE()ON_WM_DESTROY()ON_COMMAND(ID_APP_ABOUT,&CMainFrame::OnAppAbout)ON_COMMAND(ID_FILE_NEW, &CMainFrame::OnFileNew) ON_COMMAND(ID_FILE_EXIT, &CMainFrame::OnFileExit) ON_COMMAND(ID_EDIT_CLEAR,&CMainFrame::OnEditClear)ON_COMMAND(ID_EDIT_COPY,&CMainFrame::OnEditCopy)ON_COMMAND(ID_EDIT_PASTE,&CMainFrame::OnEditPaste)ON_COMMAND(ID_VIEW_SPLIT,&CMainFrame::OnViewSplit)ON_COMMAND(ID_VIEW_FULL,&CMainFrame::OnViewFull)ON_UPDATE_COMMAND_UI(ID_EDIT_CLEAR,&CMainFrame::OnUpdateEditClear)ON_UPDATE_COMMAND_UI(ID_EDIT_COPY,&CMainFrame::OnUpdateEditCopy)ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE,&CMainFrame::OnUpdateEditPaste)END_MESSAGE_MAP()static UINT indicators[] ={ID_SEPARATOR, // status line indicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,};CMainFrame::CMainFrame() : CFrameWndEx(){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}CMainFrame::~CMainFrame(){}int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)return -1;// Create a view to host the client window. This object will be responsible for drawing the client area.// Set initial host view properties.CView* pView = new CView;if (!pView)return -1;pView->Create(_T("Calculator"), WS_CHILD | WS_VISIBLE | WS_BORDER | 500, CRect(0, 0, 200, 200), this);m_viewList.AddTail(pView);// m_pActiveView = pView;// m_bIsSplitterBar = TRUE;// m_bIsHorzSplit = TRUE;// m_bIsVerSplit = FALSE;// m_bIsDocTemplate = TRUE;// Create a toolbar control and initialize it.CToolBarCtrl mtbBarCtrl;// Create a command bar control and initialize it.CCommandBarCtrl commandBarCtrl; // Create a status bar control and initialize it. // Create a menu control and initialize it. CMenu menuBar;menuBar.CreateMenu();menuBar.AppendMenu(MF_POPUP, IDM_FILE, _T("&File"));menuBar.AppendMenu(MF_POPUP, IDM_EDIT, _T("&Edit")); menuBar.AppendMenu(MF_POPUP,IDM_VIEW, _T("&View")); menuBar.AppendMenu(MF_POPUP, IDM_INSERT, _T("&Insert")); menuBar.AppendMenu(MF_POPUP, IDM_FORMAT, _T("&Format")); menuBar.AppendMenu。

基于vc++mfc的科学计算器程序实验报告

基于vc++mfc的科学计算器程序实验报告

实验报告课程名称:windows软件开发实习实验项目:科学计算器工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 :鑫可实验名称:附件A 工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 :鑫可实验步骤或程序:一、关于Visual C++:Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows 操作系统的可视化集成开发环境(integrated development environment,IDE)。

Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。

这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。

Microsoft的主力软件产品。

Visual C++是一个功能强大的可视化软件开发工具。

自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。

所以实际中,更多的是以Visual C++6.0为6平台。

Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。

这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

二、设计要点1、基本要求:设计的系统界面要美观大方,操作合理,有必要的提示。

VC6.0制作简易计算器MFC[整理]

VC6.0制作简易计算器MFC[整理]

1、单击File(文件)菜单,选中New(新建),创建新工程。

2、选择工程栏中MFC AppWizard[exe]应用程序,并命名工程名称为calculator.(如图)3、选择MFC应用程序为“基于对话框”类型,其他选项默认。

单击完成(如图)4、修改界面。

经过前3步骤,VC6.0生成的工作界面如图所示。

先将对话框中的“TODO:在这里设置对话控制”静态文字控件和“确定”按钮控件删除,再使用工具箱将界面拖动控件修改为如图所示的界面。

该图所示是使用工具箱的控件拖放制作的计算器初始界面。

由于这些控件都有默认的名字,所以我们要对控件进行改名,右击Button1按钮,选中Properties(属性)选项以修改控件的属性,如图所示。

在弹出的对话框中,将Button1按钮的Caption(标题)属性修改为“+”,此时初始界面同时变成相应的“+”如下图所示。

修改后的界面如图所示,控件的Caption属性就是控件显示出来的值。

按照前文所讲述的方式,将界面上的按钮控件和静态文本控件的Caption属性都做相应的修改,修改后的界面如图所示。

5、为Edit(编辑)控件添加类的成员变量。

首先,右击Edit控件,选择ClassWizard(建立类向导)选项,如下图所示。

在弹出的对话框中,选择上方MemberVariables选项卡,选中DIC_EDIT1,然后单击单击右侧的Add Variable按钮,如图所示。

单击Add Variable按钮后会跳出,如图所示的对话框,该对话框是设置成员变量的命名和数据类型,在此可以命名为m_data1.注意:控件的ID只是标记一个控件,程序中不能直接控制ID,只能通过修改变量来改变控件的状态。

00相应的,再将另外两个Edit控件命名,本项目就将这3个Edit控件命名为:●IDC_EDIT1:m_data1,类型为double.●IDC_EDIT2:m_data2,类型为double.●IDC_EDIT3:m_result,类型为double.6、添加按钮控件的消息处理函数。

MFC下的科学计算器

MFC下的科学计算器

MFC下的科学计算器MFC (Microsoft Foundation Classes) 是Microsoft在windows上用于构建图形用户界面 (GUI) 的一套类库。

在MFC下开发一个科学计算器,可以实现基本的数学运算,包括加、减、乘、除,以及科学计数、平方、开方等功能。

首先,我们需要创建一个新的MFC应用程序项目。

在Visual Studio中选择“新建项目”,然后选择“MFC应用程序”。

在项目向导中,选择“单文档”视图,点击“完成”创建项目。

在代码视图中,我们可以使用Class Wizard来添加的响应函数。

打开Class Wizard,切换到“消息映射”选项卡,在列表中选择“控件”和“消息”,然后点击“添加函数”来添加事件处理函数。

除了基本的加减乘除功能,我们还可以添加其他的科学计算功能,例如平方、开方、三角函数等。

这些功能使用C++的数学库函数实现。

在完成功能的设计和实现后,我们可以进行调试和优化。

在调试期间,我们可以使用断点来跟踪代码的执行过程,检查变量的值和程序的状态。

如果遇到错误或异常情况,可以使用调试工具和日志功能来定位和解决问题。

同时,我们还可以根据用户的反馈和需求,对功能和界面进行优化和改进。

最后,我们可以将应用程序编译成可执行文件,方便用户安装和使用。

可以使用发布功能来生成安装程序,然后将可执行文件和相关文件打包,发布给用户。

总结一下,使用MFC开发一个科学计算器需要以下几个步骤:创建MFC应用程序项目、设计用户界面、实现计算功能、调试和优化、发布应用程序。

通过这个过程,我们可以了解和掌握MFC开发的基本流程和技巧,进一步提升编程能力和开发经验。

MFC计算器介绍

MFC计算器介绍

基于对话框实验,写一个计算器,实验结果:工具:VS2010遇到的问题:编译遇到字符串不能转换为char *,在字符串前面加_T解决了。

1.首先新建一个MFC项目,在工具框里面拖出工具,摆好布局,修改caption和ID栏2.在头文件添加CString num1;CString num2;CStringm_result;boolisresult;int witch;在初始化函数里面初始化// TODO: 在此添加额外的初始化代码num1="";num2="";isresult=false;witch=0;3.数字键代码voidCcalculatorDlg::OnBnClickednum1(){// TODO: 在此添加控件通知处理程序代码if(isresult==false){num1+="1";m_result=num1;UpdateData(false);}if(isresult==true){num2+="1";m_result=num2;UpdateData(false);}}运算符键代码:voidCcalculatorDlg::OnBnClickedjia(){// TODO: 在此添加控件通知处理程序代码isresult=true;witch=1;}等于键代码:voidCcalculatorDlg::OnBnClickeddengyu(){// TODO: 在此添加控件通知处理程序代码UpdateData(true);double number1=_ttof(num1);double number2=_ttof(num2);double result=0.0;switch(witch){ case 1: result=number1+number2;break;case 2: result=number1+number2;break;case 3: result=number1+number2;break;case 4: result=number1+number2;break;}m_result="";m_result.Format(_T("%lf"),result);UpdateData(false);}点号代码:voidCcalculatorDlg::OnBnClickeddot(){if(isresult==false){num1+=".";m_result=num1;UpdateData(false);}if(isresult==true){num2+=".";m_result=num2;UpdateData(false);}}3.这些函数是双击相应键添加框架,自己完善细节的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

}
}
else
{
} } 若原字符串为“2+sqrt4x3”,经过运算后变为“2+2x3”; (4)处理获得的字符串,将数值(都是非负数)存储在数组 Num[],运算符存储在数组 cha[]。 代码如下:
int m = 0;
float Num[100];
//数值数目的上限
float rate=10.0f,itemp=0.0f;
Num[m] = itemp;
itemp = 0;
m = m + 1;
Cha[m] = '/';
m = m + 1;
rate = 10.0f;
mark = 0;
}
else
{
Cha[m] = '/';
m = m + 1;
}
}
else if(m_stringcal.GetAt(i)=='^')
{
if(mark == 1)
char Cha[100];
//运算符数目的上限
int mark;
//标记符
for(int t = 0;t<100;t++) //初始化字符数组和数值数组
{
Num[t] = 0.0f;
Cha[t] = ' ';
}
for(i=0;i<m_stringcal.GetLength();i++) //捕捉
{
正数或负数;
2.两个数值中间是两个相连的运算符,若后一个运算符为‘+’或者‘-’,则处理方法
同 1;
以处理‘+’为例,代码如下:
if(Cha[0] == '+')
//处理第一个‘+’
{
if(Cha[1] == ' ')
{
Num[1] = (+1)*Num[1];
for(int p = 0;p<m;p++)
}
else if((i+4) == m_stringcal.GetLength())
{
AfxMessageBox("ERROR!");
CString str;
str = "wrong";
return str;
}
else if(m_stringcal[i+4]!='0'
&&
m_stringcal[i+4]!='1'
&&
m_stringcal[i+4]!='2'
&&
m_stringcal[i+4]!='3'
&&
m_stringcal[i+4]!='4'
&&
m_stringcal[i+4]!='5'
&&
m_stringcal[i+4]!='6'
&&
m_stringcal[i+4]!='7'
&&
m_stringcal[i+4]!='8'
if(m_stringcal[i] == 's') //计算根号 {
if(m_stringcal[i+1] == 'q')
{
if(m_stringcal[i+2] == 'r')
{
if(m_stringcal[i+3] == 't')
{
if( i!=0
&&
m_stringcal[i-1]!='+'
rate = rate/10;
mark = 1;
}
}
else if(m_stringcal.GetAt(i)=='.')
{
rate=0.1f;
mark = 1;
}
else if(m_stringcal.GetAt(i)=='+')
{
if(mark == 1)
{
Num[m] = itemp;
itemp = 0;
图 1 科学计算器界面效果图 (2)功能按钮介绍 DEL:删除光标左侧第一个字符,若光标左侧为 sqrt,则点击一次 DEL 按钮即可删除 sqrt 四个 字符,便于用户操作,同理,对于 log、ln、sin、cos、tan 和 Pi,也可以实现上述功能;若 光标位于字符串最左端,则不进行任何操作。 AC:清空编辑框内的字符串。 PRE:点击一次 PRE 按钮,显示上一次运算的计算结果,点击两次,则显示再上一次的运算 结果,依次类推,直到显示第一次的运算结果,之后再点击 PRE 按钮,不进行任何操作。 Sci:用科学计数法表示当前显示的运算结果。 Pi:表示圆周率 π。
1.若算式里包含“Pi”,则以数值“3.142592653”取代“Pi”; 2.若算式包含“sqrt+数值”,则进行二次根号运算,以获得的数值结果取代原先的“sqrt+
数值”; 3.若算式包含“sin+数值”,同“sqrt+数值”类似,计算出正弦值后,替换掉算式(字
符串)的“sin+数值”部分,需要注意的是,“sin+数值”里面的数值可以使负数, 此处需要对负数做出进一步判断; 4.同理处理“cos+数值”,“tan+数值”; 5.同理处理“lg+数字”、“ln+数值”的情况(数值不能为负,否则报错); 经过以上步骤的处理,原先的无括号算式只包含数值与运算符“+”、“-”、“x”、“/”、 “^”。 以计算“sqrt+数值”为例,代码如下(包含报错功能): for(i=0;i<m_stringcal.GetLength();i++) {
{
if(Cha[i+2] == ' ' &&
Cha[i-1] == ' ')
{
for(int t = i+1;t<m;t++)
{
Num[t] = Num[t+1];
Cha[t] = Cha[t+1];
}
m = t - 1;
}
else
{
AfxMessageBox("ERROR!");
return "wrong";
{
if(isdigit(m_stringcal.GetAt(n)))
{
if(rate==10.0)
itemp = itemp*rate+(m_stringcal.GetAt(n)-'0');
else
{
itemp = itemp+rate*(m_stringcal.GetAt(n)-'0');
rate = rate/10;
基于 MFC 的科学计算器编程
南京航空航天大学 赵祥成 一,总体功能设计要求
(1)实现带括号的四则混合运算以及幂、三角函数、根号、对数的运算; (2)显示上一次的计算结果; (3)采用科学计数法表示当前计算结果; (4)若输入的算式不符合运算规则,计算器能够自动报错。
二,界面设计
(1)界面效果图 采用基于对话框的 MFC 编程编辑科学计算器的界面,界面效果如图 1。
m = m + 1;
Cha[m] = '+';
m = m + 1;
rate = 10.0f;
mark = 0;
}
else
{
Cha[m] = '+'; m = m + 1; } } else if(m_stringcal.GetAt(i)=='-') { if(mark == 1) { Num[m] = itemp; itemp = 0; m = m + 1; Cha[m] = '-'; m = m + 1; rate = 10.0f; mark = 0; } else { Cha[m] = '-'; m = m + 1; } } else if(m_stringcal.GetAt(i)=='x') { if(mark == 1) { Num[m] = itemp; itemp = 0; m = m + 1; Cha[m] = 'x'; m = m + 1; rate = 10.0f; mark = 0; } else { Cha[m] = 'x'; m = m + 1; } } else if(m_stringcal.GetAt(i)=='/') { if(mark == 1) {
&&
m_stringcal[i-1]!='-'
&&
m_stringcal[i-1]!='x'
&&
m_stringcal[i-1]!='/'
&&
m_stringcal[i-1]!='^' )
{
AfxMessageBox("ERROR!");
CString str;
相关文档
最新文档