roychan 发表于 2009-5-27 21:36:03

真是很开心~~~

// shape2Dlg.cpp : 实现文件
//

#include "stdafx.h"
#include "shape2.h"
#include "shape2Dlg.h"
#include "CircularShape.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

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

// 对话框数据
    enum { IDD = IDD_ABOUTBOX };

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
    DECLARE_MESSAGE_MAP()
};

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

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

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// Cshape2Dlg 对话框




Cshape2Dlg::Cshape2Dlg(CWnd* pParent /*=NULL*/)
    : CDialog(Cshape2Dlg::IDD, pParent)
    , m_radius(_T(""))
    , m_height(_T(""))
    , m_area(_T(""))
    , m_volume(_T(""))
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void Cshape2Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_radius);
    DDX_Text(pDX, IDC_EDIT2, m_height);
    DDX_Text(pDX, IDC_EDIT3, m_area);
    DDX_Text(pDX, IDC_EDIT4, m_volume);
    DDX_Control(pDX, IDC_LIST1, m_list);
    DDX_Control(pDX, IDC_EDIT2, m_edit_height);
}

BEGIN_MESSAGE_MAP(Cshape2Dlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    ON_LBN_SELCHANGE(IDC_LIST1, &Cshape2Dlg::OnLbnSelchangeList1)
    ON_BN_CLICKED(IDC_BUTTON1, &Cshape2Dlg::OnBnClickedButton1)
END_MESSAGE_MAP()


// Cshape2Dlg 消息处理程序

BOOL Cshape2Dlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
      CString strAboutMenu;
      strAboutMenu.LoadString(IDS_ABOUTBOX);
      if (!strAboutMenu.IsEmpty())
      {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
      }
    }

    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //执行此操作
    SetIcon(m_hIcon, TRUE);            // 设置大图标
    SetIcon(m_hIcon, FALSE);      // 设置小图标

    // TODO: 在此添加额外的初始化代码
    m_list.AddString("1.圆");

    m_list.AddString("2.圆锥");

    m_list.AddString("3.圆柱");

    m_list.AddString("4.球");

    return TRUE;// 除非将焦点设置到控件,否则返回 TRUE
}

void Cshape2Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
      CAboutDlg dlgAbout;
      dlgAbout.DoModal();
    }
    else
    {
      CDialog::OnSysCommand(nID, lParam);
    }
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//这将由框架自动完成。

void Cshape2Dlg::OnPaint()
{
    if (IsIconic())
    {
      CPaintDC dc(this); // 用于绘制的设备上下文

      SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

      // 使图标在工作矩形中居中
      int cxIcon = GetSystemMetrics(SM_CXICON);
      int cyIcon = GetSystemMetrics(SM_CYICON);
      CRect rect;
      GetClientRect(&rect);
      int x = (rect.Width() - cxIcon + 1) / 2;
      int y = (rect.Height() - cyIcon + 1) / 2;

      // 绘制图标
      dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
      CDialog::OnPaint();
    }
}

//当用户拖动最小化窗口时系统调用此函数取得光标显示。
//
HCURSOR Cshape2Dlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}


void Cshape2Dlg::OnLbnSelchangeList1()
{
    // TODO: 在此添加控件通知处理程序代码
    short int choice;

    m_radius = "";
    m_height = "";
    m_area = "";
    m_volume = "";
    UpdateData(FALSE);

    choice = m_list.GetCurSel();
    if (choice == 0 || choice == 3)
      m_edit_height.SetReadOnly(1);
    else
      m_edit_height.SetReadOnly(0);

}

void Cshape2Dlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    short int choice;
double radius, height;
CCircularShape *p_shape = 0;//定义基类指针p_shape

    UpdateData(TRUE);

    choice = m_list.GetCurSel();
    radius = atof(m_radius);
    if (choice == 1 || choice == 2)
      height = atof(m_height);

    switch(choice)
    {
    case 0 :p_shape = new CCircle(radius);
      break;
    case 1 :p_shape = new CCone(radius,height);
      break;
    case 2 :p_shape = new CCylinder(radius,height);
      break;
    case 3 :p_shape = new CSphere(radius);
      break;
    default :p_shape = 0;
            break;
    }//选择适当的语句在此填空
      m_area.Format("%.2f", p_shape->getSurfaceArea());

    if (choice == 1 || choice == 2 || choice==3)
      m_volume.Format("%.2f", p_shape->getVolume());

    delete p_shape;
    UpdateData(FALSE);

}
嘛,开心是因为终于自己搞定了这个怪东西,看不懂不要紧~我只来宣泄下的.....................

灼眼の咩咩 发表于 2009-5-27 21:40:46

这是。。C语言吗,糟糕啊,程序咱完全不懂,一到程序课就睡的!!

小夕 发表于 2009-5-27 21:42:20

貌似是编程的~~~~

roychan 发表于 2009-5-27 21:42:43

回 1楼(灼眼の咩咩) 的帖子

刚好上课没睡觉才能做出来的..........

lcm8880 发表于 2009-5-27 21:43:55

这个是你的开心方式么~~~~负心汉~~~~
你和C语言一样啊~~~~~

roychan 发表于 2009-5-27 21:44:34

回 4楼(lcm8880) 的帖子

乃个萝卜,我要格式化掉你~

天野とおこ 发表于 2009-5-27 21:46:59

C语言的么可惜我学的是C++

roychan 发表于 2009-5-27 21:49:17

回 6楼(鼻g涕h~os虫t) 的帖子

这就是C++的说....

musquall 发表于 2009-5-27 21:55:20

虽然对编程还算有一定了解,可还是没看明白是什么啊。

炽神绯椛 发表于 2009-5-27 21:55:51

我是完全看不懂。。
页: [1] 2 3
查看完整版本: 真是很开心~~~