求mfc代码解释和原理讲解,解决方案

求mfc代码解释和原理讲解,急急急
求大神指点以下代码解释,和设计原理(部分代码如下),给我说说各功能是怎么实现的
// CalculatorDlg.cpp : implementation file
#include "stdafx.h"
#include "Calculator.h"
#include "CalculatorDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCalculatorDlg dialog

CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCalculatorDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCalculatorDlg)
m_strEdit = _T("");
m_strRes = _T("");
m_strM = _T("");
m_strHistory = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCalculatorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCalculatorDlg)
DDX_Control(pDX, IDC_COMBO_Cns, m_combo_cns);
DDX_Control(pDX, IDC_RADIO_RADIAN, m_radio_radian);
DDX_Control(pDX, IDC_RADIO_DEGREE, m_radio_degree);
DDX_Text(pDX, IDC_EDIT_INPUT, m_strEdit);
DDX_Text(pDX, IDC_EDIT_RESULT, m_strRes);
DDX_Text(pDX, IDC_EDIT_M, m_strM);
DDX_Text(pDX, IDC_EDIT_HISTORY, m_strHistory);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialog)
//{{AFX_MSG_MAP(CCalculatorDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_About, OnAbout)
ON_BN_CLICKED(IDC_Btn0, OnBtn0)
ON_EN_CHANGE(IDC_EDIT_INPUT, OnChangeEditInput)
ON_BN_CLICKED(IDC_Btn1, OnBtn1)
ON_BN_CLICKED(IDC_Btn2, OnBtn2)
ON_BN_CLICKED(IDC_Btn3, OnBtn3)
ON_BN_CLICKED(IDC_Btn4, OnBtn4)
ON_BN_CLICKED(IDC_Btn5, OnBtn5)
ON_BN_CLICKED(IDC_Btn6, OnBtn6)
ON_BN_CLICKED(IDC_Btn7, OnBtn7)
ON_BN_CLICKED(IDC_Btn8, OnBtn8)
ON_BN_CLICKED(IDC_Btn9, OnBtn9)
ON_BN_CLICKED(IDC_BtnDot, OnBtnDot)
ON_BN_CLICKED(IDC_BtnNgt, OnBtnNgt)
ON_BN_CLICKED(IDC_BtnF, OnBtnF)
ON_BN_CLICKED(IDC_BtnA, OnBtnA)
ON_BN_CLICKED(IDC_BtnB, OnBtnB)
ON_BN_CLICKED(IDC_BtnC, OnBtnC)
ON_BN_CLICKED(IDC_BtnD, OnBtnD)
ON_BN_CLICKED(IDC_BtnE, OnBtnE)
ON_BN_CLICKED(IDC_BtnAdd, OnBtnAdd)
ON_BN_CLICKED(IDC_BtnMin, OnBtnMin)
ON_BN_CLICKED(IDC_BtnMul, OnBtnMul)
ON_BN_CLICKED(IDC_BtnDiv, OnBtnDiv)
ON_BN_CLICKED(IDC_BtnLbar, OnBtnLbar)
ON_BN_CLICKED(IDC_BtnRbar, OnBtnRbar)
ON_BN_CLICKED(IDC_BtnBack, OnBtnBack)
ON_BN_CLICKED(IDC_BtnPow, OnBtnPow)
ON_BN_CLICKED(IDC_BtnMod, OnBtnMod)
ON_BN_CLICKED(IDC_BtnPi, OnBtnPi)
ON_BN_CLICKED(IDC_BtnEe, OnBtnEe)
ON_BN_CLICKED(IDC_Btn10exp, OnBtn10Exp)
ON_BN_CLICKED(IDC_BtnSin, OnBtnSin)
ON_BN_CLICKED(IDC_BtnCos, OnBtnCos)