C语言也能干大事编程项目开发计算器编程Word格式文档下载.docx
- 文档编号:22598392
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:50
- 大小:28.16KB
C语言也能干大事编程项目开发计算器编程Word格式文档下载.docx
《C语言也能干大事编程项目开发计算器编程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言也能干大事编程项目开发计算器编程Word格式文档下载.docx(50页珍藏版)》请在冰豆网上搜索。
#defineMB_OK(确定)0x00000000L
#defineMB_OKCANCEL(确定和取消)0x00000001L
#defineMB_ABORTRETRYIGNORE(终止、重试和忽略)0x00000002L
#defineMB_YESNOCANCEL(是、否和取消)0x00000003L
#defineMB_YESNO(是和否)0x00000004L
#defineMB_RETRYCANCEL(重试和取消)0x00000005L
定义了一个int型变量,说明“MB_YESNO|MB_ICONASTERISK”运算(是或运算)之后的结果是一个整型数据。
“MessageBox()”括号里面有四个参数,第一个参数:
hWnd:
标识将被创建的消息框的拥有窗口。
如果此参数为NULL,则消息框没有拥有窗口;
第二个参数:
用“TEXT”包起来的字符串,表示框内的内容。
第三个参数:
用“TEXT”包起来的字符串,表示框的标题;
第四个参数:
设置希望在对话框中显示的按钮或图标,“MB_ICONASTERISK”就是表示“警告”的图标,像这样的图标的还有:
#defineMB_ICONHAND(错误“X”状图标)0x00000010L
#defineMB_ICONQUESTION(问号图标)0x00000020L
#defineMB_ICONEXCLAMATION(感叹号警告图标)0x00000030L
#defineMB_ICONASTERISK(感叹号图标)0x00000040L
*/
if(IDYES==ret1)
{
MessageBox(NULL,TEXT("
哼哼,一看就知道你不是好人"
鉴定结果"
),MB_OK|MB_ICONASTERISK);
}
elseif(IDNO==ret1)
intret2=MessageBox(NULL,TEXT("
哈哈,算你有自知之明。
你想变成一个好人吗?
),MB_OK);
if(IDOK==ret2)
{
MessageBox(NULL,TEXT("
sorry!
尝试把你变成好人失败..."
无力回天"
),MB_OK|MB_ICONEXCLAMATION);
由于你的人品问题,现在开始格式化C盘..."
处理办法"
}
return0;
}
/*if语句里面的IDYES是返回值,返回值为用户点击的按钮:
(注意:
以后我们在判断条件时,把变量写在等号的右边,这样做的目的就是能够在把等号“==”写成赋值号“=”情况下不能通过编译,快速发现错误。
如果把变量写在等号的左边,就变成赋值表达式了,赋值表达式如果是真,就通过了编译,导致不知道错误在哪儿。
)像这样的返回值还有:
#defineIDOK1
#defineIDCANCEL2
#defineIDABORT3
#defineIDRETRY4
#defineIDIGNORE5
#defineIDYES6
#defineIDNO7
第二节:
开发一个注册界面
本节没有代码,讲一下一些控件的使用:
第三节:
制作一个能计算加减乘除的计算器(V1.0版)和一个十进制转二进制的小工具。
当用户输入非数字或给除数输入0时,要给出错误提示信息。
#include<
windows.h>
windowsx.h>
resource.h"
MainDlg.h"
BOOLWINAPIMain_Proc(HWNDhWnd,UINTuMsg,WPARAMwParam,LPARAMlParam)
switch(uMsg)
HANDLE_MSG(hWnd,WM_INITDIALOG,Main_OnInitDialog);
HANDLE_MSG(hWnd,WM_COMMAND,Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE,Main_OnClose);
returnFALSE;
BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam)
returnTRUE;
BOOLIsInt(TCHAR*str)
inti=atoi(str);
TCHARstemp[256];
wsprintf(stemp,"
%i"
i);
if(strcmp(str,stemp)!
=0)
returnFALSE;
else
returnTRUE;
/*在这儿定义了一个类型为BOLL的被掉函数IsInt(),返回值是BOOL型,bool为布尔型,只有一个字节,取值false和true,是0和1的区别。
函数的参数是一个字符型指针,接受实参传过来的地址(这里是字符型数组的首地址)。
函数atoi()的功能是将字符串转化为整型数。
函数说明:
参数字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符\0)字符时停止转换,返回整型数。
要有头文件:
#include<
stdlib.h>
。
函数wsprintf()的作用:
将一系列的字符和数值输入到缓冲区;
输出缓冲区里的的值取决于格式说明符(即"
%"
);
如果写入的是文字,此函数给写入的文字的末尾追加一个'
\0'
;
函数的返回值是写入的长度,但不包括最后的'
wsprintf()包含在头文件windows.h中。
我们可以这样来理解:
wsprintf(缓冲区,格式,要格式化的值);
第一个参数是字符缓冲区,后面是格式字符串,wsprintf不是将格式化结果写到标准输出,而是将其写入缓冲区中,该函数返回该字符串的长度。
Strcmp()函数:
原型:
externintstrcmp(char*s1,char*s2);
用法:
string.h>
功能:
比较字符串s1和s2。
说明:
当s1<
s2时,返回值<
当s1=s2时,返回值=0
当s1>
s2时,返回值>
*/
voidMain_OnCommand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)
/*按钮被按下的时候Main_OnCommand方法被调用,hwnd是对话框句柄(什么是句柄后面讲,通俗的说就是通过它能够操纵对话框),id是控件的id,后两个参数暂时不关心。
Main_OnCommand方法中根据id,也就是被点击按钮的名字来决定不同的动作,从而和匹配case匹配。
Hwnd是当前窗口的句柄,句柄就是把柄!
操作一个东西,要先抓住他的把柄!
通过句柄就可以操作这个对象。
*/
switch(id)
caseIDC_OK:
MessageBox(hwnd,TEXT("
嘿嘿...同志,你走错门了!
嘿嘿"
break;
caseIDC_BUTTON1:
//如果按下该按钮执行
TCHARstr1[256],str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
/*GetDlgItemText就是“得到对话框项目文本”的意思(暂时可以这样理解)
Hwnd就是控件的句柄,IDC_EDIT1就是编辑框1,
参数说明:
调用这个函数以获得与对话框中的控件相关的标题或文本。
GetDlgItemText成员函数将文本拷贝到str1指向的位置并返回拷贝的字节的数目。
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
if(FALSE==IsInt(str1))
{
MessageBox(hwnd,TEXT("
sorry,你的第一个数输入有误!
错误!
),MB_OK|MB_ICONHAND);
return;
//注意:
不要掉了,不然会在错误的情况下得到结果
}
if(FALSE==IsInt(str2))
sorry,你的第二个数输入有误!
inti1=atoi(str1);
inti2=atoi(str2);
inti3=i1+i2;
TCHARstr3[256];
wsprintf(str3,"
i3);
SetDlgItemText(hwnd,IDC_EDIT3,str3);
//可以理解为:
把str3指定的内容拷贝到得到句柄的编辑框内
break;
caseIDC_BUTTON2:
TCHARstr1[256],str2[256];
GetDlgItemText(hwnd,IDC_EDIT4,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT5,str2,sizeof(str2));
if(FALSE==IsInt(str1))
inti1=atoi(str1);
inti3=i1-i2;
TCHARstr3[256];
wsprintf(str3,"
SetDlgItemText(hwnd,IDC_EDIT6,str3);
caseIDC_BUTTON3:
GetDlgItemText(hwnd,IDC_EDIT7,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT8,str2,sizeof(str2));
inti3=i1*i2;
SetDlgItemText(hwnd,IDC_EDIT9,str3);
caseIDC_BUTTON4:
GetDlgItemText(hwnd,IDC_EDIT10,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT11,str2,sizeof(str2));
if(i2==0)
{
MessageBox(hwnd,TEXT("
笨蛋!
除数不能为零!
return;
}
inti3=i1/i2;
SetDlgItemText(hwnd,IDC_EDIT12,str3);
caseIDC_BUTTON5:
TCHARstr1[256];
GetDlgItemText(hwnd,IDC_EDIT13,str1,sizeof(str1));
if(FALSE==IsInt(str1))
sorry,你的输入有误!
TCHARstr2[256];
itoa(i1,str2,2);
/*函数itoa(参数1,参数2,参数3);
功能:
把一整数转换为字符串
用法:
itoa(i,num,10);
i----需要转换成字符串的数字
num----转换后保存字符串的变量
10----转换数字的基数(即进制)。
10就是说按10进制转换数字。
还可以是2,8,16等等你喜欢的进制类型
返回值:
指向num这个字符串的指针
SetDlgItemText(hwnd,IDC_EDIT14,str2);
break;
voidMain_OnClose(HWNDhwnd)
EndDialog(hwnd,0);
第四节:
开发一个计算器(V2.0版)和一个小工具(功能:
用户任意输入年月日后显示这一年是平年还是闰年,并且告诉用户这一天是星期几)。
1.上述两个工具在一个界面上实现。
2.如果用户输入的年月日不符合实际(比如:
在平年的2月输入29日...)、除数为零等都要报错。
HWNDhwndcombo1=GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_InsertString(hwndcombo1,-1,TEXT("
加"
));
减"
乘"
除以"
/*当对话框接收到WM_INITDIALOG消息时,就会执行函数BOOLMain_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam),一般一些初始化的变量之类的都写这个函数内进行初始化。
HWNDhwndcombo1=GetDlgItem(hwnd,IDC_COMBO1);
是定义一个HWND类型的量,通过函数GetDlgItem()来获取控件“IDC_COMBO1"
的句柄,并赋值给hwndcombo1.而ComboBox_InsertString(hwndcombo1,-1,TEXT("
是将得到的控件内加入内容,其中参数:
hwndcombo1是得到的控件的句柄,关于参数-1的说明请看“Thezero-basedindexatwhichtoinsertthestring,or–1toaddittotheendofthelist.”我的翻译——“从0开始以什么样的指标插入字符串,或1到把它添加到列表的末尾”,呵呵,还差强人意吧,用这个“函数”为了使添加内容的顺序按照自己意图实现,如果用“函数”(因为不是真正的函数,其实是宏)ComboBox_AddString()进行添加内容会出现乱序的现象,就不会是“加减乘除”的顺序了*/
intIsInt(TCHAR*str)
TCHARstr1[256];
itoa(i,str1,10);
if(strcmp(str,str1)!
intfun(inta,intb,intc)
intp,q,p1=28,p2=29;
if(a%400==0||a%4==0&
&
a%100!
=0)
p=p2;
elseif(a%4!
p=p1;
switch(b)
case1:
q=c;
break;
case2:
q=31+c;
case3:
q=31+p+c;
case4:
q=31+p+31+c;
case5:
q=31+p+31+30+c;
case6:
q=31+p+31+30+31+c;
case7:
q=31+p+31+30+31+30+c;
case8:
q=31+p+31+30+31+30+31+c;
case9:
q=31+p+31+30+31+30+31+31+c;
case10:
q=31+p+31+30+31+30+31+31+30+c;
case11:
q=31+p+31+30+31+30+31+31+30+31+c;
case12:
q=31+p+31+30+31+30+31+31+30+31+30+c;
returnq;
Sorry!
由于你的人品出现了问题,系统不允许你退出...嘿嘿^-^"
嘿嘿^-^"
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
inti1=atoi(str1);
inti3=0;
HWNDhwndcombo1=GetDlgItem(hwnd,IDC_COMBO1);
intcurIndex=ComboBox_GetCurSel(hwndcombo1);
/*定义了一个整型变量来表示添加内容的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言也能干大事 编程 项目开发 计算器编程 语言 能干 大事 项目 开发 计算器