//////////////////////////////小计算器 部分代码////
#include <windows.h>
#include <windowsx.h>
#include "main.h"
#include "dialogs.h"
#include "resource.h"
#include "rsrc.inc"
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
//BEGIN MESSAGE CRACK
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
//END MESSAGE CRACK
}
return FALSE;
}
////////////////////////////////////////////////////////////////////////////////
// Main_OnInitDialog
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
// Set app icons
HICON hIcon = LoadIcon((HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE) ,MAKEINTRESOURCE(IDI_ICONAPP));
SendMessage(hwnd, WM_SETICON, TRUE, (LPARAM)hIcon);
SendMessage(hwnd, WM_SETICON, FALSE, (LPARAM)hIcon);
//////////////////////////////////////////
//
SendDlgItemMessage(hwnd,IDC_CBOOPERATOR,CB_ADDSTRING,0,(LPARAM)TEXT("+"));
SendDlgItemMessage(hwnd,IDC_CBOOPERATOR,CB_ADDSTRING,0,(LPARAM)TEXT("-"));
SendDlgItemMessage(hwnd,IDC_CBOOPERATOR,CB_ADDSTRING,0,(LPARAM)TEXT("*"));
SendDlgItemMessage(hwnd,IDC_CBOOPERATOR,CB_ADDSTRING,0,(LPARAM)TEXT("/"));
SendDlgItemMessage(hwnd,IDC_CBOZHUANHUAN,CB_ADDSTRING,0,(LPARAM)TEXT("2进制"));
SendDlgItemMessage(hwnd,IDC_CBOZHUANHUAN,CB_ADDSTRING,0,(LPARAM)TEXT("8进制"));
SendDlgItemMessage(hwnd,IDC_CBOZHUANHUAN,CB_ADDSTRING,0,(LPARAM)TEXT("10进制"));
SendDlgItemMessage(hwnd,IDC_CBOZHUANHUAN,CB_ADDSTRING,0,(LPARAM)TEXT("16进制"));
//
// Add initializing code here
//
return TRUE;
}
////////////////////////////////////////////////////////////////////////////////
// Main_OnCommand
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_BTNEQUALS:
Calc(hwnd);
break;
case IDC_BTNQUIT:
EndDialog(hwnd,0);
break;
case IDC_BTNCHANGE:
CHANGE(hwnd);
break;
default:break;
}
}
//////////////////////////////////
//计算
void Calc(HWND hwnd)
{
BOOL bERROR = FALSE; //定义布尔值,判断出错位
TCHAR cNumber1[256],cNumber2[256];
if( GetDlgItemText(hwnd,IDC_EDTNUM1,cNumber1,sizeof(cNumber1)/sizeof(TCHAR))==0,
GetDlgItemText(hwnd,IDC_EDTNUM2,cNumber2,sizeof(cNumber2)/sizeof(TCHAR))==0)
{
MessageBox(NULL,TEXT("请写全运算数!"),TEXT("错误"),MB_OK|MB_ICONWARNING);
bERROR = TRUE;
}
int iIndex = SendDlgItemMessage(hwnd,IDC_CBOOPERATOR,CB_GETCURSEL,0,0);
float f1 = atof(cNumber1);
float f2 = atof(cNumber2);
float fResult;
switch(iIndex)
{
case 0:
fResult = f1+f2;
break;
case 1:
fResult = f1-f2;
break;
case 2:
fResult = f1*f2;
break;
case 3:
if(f2!=0)
{
fResult = f1/f2;
}
else
{
MessageBox(NULL,TEXT("被除数不能为零!"),TEXT("警告"),MB_OK|MB_ICONWARNING);
bERROR = TRUE;
}
break;
default:
MessageBox(NULL,TEXT("请选择运算符!"),TEXT("错误"),MB_OK|MB_ICONERROR);
bERROR = TRUE;
break;
}
if(FALSE==bERROR)
{
TCHAR cResult[256];
gcvt(fResult,8,cResult); //功 能: 把浮点数转换成字符串
SetDlgItemText(hwnd,IDC_EDTRESULT,cResult);
}
}
//////////////////////////////////////////
//转换函数
void CHANGE(HWND hwnd)
{
BOOL bERROR = FALSE;
TCHAR cNumber3[256],cNumber4[256];
int iIndex2 = SendDlgItemMessage(hwnd,IDC_CBOZHUANHUAN,CB_GETCURSEL,0,0);
if(GetDlgItemText(hwnd,IDC_EDTNUM3,cNumber3,sizeof(cNumber3)/sizeof(TCHAR))==0) //返回GetDlgItemText函数值并判断用户是否写入字符
{
MessageBox(NULL,TEXT("请选择待转换数!"),TEXT("提示"),MB_OK|MB_ICONWARNING);
bERROR = TRUE;
}
int i3 = atoi(cNumber3);
switch(iIndex2)
{
case 0:
itoa(i3,cNumber4,2);
break;
case 1:
itoa(i3,cNumber4,8);
break;
case 2:
itoa(i3,cNumber4,10);
break;
case 3:
itoa(i3,cNumber4,16);
break;
default:
MessageBox(NULL,TEXT("请选择转换进制!"),TEXT("错误"),MB_OK|MB_ICONERROR);
bERROR = TRUE;
break;
}
if(FALSE ==bERROR)
{
SetDlgItemText(hwnd,IDC_EDTRESULTB,cNumber4);
}
}
////////////////////////////////////////////////////////////////////////////////
// Main_OnClose
void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
} |