用C语言做个简单的计算机,下面是代码,请问下资源文件在哪里编写,要新建什么文件

yuan85781 2012-07-15 03:49:16
还是先做界面,先写资源文件。
/***********MyCalculator.rc**************/

#include <resource.h>

#define ICO_MAIN 0X1000
#define DLG_MAIN 1

#define IDB_0 0X4400 //0
#define IDB_1 0X4401 //1
#define IDB_2 0X4402 //2
#define IDB_3 0X4403 //3
#define IDB_4 0X4404 //4
#define IDB_5 0X4405 //5
#define IDB_6 0X4406 //6
#define IDB_7 0X4407 //7
#define IDB_8 0X4408 //8
#define IDB_9 0X4409 //9
#define IDB_PLUS 0X4410 //+
#define IDB_SUB 0X4411 //-
#define IDB_EQU 0X4412 //=
#define IDB_DOT 0X4413 //.
#define IDB_PAS 0X4414 //正负号
#define IDB_EDIT 0x4415 //编辑框

ICO_MAIN ICON "xhk.ico"

DLG_MAIN DIALOG 300,150,102,140 STYLE DS_SETFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "我的计算器"
FONT 9,"宋体"
{
//定义编辑框控件
EDITTEXT IDB_EDIT,7,10,86,17,ES_RIGHT

PUSHBUTTON "7",IDB_7,5,30,23,17
PUSHBUTTON "8", IDB_8, 38,30,23,17
PUSHBUTTON "9",IDB_9,71,30,23,17

PUSHBUTTON "4",IDB_4,5,52,23,17
PUSHBUTTON "5",IDB_5,38,52,23,17
PUSHBUTTON "6",IDB_6,71,52,23,17

PUSHBUTTON "1",IDB_1,5,74,23,17
PUSHBUTTON "2",IDB_2,38,74,23,17
PUSHBUTTON "3",IDB_3,71,74,23,17

PUSHBUTTON "0",IDB_0,5,92,23,17
PUSHBUTTON "+/-",IDB_PAS,38,92,23,17
PUSHBUTTON ".",IDB_DOT,71,92,23,17

PUSHBUTTON "+",IDB_PLUS,5,114,23,17
PUSHBUTTON "-",IDB_SUB,38,114,23,17
PUSHBUTTON "=",IDB_EQU,71,114,23,17
}
下面还是主程序代码:
/***********MyCalculator.c**************/

#include <windows.h>
#include <stdio.h>

#define ICO_MAIN 0X1000
#define DLG_MAIN 1

#define IDB_0 0X4400 //0
#define IDB_1 0X4401 //1
#define IDB_2 0X4402 //2
#define IDB_3 0X4403 //3
#define IDB_4 0X4404 //4
#define IDB_5 0X4405 //5
#define IDB_6 0X4406 //6
#define IDB_7 0X4407 //7
#define IDB_8 0X4408 //8
#define IDB_9 0X4409 //9
#define IDB_PLUS 0X4410 //+
#define IDB_SUB 0X4411 //-
#define IDB_EQU 0X4412 //=
#define IDB_DOT 0X4413 //.
#define IDB_PAS 0X4414 //正负号
#define IDB_EDIT 0x4415 //编辑框


int num1=0;//定义了第一个数字
int num2=0;//定义了第二个数字
char s[10];//为了方面参数的传递,定义了这个全局变量,完全没有这个必要
UINT uFlags=1;//标识是否按下了加号或者等号,切换给num1和num2赋值
char oPration='+';//操作符标志,判断按下的是什么操作符,默认为加

//把字符串转化成数字
int StrToNum(char * str)
{
return atoi(str);
}

//把数字转化成字符串
char * NumToStr(int nNum)
{

itoa(nNum,s,10);
return s;

}

//修改编辑框控件的文字
int SetEditValue(int nNum,HWND hEdit)
{
if(uFlags==1)
{
num1 = num1*10+nNum;//可以使数字进位(向左移)
SetWindowText(hEdit,NumToStr(num1));
}
else
{
num2 = num2*10+nNum;//可以使数字进位(向左移)
SetWindowText(hEdit,NumToStr(num2));
}
return 0;
}

LRESULT WINAPI DialogProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
HICON hIcon;
HWND hEdit = GetDlgItem(hWnd,IDB_EDIT);
switch(Msg)
{
case WM_INITDIALOG:
//设置图标
hIcon = LoadIcon(GetModuleHandle("MyCalculator.exe"),MAKEINTRESOURCE(ICO_MAIN));
SendMessage(hWnd,WM_SETICON,ICON_BIG,(long)hIcon);
SetWindowText(hEdit,"0.");//让编辑框控件的内容为"0."
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))//LOWORD(wParam)用来取出命令ID
{
//一下处理过程可以更简单的,大家自己想想,看怎样处理好
//自己完成计算器可以满足支持小数点和正负号
case IDB_0:
SetEditValue(0,hEdit);
break;
case IDB_1:
SetEditValue(1,hEdit);
break;
case IDB_2:
SetEditValue(2,hEdit);
break;
case IDB_3:
SetEditValue(3,hEdit);
break;
case IDB_4:
SetEditValue(4,hEdit);
break;
case IDB_5:
SetEditValue(5,hEdit);
break;
case IDB_6:
SetEditValue(6,hEdit);
break;
case IDB_7:
SetEditValue(7,hEdit);
break;
case IDB_8:
SetEditValue(8,hEdit);
break;
case IDB_9:
SetEditValue(9,hEdit);
break;
case IDB_PLUS:
oPration = '+';
uFlags=0;
break;
case IDB_SUB:
oPration = '-';
uFlags=0;
break;
case IDB_DOT:
MessageBox(hWnd,"自己写代码让计算器支持小数点","提示",MB_OK);
break;
case IDB_PAS:
MessageBox(hWnd,"自己写代码让计算器支持负数","提示",MB_OK);
break;
case IDB_EQU:
//按等号,显示结果,并把num1和num2清零,准备下一次运算
if(oPration=='+')
SetWindowText(hEdit,NumToStr(num1+num2));
else
SetWindowText(hEdit,NumToStr(num1-num2));
uFlags=1;
num1=0;
num2=0;
break;
}

break;
case WM_CLOSE://关闭消息
EndDialog(hWnd,0);//终止模态对话框
return TRUE;
}
return FALSE;
}

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
//很简单的创建了窗口
DialogBoxParam(hInstance,MAKEINTRESOURCE(DLG_MAIN),NULL,DialogProc,0);
return 1;
}
...全文
194 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuan85781 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
没做过这个代码,不过看到这么多的switch语句,让我想起了c和指针里关于函数指针那部分的应用。楼主可以看看。
[/Quote]
其实我就想知道资源文件那部分要怎么编写而已
沣洨渔翁 2012-07-15
  • 打赏
  • 举报
回复
没做过这个代码,不过看到这么多的switch语句,让我想起了c和指针里关于函数指针那部分的应用。楼主可以看看。
yuan85781 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
我觉得这个简单的话用MFC做会比你用Win32做要稍微快点。
[/Quote]
我就是用这代码自己编写出来试试看,然后上面那个资源文件的代码不知道怎么编写,求高手指教啊
W170532934 2012-07-15
  • 打赏
  • 举报
回复
我觉得这个简单的话用MFC做会比你用Win32做要稍微快点。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧