VC闪存吧

简介:
长时间不摸VC都忘光了,做个计算器熟悉一下,回忆一下。

1.新建MFC AppWizard[exe]  MyCalculator
2.选择基于对话框,直接完成向导。
3.打开资源视图,展开Dialog
双击IDD_MYCALCULATOR_DIALOG
删除默认的文本与按钮。
4.选中按钮,打开属性面版,Caption相当于Text
ID不变。
5.引入一个变量,将输入的数据和计算的结果在编辑框显示。
拖一个编辑框上去。ID为IDC_DISPLAY
右击添加变量,把"控件变量"勾上。
选择编辑框IDC_DISPLAY
类别选择Value;变量类型选择CString
变量名为m_display
6.添加一个变量,变量类型为double
变量名m_first;访问protected
这样在头文件中添加了变量。
可以直接在MyCalculatorDlg.h中直接手写。
8.打开MyCalculatorDlg.cpp
找到构造函数
CMyCalculatorDlg::CMyCalculatorDlg(CWnd* pParent /*=NULL*/)
 : CDialog(CMyCalculatorDlg::IDD, pParent)
 , m_display(_T(""))
 , m_first(0)
{
 m_first=0.0;
 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
添加m_first=0.0;在构造函数里初始化。
9.为按钮添加事件处理程序。
右击按钮->添加事件处理->选择BN_CLICKED添加编辑。
10.
UpdateData(true);//控件值传给变量
UpdateData(false);//变量值传给控件
11.添加自定义函数,要在头文件中声明。
//自定义函数
void CMyCalculatorDlg::UpdateDisplay(double Val)
{
 m_display.Format(_T("%f"),Val);
 int i = m_display.GetLength();
 while(m_display.GetAt(i-1)=='0')
 {
  m_display.Delete(i-1,1);
  i--;
 }
 UpdateData(false);
}
MyCalculatorDlg.h中声明
public:
 afx_msg void OnBnClickedButtonok();
 afx_msg void OnBnClickedButton0();
 afx_msg void UpdateDisplay(double Val);
};
12.关于消息处理函数。
实际上执行了三个操作。
12.1在My.h中添加函数原型.
12.2在My.cpp中添加函数体。
12.3在My.cpp中添加消息映射。
通过向导删除事件处理函数时,并不删除函数体,需要手工删除。
13.数据交换DDX和校验DDV
13.1当为Edit控件创建变量m_display的时候。
void CMyCalculatorDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 DDX_Text(pDX, IDC_DISPLAY, m_display);
}
14. error C2665: “AfxMessageBox”: 2 个重载中没有一个可以转换所有参数类
AfxMessageBox(_T("Hi"));
AfxMessageBox(("click"));

错误 error C2665: 'AfxMessageBox' : none of the 2 overloads could convert all the argument types

用的是vc2005
解答: 
VS2005编译器的检查更严格了,在vc6和vc7种可以编译通过的语句:AfxMessageBox(“test”); 
VS2005编译器只能写成AfxMessageBox(_T("test"));才能使用,否则编译器会告诉你有两个AfxMessageBox函数

,但编译器不知道使用哪一个。错误提示如上。

在书写代码的时候要养成使用TEXT("")或_T("")的习惯,这样文本在UNICODE和非UNICODE程序里都通用!




    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/greatverve/archive/2010/11/05/cpp-calculator.html,如需转载请自行联系原作者



相关文章
|
9月前
【DELL】戴尔笔记本PE下没有硬盘解决方法
【DELL】戴尔笔记本PE下没有硬盘解决方法
105 0
|
2月前
|
存储 算法 物联网
MCU的最佳存储方案CS创世 SD NAND
MCU的最佳存储方案CS创世 SD NAND
50 7
|
存储 缓存 监控
Win硬件 - 西部数据绿盘、蓝盘、黑盘、红盘和紫盘有什么区别?
Win硬件 - 西部数据绿盘、蓝盘、黑盘、红盘和紫盘有什么区别?
235 0
|
安全 编译器 Linux
QT5.6移植到ARM三星4412-
QT5.6移植到ARM三星4412-
209 0
QT5.6移植到ARM三星4412-
|
存储 内存技术 iOS开发
|
存储 芯片 异构计算
|
存储 虚拟化 内存技术