您的位置:首页 > 其它

win32强化练习2.1_简单加法计算器(界面文本与数据的读取和显示)

2016-11-19 11:11 281 查看
界面制作与数据的显示和获取

一个窗口程序由界面+功能组成。

对话框程序很常用的原因之一就是有所见即所得的资源编辑器;

VS的资源编辑器很好用,而免费的ResEdit也很好用(搜索ResEdit即可);

这一节最主要的是了解如何从界面上获取数据,又如何把数据显示在界面上。

(字符串) SetDlgItemTextGetDlgItemText

(整数)   SetDlgItemInt   GetDlgItemInt

其中,Text使用更常见一些,而整数的使用更简便一些。

UINT GetDlgItemInt(HWND hDlg,int nlDDlgltem,BOOL *IpTranslated,BOOL bSigned);
(1)hDlg:指向含有利益控制的对话框的句柄。
(2)nlDDlgltem:指定文本将被转变的控制的对话项目标识符。
(3)IpTranslated:指向一个Boolean变量的指针。该变量保存函数成功/失败的值。
TRUE表示成功,FALSE表示失败。此参数为可选的。它可以为NULL。
(4)bSigned:指定函数足否在开始时为一个最小的消息检测文本,且如果发现一个消息整型值,则返回它。
TRUE指定应该这样做,FALSE指定不应该这样做。

BOOL SetDlgItemInt(HWND hDlg,int nIDDlgItem,UINT uValue,BOOL bSigned);
(1)hDlg:指向对话框窗口的句柄。
(2)nIDDlgItem:要改变其文本的控件ID。
(3)uValue:指向要设置的值。
(4)bSigned:指定uValue是否为一个有符号的值。


完成后的程序就是这个样子:



1. 使用int非常简便:

//获取字符串输入
//将字符串转换为数字进行计算
int iPlus1,iPlus2,iOut;
iPlus1 = GetDlgItemInt(hwnd, IDC_EDIT1,NULL,0);
iPlus2 = GetDlgItemInt(hwnd, IDC_EDIT2,NULL,0);
iOut = iPlus1 + iPlus2;
//将计算结果转换成字符串输出
SetDlgItemInt(hwnd, IDC_EDIT3,iOut,0);


2. 使用字符串需要将字符串与数值之间进行转换,至少有2种方式可以使用:
2.1 使用atoi, itoa函数

//获取字符串输入
CHAR str1[10]= {0},str2[10]={0};
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
//将字符串转换为数字进行计算
int iPlus1,iPlus2,iOut;
iPlus1 = atoi(str1);
iPlus2 = atoi(str2);
iOut = iPlus1 + iPlus2;
//将计算结果转换成字符串输出
CHAR strOut[10] = {0};
itoa(iOut, strOut, 10);
SetDlgItemText(hwnd, IDC_EDIT3, strOut);

2.2 使用sscanf,sprintf函数(如果界面上真的会输入AE  FF这类16进制的数字,上面的atoi是会挂掉的!)

sscanf(str1,"%d",&iPlus1); //替换iPlus1 = atoi(str1);
sscanf(str2,"%d",&iPlus2); //替换iPlus2 = atoi(str2);
sprintf(strOut,"%d",iOut); //替换itoa(iOut, strOut, 10);

这一节,主要是加深对界面文本转换成数字并进行计算,然后把计算结果再以文本形式显示在界面上的理解,对于Windows窗口程序,做的很多的事情就是需要用户输入,并把用户输入的文本转换成程序可以使用的数据类型,然后反馈给用户。

这个练习可以用对话框模板进行,界面简单制作在2~3分钟左右,程序的编写应该控制在3分钟内完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WIN32