对于一个Windows窗口计算器小程序 解释
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}
return FALSE;
}
//初始化时加载COMBOBOX的内容项。
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1);
ComboBox_InsertString(hwndCombo1,-1,TEXT("+"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("-"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("x"));
ComboBox_InsertString(hwndCombo1,-1,TEXT("%"));
return TRUE;
}
//布尔函数 返回值为FALSE或TRUE,此判断某个字符串是否为字母。
BOOL Isik(TCHAR* stik)
{
int i=atoi(stik);
TCHAR strc[256];
wsprintf(strc,"%i",i);
if(strcmp(stik,strc)==0)
{
return FALSE;
}
else
{
return TRUE;
}
}
//布尔函数判断是否为空。
BOOL Isint(TCHAR* stem)
{
TCHAR emp[256]="";
if(strcmp(emp,stem)!=0)
{
return TRUE;
}
else
{
return FALSE;
}
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];
TCHAR str2[256];
GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1)); /*获得EDIT的字符*/
GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));
if(Isint(str1)==FALSE)
{
MessageBox(hwnd,TEXT("运算符号两端均不能为空!"),TEXT("警告"),MB_OK); /*调用布尔函数 判断是否为空和是否为数字*/
return;
}
if(Isint(str2)==FALSE)
{
MessageBox(hwnd,TEXT("运算符号两端均不能为空!"),TEXT("警告"),MB_OK);
return;
}
if(Isik(str1)!=FALSE)
{
MessageBox(hwnd,TEXT("运算符号两端必须为数字!"),TEXT("警告"),MB_OK);
return;
}
if(Isik(str2)!=FALSE)
{
MessageBox(hwnd,TEXT("运算符号两端必须为数字!"),TEXT("警告"),MB_OK);
return;
}
int i1=atoi(str1);
int i2=atoi(str2);
int i3;
HWND hwndCombo1 = GetDlgItem(hwnd,IDC_COMBO1); /*获得COMBOBOX的句柄,并获取COMBOBOX每项的位置(cur)*/
int cur = ComboBox_GetCurSel(hwndCombo1);
switch (cur) /*判断运算符号*/
{
case 0:
{
i3=i1+i2;
}
break;
case 1:
{
i3=i1-i2;
}
break;
case 2:
{
i3=i1*i2;
}
break;
case 3:
{
i3=i1/i2;
}
break;
}
TCHAR str3[256];
wsprintf(str3,"%i",i3);
SetDlgItemText(hwnd,IDC_EDIT3,str3);
}
break;
default:
break;
}
}
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}