MFC计算器总结

来源:互联网 发布:顶点软件怎么样 编辑:程序博客网 时间:2024/06/05 01:19
                                                              用MFC制作计算器之总结
一, 利用MFC进行可视化编程,要熟悉几个视图——类视图,资源视图,工具箱等
        解决方案资源管理器——用来管理程序的代码(.h啊.cpp啊都在这里了)
        类视图——用来管理程序中的类(添加类成员啊都可以在这里)
        资源视图——管理程序的外部资源(具体什么是资源,会慢慢介绍,简单的说就是程序的外观)
        工具箱——各种控件都在这里了

        属性窗口——(最重要)修改属性,消息响应,函数重写(全很重要)。

二,_T()涵数使用

弹出来的对话框:

AfxMessageBox(_T("你点击了Button1"));


对编辑框的显示函数:

Edit Control:

SetDlgItemText(IDC_EDIT1,_T("你点击了Button1"));

 

对控件的属性修改:

Capition标示为标题;

每一个控件都有相应的ID


三,对CString 类的使用

CString l_cstrScreen; l_cstrScreen += _T("1");//这样可以表示多个“1”;SetDlgItemText(IDC_EDIT1,l_cstrScreen);

四, 学会修改控件ID

首先在*Dlg.cpp文件中(*代表了你所建立工程的名称,我建立的工程叫MyMFC,所以对应的就是MyMFC.cpp),找到如代码3所示代码: 

代码3: BEGIN_MESSAGE_MAP(CMyMFCDlg,CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT()

ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, &CMyMFCDlg::OnBnClickedButton1)END_MESSAGE_MAP() 看到这里,可能应该知道我们要做的事情了,将IDC_BUTTON1修改为IDC_NUM1,然后在Resource.h中,找到如代码4所示代码: 

代码4:#defineIDC_BUTTON1 1000 #define IDC_NUM1 1000 #define IDC_EDIT1 1001 看到这点代码,可能有的同学应该可以明白为什么修改ID后程序仍然可以顺利运行了,这里我们将 #define IDC_BUTTON1 1000 这行删除。(记着上述两处修改该后都要保存。。。),完成上述步骤后,如果有能力的同学可以试着按照自己的理解修改一下响应函数void OnBnClickedButton1()的名称(因为这里其实也含有Button1)。

五,UpdateDate()函数的使用:

1.  UpdateData() 是MFC的窗口函数,用来刷新数据的。

UpdateData()参数只有一个,默认为TRUE。

  UpdateData(TRUE)

  ——刷新控件的值到对应的变量。(外部输入值交给内部变量)

  即:控件的值—>变量。

  UpdateData(FALSE)

  —— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)

  即:变量值—>控件显示。

  例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode);

  将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oneditchanged()中需要加入UpdateData(TRUE);

  简单地说,如果Updatedata(TRUE) == 将控件的值赋值给成员变量,即从窗口编辑框中读入数据;Updatedata(FALSE)== 将成员变量的值赋值给控件,将数据从窗口显示。

  实例说明:

  例如我们在对话框窗口中添加了3个editbox,然后将前两个的值相加,然后在第三个editbox中输出。

  那么我们可以做如下处理:

  1。用类向导在3个editbox下添加3个变量,我们命名为m_num1,m_num2,m_num3。

  2。然后我们可以多添加一个button控件,在其的click处理事件中,添加以下代码:

  UpdateData();// 默认的缺省参数为TRUE,这样,将EditBox控件的内容读入到与其关联的变量中

  m_num3 = m_num1+m_num2;

  UpdateData(FALSE);// 将变量的值,输出到与其关联的EditBox中

  就可以了

六,对关闭响应函数:

void C计算器(标准)Dlg::OnClose(){// TODO: 在此添加消息处理程序代码和/或调用默认值OnOK();CDialogEx::OnClose();}

七,对键盘的响应:

void C计算器(标准)Dlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){// TODO: 在此添加消息处理程序代码和/或调用默认值if(nChar=='1'){g_Showentrynum+=_T("1");g_Showguocheng+=_T("1");SetDlgItemText(IDC_EDIT1,g_Showentrynum);SetDlgItemText(IDC_EDIT2,g_Showguocheng);UpdateData(TRUE);g_Tnum=_ttof(g_Showentrynum);UpdateData(FALSE);}

八,CString 与float 类型:用_ttof()的转换

Float 与CString 的转换:

CString str;g_Preresult=g_result;g_sign=1;str.Format(_T("%.2f"),g_result);g_Showguocheng+=_T("=");g_Showguocheng+=str;SetDlgItemText(IDC_EDIT1,str);SetDlgItemText(IDC_EDIT2,g_Showguocheng);





0 0
原创粉丝点击