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:
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:
相关文章推荐
- MFC三层模式标准版V1.5版演示源码(VC++代码生成,VC非托管代码,基于对话框程序)
- [转][VC/MFC]让对话框对UPDATE_COMMAND_UI生效
- 2007.3.7--C++学习日记--MFC--用VC调用Shell中的目录浏览对话框
- VC++创建个性的对话框之MFC篇
- VC++创建个性的对话框之MFC篇
- 给MFC对话框控件添加工具提示Tips
- 用vc6生成win32对话框程序的简单方法
- VC++ 中改变对话框及相关控件的背景色(MFC)
- vc中改变对话框的背景色(MFC)
- VC++, MFC中实现选择文件夹,选择文件对话框,确定当前工作目录(转载)
- cygwin跨平台移植开发系列2--so2lib实用工具(把cygwin生成的so或dll转换成vc可调用的lib)
- 在VC.net MFC对话框中调用C#组件
- VC2005MFC对话框中radio button选择情况
- VC/MFC如何设置对话框背景颜色
- 接触VC之三:MFC基于对话框程序
- 孙鑫vc++ 第九课 笔记 修改MFC AppWizard向导生成的框架程序的外观和大小
- 关于在VC++ 的MFC 下INI文件的生成和运用
- VC/MFC对话框的动画弹出和动画消隐
- 简单而强大的多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
- 更改对话框和框架窗口图标 (VC/MFC)