快捷导航
查看: 1658|回复: 22

真是很开心~~~

[复制链接]

五更瑠璃

发表于 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 | 显示全部楼层
貌似是编程的~~~~

五更瑠璃

 楼主| 发表于 2009-5-27 21:42:43 | 显示全部楼层

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

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

银色汞灯

发表于 2009-5-27 21:43:55 | 显示全部楼层
这个是你的开心方式么~~~~负心汉~~~~
你和C语言一样啊~~~~~

五更瑠璃

 楼主| 发表于 2009-5-27 21:44:34 | 显示全部楼层

回 4楼(lcm8880) 的帖子

乃个萝卜,我要格式化掉你~
发表于 2009-5-27 21:46:59 | 显示全部楼层
C语言的么  可惜我学的是C++

五更瑠璃

 楼主| 发表于 2009-5-27 21:49:17 | 显示全部楼层

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

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

圣天使神猫

发表于 2009-5-27 21:55:20 | 显示全部楼层
虽然对编程还算有一定了解,可还是没看明白是什么啊。

宫永咲

发表于 2009-5-27 21:55:51 | 显示全部楼层
我是完全看不懂。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

御宅梦域

关于我们 商务合作 免责声明

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

反馈

投诉举报 意见反馈 用户协议 论坛规则

须知: 切勿滥用举报,任何与举报相关的信息必须属实!

手机版|Archiver|御宅梦域 |网站地图

GMT+8, 2024-11-15 07:26 , Processed in 0.058055 second(s), 66 queries , Gzip On.

快速回复 返回顶部 返回列表