Windows 加法计算器文档格式.docx
《Windows 加法计算器文档格式.docx》由会员分享,可在线阅读,更多相关《Windows 加法计算器文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
#defineIDI_SMALL108
#defineIDC_MY109
#defineIDC_MYICON2
#ifndefIDC_STATIC
#defineIDC_STATIC-1
#endif
//新对象的下一组默认值
#ifdefAPSTUDIO_INVOKED
#ifndefAPSTUDIO_READONLY_SYMBOLS
#define_APS_NO_MFC130
#define_APS_NEXT_RESOURCE_VALUE129
#define_APS_NEXT_COMMAND_VALUE32771
#define_APS_NEXT_CONTROL_VALUE1000
#define_APS_NEXT_SYMED_VALUE110
#defineIDI_CALWINAPI107
#defineIDC_CALWINAPI109
加法计算器.cpp
//加法计算器.cpp:
定义应用程序的入口点。
stdafx.h"
#include<
stdio.h>
Resource.h"
#defineMAX_LOADSTRING100
//全局变量:
HINSTANCEhInst;
//当前实例
TCHARszTitle[MAX_LOADSTRING];
//标题栏文本
TCHARszWindowClass[MAX_LOADSTRING];
//主窗口类名
//此代码模块中包含的函数的前向声明:
ATOMMyRegisterClass(HINSTANCEhInstance);
BOOLInitInstance(HINSTANCE,int);
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
INT_PTRCALLBACKAbout(HWND,UINT,WPARAM,LPARAM);
intAPIENTRY_tWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPTSTRlpCmdLine,
intnCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
//TODO:
在此放置代码。
MSGmsg;
HACCELhAccelTable;
//初始化全局字符串
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_MY,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance);
//执行应用程序初始化:
if(!
InitInstance(hInstance,nCmdShow))
{
returnFALSE;
}
hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_MY));
//主消息循环:
while(GetMessage(&
msg,NULL,0,0))
if(!
TranslateAccelerator(msg.hwnd,hAccelTable,&
msg))
{
TranslateMessage(&
msg);
DispatchMessage(&
}
return(int)msg.wParam;
}
ATOMMyRegisterClass(HINSTANCEhInstance)
WNDCLASSEXwcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc=WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MY));
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName=MAKEINTRESOURCE(IDC_MY);
wcex.lpszClassName=szWindowClass;
wcex.hIconSm=LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_SMALL));
returnRegisterClassEx(&
wcex);
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
HWNDhWnd;
hInst=hInstance;
//将实例句柄存储在全局变量中
hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
hWnd)
returnFALSE;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
intwmId,wmEvent;
PAINTSTRUCTps;
HDChdc;
staticHWNDhEdit1,hEdit2,hResult1,hButton1,hStatic1,hStatic2;
staticHWNDhEdit3,hEdit4,hResult2,hButton2,hStatic3,hStatic4;
staticHWNDhEdit5,hEdit6,hResult3,hButton3,hStatic5,hStatic6;
staticHWNDhEdit7,hEdit8,hResult4,hButton4,hStatic7,hStatic8;
switch(message)
caseWM_CREATE:
hEdit1=:
:
CreateWindowA("
EDIT"
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,30,30,100,20,hWnd,(HMENU)IDC_EDIT1,hInst,NULL);
hEdit2=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,230,30,100,20,hWnd,(HMENU)IDC_EDIT2,hInst,NULL);
hEdit3=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,30,130,100,20,hWnd,(HMENU)IDC_EDIT3,hInst,NULL);
hEdit4=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,230,130,100,20,hWnd,(HMENU)IDC_EDIT1,hInst,NULL);
hEdit5=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,30,230,100,20,hWnd,(HMENU)IDC_EDIT3,hInst,NULL);
hEdit6=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,230,230,100,20,hWnd,(HMENU)IDC_EDIT1,hInst,NULL);
hEdit7=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,30,330,100,20,hWnd,(HMENU)IDC_EDIT3,hInst,NULL);
hEdit8=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,230,330,100,20,hWnd,(HMENU)IDC_EDIT1,hInst,NULL);
hResult1=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,430,30,150,20,hWnd,(HMENU)IDC_EDIT2,hInst,NULL);
hResult2=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,430,130,150,20,hWnd,(HMENU)IDC_EDIT3,hInst,NULL);
hResult3=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,430,230,150,20,hWnd,(HMENU)IDC_EDIT3,hInst,NULL);
hResult4=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,430,330,150,20,hWnd,(HMENU)IDC_EDIT3,hInst,NULL);
hButton1=:
BUTTON"
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,30,430,100,20,hWnd,(HMENU)IDC_BUTTON1,hInst,NULL);
hButton2=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,200,430,100,20,hWnd,(HMENU)IDC_BUTTON2,hInst,NULL);
hButton3=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,370,430,100,20,hWnd,(HMENU)IDC_BUTTON3,hInst,NULL);
hButton4=:
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,540,430,100,20,hWnd,(HMENU)IDC_BUTTON4,hInst,NULL);
:
SetWindowText(hButton1,"
加法"
);
SetWindowText(hButton2,"
减法"
SetWindowText(hButton3,"
乘法"
SetWindowText(hButton4,"
除法"
hStatic1=:
STATIC"
NULL,WS_CHILD|WS_VISIBLE,150,30,20,20,hWnd,NULL,hInst,NULL);
hStatic2=:
NULL,WS_CHILD|WS_VISIBLE,350,30,20,20,hWnd,NULL,hInst,NULL);
hStatic3=:
NULL,WS_CHILD|WS_VISIBLE,150,130,20,20,hWnd,NULL,hInst,NULL);
hStatic4=:
NULL,WS_CHILD|WS_VISIBLE,350,130,20,20,hWnd,NULL,hInst,NULL);
hStatic5=:
NULL,WS_CHILD|WS_VISIBLE,150,230,20,20,hWnd,NULL,hInst,NULL);
hStatic6=:
NULL,WS_CHILD|WS_VISIBLE,350,230,20,20,hWnd,NULL,hInst,NULL);
hStatic7=:
NULL,WS_CHILD|WS_VISIBLE,150,330,20,20,hWnd,NULL,hInst,NULL);
hStatic8=:
NULL,WS_CHILD|WS_VISIBLE,350,330,20,20,hWnd,NULL,hInst,NULL);
SetWindowText(hStatic1,"
+"
SetWindowText(hStatic2,"
="
SetWindowText(hStatic3,"
-"
SetWindowText(hStatic4,"
SetWindowText(hStatic5,"
*"
SetWindowText(hStatic6,"
SetWindowText(hStatic7,"
/"
SetWindowText(hStatic8,"
break;
caseWM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
//分析菜单选择:
switch(wmId)
caseIDC_BUTTON1:
//加法
charop1[11],op2[11],result[11];
intn1,n2,nResult;
:
GetWindowText(hEdit1,op1,10);
GetWindowText(hEdit2,op2,10);
n1=atoi(op1);
n2=atoi(op2);
nResult=n1+n2;
sprintf(result,"
%d"
nResult);
SetWindowText(hResult1,result);
break;
caseIDC_BUTTON2:
//减法
charop3[11],op4[11],result1[11];
intn3,n4,nResult1;
GetWindowText(hEdit3,op3,10);
GetWindowText(hEdit4,op4,10);
n3=atoi(op3);
n4=atoi(op4);
nResult1=n3-n4;
sprintf(result1,"
nResult1);
SetWindowText(hResult2,result1);
caseIDC_BUTTON3:
//乘法
charop5[11],op6[11],result2[11];
intn5,n6,nResult2;
GetWindowText(hEdit5,op5,10);
GetWindowText(hEdit6,op6,10);
n5=atoi(op5);
n6=atoi(op6);
nResult2=n5*n6;
sprintf(result2,"
nResult2);
SetWindowText(hResult3,result2);
caseIDC_BUTTON4:
//除法
charop7[11],op8[11],result3[11];
intn7,n8,nResult3;
GetWindowText(hEdit7,op7,10);
GetWindowText(hEdit8,op8,10);
n7=atoi(op7);
n8=atoi(op8);
if(n8==0)
{
:
SetWindowText(hResult4,"
error:
除数不能为0..."
break;
}
nResult3=n7/n8;
sprintf(result3,"
nResult3);
SetWindowText(hResult4,result3);
caseIDM_ABOUT:
DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);
caseIDM_EXIT:
DestroyWindow(hWnd);
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
caseWM_PAINT:
hdc=BeginPaint(hWnd,&
ps);
在此添加任意绘图代码...
EndPaint(hWnd,&
caseWM_DESTROY:
PostQuitMessage(0);
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
return0;
//“关于”框的消息处理程序。
INT_PTRCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)
UNREFERENCED_PARAMETER(lParam);
caseWM_INITDIALOG:
return(INT_PTR)TRUE;
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
EndDialog(hDlg,LOWORD(wParam));
return(INT_PTR)TRUE;
return(INT_PTR)FALSE;
5执行过程截屏
6总结
作了这个作业之后,我对上学期的Windows操作又再一步加深了。
再进一步学习中发现了一些问题。
(1)我并不明白其中的有些句柄的意义。
如
hEdit1=:
NULL,WS_CHILDWS_VISIBLE|WS_BORDER,30,30,100,20,hWnd,(HMENU)IDC_EDIT1,hInst,NULL);
这其中的30,30,100,20到底代表的是什么?
经过我的深入查阅资料才知道,第一个数字其实代表的是X坐标,第二个则是Y坐标,第三个是窗体宽度,第四个则是窗体高度。
(2)因为不熟悉Windows操作,所以经常会写错、泄露等等。