资源描述:
《《写计算器》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、4、自己动手写计算器1.0版(1)、得到控件中用户输入的文本GetDlgItemText(hwnd,IDC_EDTNAME,str,sizeof(str));第一个参数是对话框的句柄;第二参数就是控件的id(name);第三个参数就是字符串数组的指针;疑问:为什么不能像MessageBox一样把字符串做为返回值返回呢???这就涉及到C语言中函数返回指针的问题了在函数内部返回函数内构建的指针有可能出现数据混乱.当f1函数在执行的时候,这段内存是被占用的,一旦函数返回,那么内存就标记为可以被其他人、函数占用。如果你把这段内存中的指针返回了,那么一旦其他
2、地方用了这段内存,那么你引用的就是错误的数据了。用GetWindowText、GetDlgItemText的时候为什么要传数组名呢?复习:初学者可以认为数组名就是指针,函数只有得到指针,才能直接操作数组中的数据。(2)c语言中字符串连接:wsprintf(str,”….”,a1,a2);还有sprintf,但是在编写windows程序的时候最好使用wsprintf。//GetDlgItemText(hwnd,IDC_EDITNAME,str,sizeof(str));//第一参数是窗口的句柄,第二个参数是要取得内容的控件的ID//第三个参数就是字符
3、串指针,第四个参数就是指针指向区域的大小TCHARname[256];//为什么不用strlen,sizeof。//如鹏网站内搜索搜“strlen,sizeof”区别//Windows编程中一般都用TCHAR代替char。TCHAR有时候就是char。//解决Unicode、中文编码问题。GetDlgItemText(hwnd,IDC_EDITNAME,name,sizeof(name));//printf是打印到屏幕上//printf("%s你好",name);//sprintf是打印到字符串中//相当于很多C#、Java语言里的字符串相加nam
4、e+"你好"//sprintf(字符串,"...",a1,a2,a3....);TCHARmsg[256];//sprintf(msg,"%s你好",name);//wsprintf,C语言开发Windows程序的时候用wsprintf代替sprintf//解决中文等问题wsprintf(msg,"%s你好",name);MessageBox(hwnd,msg,msg,MB_OK);(3)向用户问好TCHARname[256];GetDlgItemText(hwnd,IDC_EDTNAME,name,sizeof(name)/sizeof(TCHA
5、R));TCHARmsg[256];wsprintf(msg,"%s你好",name);MessageBox(hwnd,msg,TEXT("问好"),MB_OK);(4)C语言里边字符串转换为数字:atoi:asciitoint(5)编写windows程序的时候最好用TCHAR来代替char,可以避免中文的问题caseIDC_BTNHELLO:TCHARname[256];GetDlgItemText(hwnd,IDC_EDTNAME,name,sizeof(name)/sizeof(TCHAR));inti=atoi(name);intj=i*2
6、;TCHARresult[256];itoa(j,result,10);MessageBox(hwnd,result,TEXT("问好"),MB_OK);(6)Get、Set:配对的,设置对话框的值用SetDlgItemText:代码:caseIDC_BTNADD://取第一个文本框的字符串,然后得到整数表示//取第二个文本框的字符串,然后得到整数表示//计算两个整数的和//把和重新转换成字符串,然后Messagebox出来。TCHARcNumber1[256];GetDlgItemText(hwnd,IDC_EDTNUM1,cNumber1,si
7、zeof(cNumber1)/sizeof(TCHAR));intn1=atoi(cNumber1);TCHARcNumber2[256];GetDlgItemText(hwnd,IDC_EDTNUM2,cNumber2,sizeof(cNumber2)/sizeof(TCHAR));intn2=atoi(cNumber2);intn3=n1+n2;TCHARcResult[256];itoa(n3,cResult,10);SetDlgItemText(hwnd,IDC_EDTRESULT,cResult);break;//inti1;//inti
8、2;//不能梦想着直接定义两个int类型的参数,就让windows告诉你两个数的值TCHARstr1[256];TCHAR