简易计算器(非常简单)本文为转载

本文分享了一段简单的C++代码,实现了一个基本的计算器功能。作者鼓励有兴趣的读者可以转载,但需联系作者或者给予点赞和支持。

没错,你没看错,又是我,惊天来一款简易计算器

老规矩,先上代码

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
struct CreateInfo{
	LPCSTR Class,Text;
	UINT x,y,width,height;
	short number;
	HWND hWnd;
	HINSTANCE hInst;
	void (*fp)(vector<HWND>);
};
vector<CreateInfo> createinfo;
void push(LPCSTR Class,LPCSTR Text,UINT x,UINT y,UINT width,UINT height,
			HINSTANCE hInst,void (*fp)(vector<HWND>)){
	CreateInfo ci;
	ci.Class=Class;
	ci.Text=Text;
	ci.x=x;
	ci.y=y;
	ci.width=width;
	ci.height=height;
	ci.hInst=hInst;
	ci.fp=fp;
	createinfo.push_back(ci);
}
HWND MakeWindow(HINSTANCE hInst,LPCSTR name,int x,int y,int width,int height,bool& err
					,long long(*fp)(HWND__*,unsigned int,unsigned long long,long long)){
	err=0;
	WNDCLASSEX wc;
	HWND hwnd;
	memset(&wc,0,sizeof(wc));
	wc.cbSize=sizeof(wc);
	wc.lpfnWndProc=fp;
	wc.hInstance=hInst;
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
	wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
	wc.lpszClassName="WindowClass";
	wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wc.hIconSm=NULL;
	if(!RegisterClassEx(&wc)){
		MessageBox(NULL,"Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		err=1;
	}
	hwnd=CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass",name,WS_VISIBLE|WS_OVERLAPPEDWINDOW,
		x+20,y+40,width,height,NULL,NULL,hInst,NULL);
	if(hwnd==NULL){
		MessageBox(NULL,"Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		err=1;
	}
	return hwnd;
}
LRESULT CALLBACK MakeThings(HWND hwnd,UINT Message,WPARAM wParam,LPARAM lParam){
	switch(Message){
		case WM_CREATE:{
			for(int i=0;i<createinfo.size();i++){
				createinfo[i].hWnd=CreateWindow(createinfo[i].Class,
												createinfo[i].Text,
												WS_CHILD|WS_VISIBLE,
												createinfo[i].x,
												createinfo[i].y,
												createinfo[i].width,
												createinfo[i].height,
												hwnd,
												(HMENU)(createinfo[i].number),
												createinfo[i].hInst,
												NULL);
			}
			break;
		}
		case WM_COMMAND:{
			bool b=0;
			vector<HWND> vh;
			for(int i=0;i<createinfo.size();i++)
				vh.push_back(createinfo[i].hWnd);
			for(int i=0;i<createinfo.size();i++){
				if(createinfo[i].number==wParam){
					createinfo[i].fp(vh);
					b=1;
				}
			}
			break;
		}
		default:{
			DefWindowProc(hwnd,Message,wParam,lParam);
			break;
		}
	}
}

就是这样,想要转载请联系本人或点赞或好评!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值