您的位置:首页 > 其它

VC----MFC对话框练习-随机数生成工具

2016-08-24 19:58 281 查看
看了几天的MFC对话框,今天来自己试着写个关于生成随机数的对话框小程序吧,如果想自己制作一个简单的随机数程序,需要考虑哪些元素呢?
1. 首先是如何生成随机数,这里我们使用rand()函数来实现,原型很简单,int rand()会返回一个RAND_MAX即32767范围内的一个随机数;
2. 设计一个图形接口,自己决定使用一个对话框程序来写;
3. 编写事件响应过程,重点是如何进行控件与过程数据的传递,即从空间读取文本值,进行随机数计算后写回到控件;
     好了,下面我们一步一步来实现这个小工具:
一、设计图形接口
     VS2008下新建一个MFC项目,定制为对话框程序,删除默认的“确定“”取消”按钮,添加两个编辑框用于输入和输出,添加静态文本框用于说明,添加按钮用于执行随机数生成过程:



二、添加按钮响应过程
     双击“生成随机数”按钮,进入到CrandDlg::OnBnClickedButton1()函数,使用以下函数来实现我们的功能:
-CWnd::GetWindowTextW(str):获取控件的文本值,保存在CString str中;
-CWnd::SetWindowTextW(str_last):将str_last设置为控件的文本值;
-_itow与_wtoi:实现文本值与Int值的转换;

点击(此处)折叠或打开

void CrandDlg::OnBnClickedButton1()

{

   

    CString str;

    if (GetDlgItem(IDC_MAX)->GetWindowTextW(str), str == L'0')

    {

        m_mod = RAND_MAX;

    }

    else

    {

    int m_mod = (GetDlgItem(IDC_MAX)->GetWindowTextW(str), _wtoi(str));

    }

    wchar_t str_last[10];

    int num = rand()%m_mod;

    _itow(num, str_last, 10);

    GetDlgItem(IDC_SHOW)->SetWindowTextW(str_last);

    // TODO: 在此添加控件通知处理程序代码

}

      代码中需要对用户输入的最大范围进行判断,默认使用RAND_MAX作为随机数生成范围。除了这种自己去实现与控件的数据通信之外,更加简便的方法是直接为控件绑定变量,然后直接对变量进行指定类型的操作,而这需要MFC使用DoDataExchange函数来实现控件与类成员变量的数据交换,我们需要调用UpdateData函数来实现:
-默认TRUE参数,从控件获取数据,数据从控件流向类成员变量;
-指定FALSE参数,对控件进行初始化,数据从类成员变量流向控件;

点击(此处)折叠或打开

UpdateData(); //数据流:控件-->类成员变量

    if (m_Max == 0)

        m_mod = RAND_MAX;

    else

        m_mod = m_Max;

    m_rand = rand() % m_mod;

    UpdateData(FALSE); //数据流:类成员变量-->控件

      运行的结果都是一样的,但是后一种方法则要简单地多:
     未指定随机数生成范围:



     指定随机数生成范围为1000:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: