- 2022tysc1451 的博客
计算器
- 2025-3-29 17:44:38 @
1.支持+、-、 * 、/(整除)、^(幂运算)、进制转换、高精度、面积、体积等运算
#include<bits/stdc++.h>
#include<windows.h>
#include<ctime>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
using namespace std;
int a[100001], b[100001], sum[100001], len1, len2, sumlen;
string s1, s2;
void Add() {
memset(sum, 0, sizeof(sum));
cin >> s1 >> s2;
len1 = s1.size();
len2 = s2.size();
for (int i = 0; i < len1; ++i) {
a[len1 - i - 1] = int(s1[i] - '0');
}
for (int i = 0; i < len2; ++i) {
b[len2 - i - 1] = int(s2[i] - '0');
}
sumlen = max(len1, len2);
for (int i = 0; i < sumlen; ++i) {
sum[i] += a[i] + b[i];
sum[i + 1] = sum[i] / 10;
sum[i] = sum[i] % 10;
}
if (sum[sumlen] != 0)sumlen++;
for (int i = sumlen - 1; i >= 0; --i)cout << sum[i];
}
void Subtract() {
memset(sum, 0, sizeof(sum));
cin >> s1 >> s2;
if (s1.size() < s2.size() || (s1.size() == s2.size() && s1 < s2)) {
cout << '-';
swap(s1, s2);
}
len1 = s1.size();
len2 = s2.size();
for (int i = 0; i < len1; ++i) {
a[len1 - i - 1] = int(s1[i] - '0');
}
for (int i = 0; i < len2; ++i) {
b[len2 - i - 1] = int(s2[i] - '0');
}
sumlen = max(len1, len2);
for (int i = 0; i < sumlen; ++i) {
if (a[i] < b[i])a[i + 1]--, a[i] += 10;
sum[i] = a[i] - b[i];
}
while (sum[sumlen - 1] == 0 && sumlen > 1)sumlen--;
for (int i = sumlen - 1; i >= 0; --i)cout << sum[i];
}
void Multiple() {
memset(sum, 0, sizeof(sum));
cin >> s1 >> s2;
len1 = s1.size();
len2 = s2.size();
for (int i = 0; i < len1; ++i) {
a[len1 - i - 1] = int(s1[i] - '0');
}
for (int i = 0; i < len2; ++i) {
b[len2 - i - 1] = int(s2[i] - '0');
}
for (int i = 0; i < len1; ++i) {
for (int j = 0; j < len2; ++j) {
sum[i + j] += a[i] * b[j];
}
}
sumlen = len1 + len2;
for (int i = 0; i < sumlen; ++i) {
sum[i + 1] += sum[i] / 10;
sum[i] %= 10;
}
while (sum[sumlen - 1] == 0 && sumlen > 1)sumlen--;
for (int i = sumlen - 1; i >= 0; --i)cout << sum[i];
}
long long ksm(long long n, long long p, const int m = (int)1e10) { //快速幂
if (p == 0)return 1;
long long sum = ksm(n, p / 2, m);
if (p & 1)return sum * sum * n % m;
return sum * sum % m;
}
stack<long long>n;
stack<char>sym;
void pop() {
long long n1 = n.top();
n.pop();
int n2 = n.top();
n.pop();
long long pd = sym.top();
sym.pop();
switch (pd) {
case 0:
n.push(n1 + n2);
break;
case 1:
n.push(n2 - n1);
break;
case 2:
n.push(n1 * n2);
break;
case 3:
n.push(n2 / n1);
break;
case 4:
n.push(ksm(n2, n1));
break;
}
}
void bds() {
string str;
cin >> str;
long long num = 0;
int k;
for (int i = 0; i < (int)str.size(); i++) {
if (str[i] >= '0' && str[i] <= '9') {
num = num * 10 + str[i] - '0';
} else {
n.push(num);
num = 0;
switch (str[i]) {
case'+':
k = 0;
break;
case'-':
k = 1;
break;
case'*':
k = 2;
break;
case'/':
k = 3;
break;
case'^':
k = 4;
break;
}
while (!sym.empty() && (int)(sym.top()) >= (int)k)pop();
sym.push(k);
}
}
n.push(num);
while (!sym.empty())pop();
cout << str << '=' << n.top();
}
void ShowCursor() {
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursor_info;
GetConsoleCursorInfo(h, &cursor_info);
cursor_info.bVisible = true;
SetConsoleCursorInfo(h, &cursor_info);
}
void HideCursor() {
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void gotoxy(int x, int y) {
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x, pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void color(int a) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
}
void check(char n, int i) {
switch (n) {
case '1': {
if (i == 1 || i == 4 || i == 7)cout << " ";
if (i == 2 || i == 3 || i == 5 || i == 6)cout << " | ";
break;
}
case '2': {
if (i == 1 || i == 4 || i == 7)cout << " -- ";
if (i == 2 || i == 3)cout << " | ";
if (i == 5 || i == 6)cout << "| ";
break;
}
case '3': {
if (i == 1 || i == 4 || i == 7)cout << " -- ";
if (i == 2 || i == 3 || i == 5 || i == 6)cout << " | ";
break;
}
case '4': {
if (i == 1 || i == 7)cout << " ";
if (i == 2 || i == 3)cout << "| | ";
if (i == 4)cout << " -- ";
if (i == 5 || i == 6)cout << " | ";
break;
}
case '5': {
if (i == 1)cout << "┌-- ";
if (i == 4 || i == 7)cout << " -- ";
if (i == 2 || i == 3)cout << "| ";
if (i == 5 || i == 6)cout << " | ";
break;
}
case '6': {
if (i == 1 || i == 4 || i == 7)cout << " -- ";
if (i == 2 || i == 3)cout << "| ";
if (i == 5 || i == 6)cout << "| | ";
break;
}
case '7': {
if (i == 1)cout << "--- ";
else cout << " | ";
break;
}
case '8': {
if (i == 1 || i == 4 || i == 7)cout << " -- ";
else cout << "| | ";
break;
}
case '9': {
if (i == 1 || i == 4 || i == 7)cout << " -- ";
if (i == 2 || i == 3)cout << "| | ";
if (i == 5 || i == 6)cout << " | ";
break;
}
case '0': {
if (i == 1 || i == 7)cout << " -- ";
else if (i == 3)cout << "| /| ";
else if (i == 4)cout << "|/ | ";
else cout << "| | ";
break;
}
case 'A': {
if (i == 1)cout << " /\\ ";
if (i == 2)cout << "/ \\ ";
if (i == 3 || i == 5 || i == 6 || i == 7)cout << "| | ";
if (i == 4)cout << "|---| ";
break;
}
case 'B': {
if (i == 1)cout << "┌-- ";
if (i == 2 || i == 5 || i == 6)cout << "| | ";
if (i == 3)cout << "| | ";
if (i == 4)cout << "|-- ";
if (i == 7)cout << "└-- ";
break;
}
case 'C': {
if (i == 1 || i == 7)cout << " --- ";
else cout << "| ";
break;
}
case 'D': {
if (i == 1)cout << "┌--- ";
else if (i == 7)cout << "└--- ";
else cout << "| | ";
break;
}
case 'E': {
if (i == 1)cout << "┌--- ";
else if (i == 4)cout << "|--- ";
else if (i == 7)cout << "└--- ";
else cout << "| ";
break;
}
case 'F': {
if (i == 1)cout << "┌--- ";
else if (i == 4)cout << "|--- ";
else if (i == 7)cout << "| ";
else cout << "| ";
break;
}
case 'G': {
if (i == 1 || i == 7)cout << " -- ";
if (i == 2 || i == 3)cout << "| ";
if (i == 4)cout << "| -- ";
if (i == 5 || i == 6)cout << "| | ";
break;
}
case 'H': {
if (i == 4)cout << "|--| ";
else cout << "| | ";
break;
}
case 'I': {
if (i == 1 || i == 7)cout << " --- ";
else cout << " | ";
break;
}
case 'J': {
if (i == 1)cout << " --- ";
else if (i == 7)cout << "└-┘ ";
else cout << " | ";
break;
}
case 'K': {
if (i == 3)cout << "|| ";
else if (i == 2 || i == 4)cout << "| | ";
else cout << "| | ";
break;
}
case 'L': {
if (i == 7)cout << "└--- ";
else cout << "| ";
break;
}
case 'M': {
if (i == 1)cout << "|\\ /| ";
else if (i == 2)cout << "| \\/ | ";
else cout << "| | ";
break;
}
case 'N': {
if (i == 1)cout << "|\\ | ";
else if (i == 2)cout << "| \\ | ";
else if (i == 3)cout << "| \\ | ";
else if (i == 4)cout << "| \\| ";
else cout << "| | ";
break;
}
case 'O': {
if (i == 1 || i == 7)cout << " --- ";
else cout << "| | ";
break;
}
case 'P': {
if (i == 1 || i == 4)cout << "┌--- ";
else if (i == 2 || i == 3)cout << "| | ";
else cout << "| ";
break;
}
case 'Q': {
if (i == 1)cout << " --- ";
else if (i == 6)cout << "| \\| ";
else if (i == 7)cout << " ---\\ ";
else cout << "| | ";
break;
}
case 'R': {
if (i == 1)cout << "┌-- ";
if (i == 2 || i == 3)cout << "| | ";
if (i == 4)cout << "|-- ";
if (i == 5)cout << "|\\ ";
if (i == 6)cout << "| \\ ";
if (i == 7)cout << "| \\ ";
break;
}
case 'S': {
if (i == 1 || i == 4 || i == 7)cout << " -- ";
if (i == 2 || i == 3)cout << "| ";
if (i == 5 || i == 6)cout << " | ";
break;
}
case 'T': {
if (i == 1)cout << "--- ";
else cout << " | ";
break;
}
case 'U': {
if (i == 7)cout << " -- ";
else cout << "| | ";
break;
}
case 'V': {
if (i == 6)cout << "\\ / ";
else if (i == 7)cout << " \\/ ";
else cout << "| | ";
break;
}
case 'W': {
if (i == 7)cout << "|/ \\| ";
else if (i == 6)cout << "| /\\ | ";
else cout << "| | ";
break;
}
case 'X': {
if (i == 1)cout << "\\ / ";
if (i == 2)cout << " \\ / ";
if (i == 3)cout << " \\ / ";
if (i == 4)cout << " X ";
if (i == 5)cout << " / \\ ";
if (i == 6)cout << " / \\ ";
if (i == 7)cout << "/ \\ ";
break;
}
case 'Y': {
if (i == 1)cout << "\\ / ";
else if (i == 2)cout << " \\/ ";
else cout << " | ";
break;
}
case 'Z': {
if (i == 1)cout << "----- ";
if (i == 2)cout << " / ";
if (i == 3)cout << " / ";
if (i == 4)cout << " / ";
if (i == 5)cout << " / ";
if (i == 6)cout << "/ ";
if (i == 7)cout << "----- ";
break;
}
case ':': {
if (i == 2 || i == 5)cout << " . ";
else cout << " ";
break;
}
case ' ': {
cout << " ";
break;
}
default: {
if (i == 1 || i == 2 || i == 7)cout << " ";
if (i == 3)cout << "┌--┐ ";
if (i == 6)cout << "└--┘ ";
if (i == 4)cout << "|\\/| ";
if (i == 5)cout << "|/\\| ";
break;
}
}
}
int main() {
while (1) {
cout << "欢迎使用简易计算器[V5.0],(Made By ";
color(14);
cout << "2024tysc0470";
color(7);
cout << ")\n" << endl;
char s;
cout << "请选择一个功能\n1.自由输入表达式\n2.高精度计算\n3.其他\n";
int aa;
cin >> aa;
switch (aa) {
case 1: {
cout << "您选择了自由表达式,请在下方输入您的数学表达式(支持 +,-,*,/,^(幂),不支持小数运算)\n";
bds();
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 2: {
int gjd;
do {
cout << "您选择了高精度计算,请输入您的运算方式\n1.+\n2.-\n3.*\n(目前还没有除法)\n";
cin >> gjd;
system("cls");
} while (gjd > 3 && gjd < 1);
cout << "输入两个数,长度不能超过99999\n";
if (gjd == 1)Add();
if (gjd == 2)Subtract();
if (gjd == 3)Multiple();
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 3: {
int b;
system("cls");
cout << "你选择了其他,请继续选择\n";
cout << "1.计算面积\n";
cout << "2.计算体积\n";
cout << "3.计算表面积\n";
cout << "4.鸡兔同笼\n";
cout << "5.进制转换\n";
cout << "6.小小显示器\n";
cout << "7.时钟\n" << endl;
cin >> b;
switch (b) {
case 1: {
int c;
cout << "你选择了计算面积,请问你要算什么图形的面积?\n";
cout << "1.正方形\n" << "2.长方形\n" << "3.圆形\n" << endl;
cin >> c;
switch (c) {
case 1: {
double bianchang;
cout << "您选择的是正方形,请输入正方形的边长" << endl;
cin >> bianchang;
printf("它的面积是:%.3lf", bianchang * bianchang);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 2: {
double chang, kuan;
cout << "您选择的是长方形,请输入长方形的长和宽,中间用空格隔开" << endl;
cin >> chang >> kuan;
printf("它的面积是:%.3lf", chang * kuan);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 3: {
double banjing;
cout << "您选择的是圆形,请输入圆形的半径(半径等于直径除以2)" << endl;
cin >> banjing;
printf("它的面积是:%.3lf", 3.14 * banjing * banjing);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
default: {
cout << endl << "输入错误,是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
}
}
break;
}
case 2: {
int tiji;
cout << "你选择了计算体积,请问你要算什么的体积?\n";
cout << "1.正方体\n" << "2.长方体\n" << "3.圆柱\n" << "4.圆锥\n" << endl;
cin >> tiji;
switch (tiji) {
case 1: {
double bc;
cout << "您选择了正方体,请输入它的边长。" << endl;
cin >> bc;
printf("它的体积是:%.3lf", bc * bc * bc);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 2: {
double c, k, g;
cout << "您选择了长方体,请输入它的长、宽、高,中间用空格隔开。" << endl;
cin >> c >> k >> g;
printf("它的体积是:%.3lf", c * k * g);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 3: {
double r, h;
cout << "您选择了圆柱,请输入他的半径(直径/2)和高,中间用空格隔开。" << endl;
cin >> r >> h;
printf("它的体积是:%.3lf", 3.14 * r * r * h);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 4: {
double r, h;
cout << "您选择了圆锥,请输入他的半径(直径/2)和高,中间用空格隔开。" << endl;
cin >> r >> h;
printf("它的体积是:%.3lf", (3.14 * r * r * h) / 3);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
default: {
cout << endl << "输入错误,是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
}
break;
}
case 3: {
int bmj;
cout << "您选择了计算表面积,请问您要算什么的表面积?\n";
cout << "1.正方体\n" << "2.长方体\n" << "3.圆柱体\n" << "4.圆锥\n" << endl;
cin >> bmj;
switch (bmj) {
case 1: {
double bc;
cout << "您选择了正方形,请输入他的边长" << endl;
cin >> bc;
printf("它的表面积是:%.3lf", bc * bc * 6);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 2: {
double c, k, g;
cout << "您选择了长方形,请输入他的长宽高" << endl;
cin >> c >> k >> g;
printf("它的表面积是:%.3lf", 2 * (c * k + c * g + k * g));
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 3: {
double r, h;
cout << "您选择了圆柱体,请输入它的半径(直径/2)和高" << endl;
cin >> r >> h;
printf("它的表面积是:%.3lf", 2 * (3.14 * r * r) + 2 * (3.14 * r * h));
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 4: {
double r, l;
cout << "您选择了圆锥,请输入它的半径和母线(圆锥顶点到底部的长度)" << endl;
cin >> r >> l;
printf("它的表面积是:%.3lf", 3.14 * r * l + 3.14 * r * r);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
}
break;
}
case 4: {
int rabbit, chicken, head, leg;
cout << "您选择了鸡兔同笼,请输入头和腿的数量,中间用空格隔开" << endl;
cin >> head >> leg;
rabbit = (leg - 2 * head) / 2;
chicken = head - rabbit;
cout << "鸡有" << chicken << "只," << "兔有" << rabbit << "只" << endl;
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 5: {
cout << "您选择了进制转换,请问你选择什么模式?\n";
cout << "1.十进制转任何进制\n" << "2.任何进制转十进制\n" << endl;
int jz;
cin >> jz;
switch (jz) {
case 1: {
cout << "您选择了十进制转任何进制,请输入一个十进制数和您要转换的进制(注:进制最好不要超过36,否则可能会出错)" << endl;
long long n, r, ans[10086], i = 0;
cin >> n >> r;
printf("(%lld)10 用 %lld 进制表示为:", n, r);
while (n > 0)ans[++i] = n % r, n /= r;
for (; i >= 1; i--) {
if (ans[i] < 10)cout << ans[i];
else cout << (char)(ans[i] - 10 + 'A');
}
cout << endl;
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
}
case 2: {
cout << "您选择了任何进制转十进制,请输入一个任何进制数和这个数的进制(注:进制最好不要超过36,否则可能会出错)" << endl;
long long r, pow = 1, sum = 0, x;
string n;
cin >> n >> r;
for (int i = n.size() - 1; i >= 0; i--) {
if (n[i] >= '0' and n[i] <= '9')x = n[i] - '0';
else {
if (n[i] >= 'A' and n[i] <= 'Z')x = n[i] - 'A' + 10;
else x = n[i] - 'a' + 10;
}
sum += x * pow, pow *= r;
}
printf("(%s)%lld 用 10 进制表示为:%lld\n", n.c_str(), r, sum);
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
}
default: {
cout << endl << "输入错误,是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
}
}
break;
}
case 6: {
cout << "您选择了小小显示器,请输入您想显示的内容(仅支持大写字母和数字,如果输入“字母表”即可输出字母表):";
string n;
cin >> n;
if (n == "字母表") {
for (int i = 1; i <= 7; i++) {
for (int j = 'A'; j <= 'Z'; j++)check(j, i);
cout << endl;
}
} else {
for (int i = 1; i <= 7; i++) {
for (int j = 0; j < (int)(n.size()); j++)check(n[j], i);
cout << endl;
}
}
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
break;
}
case 7: {
int k = 0;
system("cls");
while (1) {
HideCursor(); //隐藏光标
time_t now = time(0);
char* dt = ctime(&now);
cout << "退出请按E\n";
for (int i = 1; i <= 7; i++) {
for (int j = 11; j < (int)strlen(dt) - 6; j++) {
check(dt[j], i);
}
cout << endl;
}
gotoxy(0, 0);
if (KEY_DOWN('E')) {
system("cls");
ShowCursor();//显示光标
cout << endl << "是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
k = 1;
break;
} else return 0;
}
}
if (k)continue;
break;
}
default: {
cout << endl << "输入错误,是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
}
}
}
default: {
cout << endl << "输入错误,是否返回(y/n)";
cin >> s;
if (s == 'y' || s == 'Y') {
system("cls");
continue;
} else return 0;
}
}
}
return 0;
}
2.MessegeBox计算器模板
#include<windows.h>
#include<cstdio>
#include<cstdlib>
#include<string>
HWND he;
char buffer[256] = {0};
int sz=0;
void settext(HWND h,char* textToSet){
SendMessage(h, WM_SETTEXT, 0, (LPARAM)textToSet);
}
char* gettext(HWND h){
SendMessage(h, WM_GETTEXT,255,(LPARAM)buffer);
return buffer;
}
void addch(char ch){
int len=strlen(buffer);
buffer[len]=ch;
buffer[len+1]='\0';
}
void cal(){
}
/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
switch(Message) {
/* Upon destruction, tell the main thread to stop */
case WM_DESTROY: {
PostQuitMessage(0);
break;
}
case WM_COMMAND:{
if(LOWORD(wParam)<10){
addch('0'+LOWORD(wParam));
settext(he,buffer);
}
return 0;
}
case WM_SIZE:{
break;
}
/* All other messages (a lot of them) are processed using default procedures */
default:
return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
}
/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASSEX wc; /* A properties struct of our window */
HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
MSG msg; /* A temporary location for all messages */
/* zero out the struct and set the stuff we want to modify */
memset(&wc,0,sizeof(wc));
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = WndProc; /* This is where we will send messages to */
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
/* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "WindowClass";
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */
if(!RegisterClassEx(&wc)) {
MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return 0;
}
hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","计算器",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, /* x */
CW_USEDEFAULT, /* y */
300+20, /* width */
180+15+28, /* height */
NULL,NULL,hInstance,NULL);
HWND hButton7 = CreateWindow("BUTTON", "7", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
0,
30,
50,
50,
hwnd,
(HMENU)7,
hInstance,
NULL);
HWND hButton8 = CreateWindow("BUTTON", "8", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
50,
30,
50,
50,
hwnd,
(HMENU)8,
hInstance,
NULL);
HWND hButton9 = CreateWindow("BUTTON", "9", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
100,
30,
50,
50,
hwnd,
(HMENU)9,
hInstance,
NULL);
HWND hButton4 = CreateWindow("BUTTON", "4", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
0,
80,
50,
50,
hwnd,
(HMENU)4,
hInstance,
NULL);
HWND hButton5 = CreateWindow("BUTTON", "5", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
50,
80,
50,
50,
hwnd,
(HMENU)5,
hInstance,
NULL);
HWND hButton6 = CreateWindow("BUTTON", "6", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
100,
80,
50,
50,
hwnd,
(HMENU)6,
hInstance,
NULL);
HWND hButton1 = CreateWindow("BUTTON", "1", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
0,
130,
50,
50,
hwnd,
(HMENU)1,
hInstance,
NULL);
HWND hButton2 = CreateWindow("BUTTON", "2", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
50,
130,
50,
50,
hwnd,
(HMENU)2,
hInstance,
NULL);
HWND hButton3 = CreateWindow("BUTTON", "3", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
100,
130,
50,
50,
hwnd,
(HMENU)3,
hInstance,
NULL);
if(hwnd == NULL) {
MessageBox(NULL, "Nooooooooooo!",0,MB_ICONEXCLAMATION|MB_OK);
return 0;
}
he = CreateWindow("edit", "0", WS_CHILD|WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL|ES_READONLY,
0, 0, 300, 30,hwnd,(HMENU)99, hInstance, NULL);
settext(he,gettext(he));
while(GetMessage(&msg, NULL, 0, 0) > 0) { /* If no error is received... */
TranslateMessage(&msg); /* Translate key codes to chars if present */
DispatchMessage(&msg); /* Send it to WndProc */
}
return msg.wParam;
}