| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2181 人关注过本帖
标题:C++的计算器怎么做
只看楼主 加入收藏
wangfeng2500
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-8-29
收藏
 问题点数:0 回复次数:7 
C++的计算器怎么做
C++的计算器怎么做,那位大哥帮帮忙啊!
搜索更多相关主题的帖子: 计算器 
2006-10-29 21:51
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

windwows api 写的....如果用c++写呢, 数据结构上都有描述
HEXCALC.C

/*------------------------------------------------------------------------

HEXCALC.C -- Hexadecimal Calculator

(c) Charles Petzold, 1998

-------------------------------------------------------------------------*/

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("HexCalc") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;



wndclass.style = CS_HREDRAW | CS_VREDRAW;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = DLGWINDOWEXTRA ; // Note!

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (hInstance, szAppName) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1) ;

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;



if (!RegisterClass (&wndclass))

{

MessageBox ( NULL, TEXT ("This program requires Windows NT!"),

szAppName, MB_ICONERROR) ;

return 0 ;

}



hwnd = CreateDialog (hInstance, szAppName, 0, NULL) ;

ShowWindow (hwnd, iCmdShow) ;

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}

void ShowNumber (HWND hwnd, UINT iNumber)

{

TCHAR szBuffer[20] ;

wsprintf (szBuffer, TEXT ("%X"), iNumber) ;

SetDlgItemText (hwnd, VK_ESCAPE, szBuffer) ;

}

DWORD CalcIt (UINT iFirstNum, int iOperation, UINT iNum)

{

switch (iOperation)

{

case '=': return iNum ;

case '+': return iFirstNum + iNum ;

case '-': return iFirstNum - iNum ;

case '*': return iFirstNum * iNum ;

case '&': return iFirstNum & iNum ;

case '|': return iFirstNum | iNum ;

case '^': return iFirstNum ^ iNum ;

case '<': return iFirstNum << iNum ;

case '>': return iFirstNum >> iNum ;

case '/': return iNum ? iFirstNum / iNum: MAXDWORD ;

case '%': return iNum ? iFirstNum % iNum: MAXDWORD ;

default : return 0 ;

}

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)

{

static BOOL bNewNumber = TRUE ;

static int iOperation = '=' ;

static UINT iNumber, iFirstNum ;

HWND hButton ;



switch (message)

{

case WM_KEYDOWN: // left arrow --> backspace

if (wParam != VK_LEFT)

break ;

wParam = VK_BACK ;

// fall through

case WM_CHAR:

if ((wParam = (WPARAM) CharUpper ((TCHAR *) wParam)) == VK_RETURN)

wParam = '=' ;



if (hButton = GetDlgItem (hwnd, wParam))

{

SendMessage (hButton, BM_SETSTATE, 1, 0) ;

Sleep (100) ;

SendMessage (hButton, BM_SETSTATE, 0, 0) ;

}

else

{

MessageBeep (0) ;

break ;

}

// fall through

case WM_COMMAND:

SetFocus (hwnd) ;



if (LOWORD (wParam) == VK_BACK) //backspace

ShowNumber (hwnd, iNumber /= 16) ;



else if (LOWORD (wParam) == VK_ESCAPE) // escape

ShowNumber (hwnd, iNumber = 0) ;



else if (isxdigit (LOWORD (wParam))) // hex digit

{

if (bNewNumber)

{

iFirstNum = iNumber ;

iNumber = 0 ;

}

bNewNumber = FALSE ;

if (iNumber <= MAXDWORD >> 4)

ShowNumber (hwnd, iNumber = 16 * iNumber + wParam -

(isdigit (wParam) ? '0': 'A' - 10)) ;

else

MessageBeep (0) ;

}

else // operation

{

if (!bNewNumber)

ShowNumber (hwnd, iNumber =

CalcIt (iFirstNum, iOperation, iNumber)) ;

bNewNumber = TRUE ;

iOperation = LOWORD (wParam) ;

}

return 0 ;

case WM_DESTROY:

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

HEXCALC.RC (摘录)

//Microsoft Developer Studio generated resource script.

#include "resource.h"

#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////

// Icon

HEXCALC ICON DISCARDABLE "HexCalc.ico"

/////////////////////////////////////////////////////////////////////////////

#include "hexcalc.dlg"

HEXCALC.DLG

/*--------------------------------

HEXCALC.DLG dialog script

----------------------------------*/

HexCalc DIALOG -1, -1, 102, 122

STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX

CLASS "HexCalc"

CAPTION "Hex Calculator"

{

PUSHBUTTON "D", 68, 8, 24, 14, 14

PUSHBUTTON "A", 65, 8, 40, 14, 14

PUSHBUTTON "7", 55, 8, 56, 14, 14

PUSHBUTTON "4", 52, 8, 72, 14, 14

PUSHBUTTON "1", 49, 8, 88, 14, 14

PUSHBUTTON "0", 48, 8, 104,14, 14

PUSHBUTTON "0", 27, 26, 4, 50, 14

PUSHBUTTON "E", 69, 26, 24, 14, 14

PUSHBUTTON "B", 66, 26, 40, 14, 14

PUSHBUTTON "8", 56, 26, 56, 14, 14

PUSHBUTTON "5", 53, 26, 72, 14, 14

PUSHBUTTON "2", 50, 26, 88, 14, 14

PUSHBUTTON "Back", 8, 26, 104,32, 14

PUSHBUTTON "C", 67, 44, 40, 14, 14

PUSHBUTTON "F", 70, 44, 24, 14, 14

PUSHBUTTON "9", 57, 44, 56, 14, 14

PUSHBUTTON "6", 54, 44, 72, 14, 14

PUSHBUTTON "3", 51, 44, 88, 14, 14

PUSHBUTTON "+", 43, 62, 24, 14, 14

PUSHBUTTON "-", 45, 62, 40, 14, 14

PUSHBUTTON "*", 42, 62, 56, 14, 14

PUSHBUTTON "/", 47, 62, 72, 14, 14

PUSHBUTTON "%", 37, 62, 88, 14, 14

PUSHBUTTON "Equals", 61, 62, 104,32, 14

PUSHBUTTON "&&",38, 80, 24, 14, 14

PUSHBUTTON "|", 124, 80, 40, 14, 14

PUSHBUTTON "^", 94, 80, 56, 14, 14

PUSHBUTTON "<", 60, 80, 72, 14, 14

PUSHBUTTON ">", 62, 80, 88, 14, 14

}


2006-10-30 08:49
子时之龙
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-7-29
收藏
得分:0 

呼呼,大哥,
厉害^_^


龙已经出现了! 只因在子时, 人们无法察觉…………
2006-10-30 09:48
编程新贵
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-8-11
收藏
得分:0 
请教下这段代码放在什么编译器才能执行,为什么我放在VC有错误呢
2006-10-30 10:20
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

这个只是 书上 copy下来的...
在windows 程序设计的 配套光盘中有


2006-10-30 12:46
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
take a look there:
http://blog.bc-cn.net/user1/121/archives/2006/882.shtml

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-10-30 15:33
dlcdavid
Rank: 3Rank: 3
来 自:成都
等 级:新手上路
威 望:6
帖 子:193
专家分:0
注 册:2005-12-23
收藏
得分:0 
好长/。。。。。

为了C++,我放弃了课本
为了高考,我又放弃了C++
现在而今眼目下,我能做什么?www.
2006-10-30 19:08
wangfeng2500
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-8-29
收藏
得分:0 
谢谢各位啊!但我急需一个C++编的!!!
2006-10-30 22:27
快速回复:C++的计算器怎么做
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012573 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved