All pastes #185074 Raw Edit

Mine

public cpp v1 · immutable
#185074 ·published 2006-09-28 16:28 UTC
rendered paste body
// This lesson --// --- WIN32 Lean and Mean// -- Optimize Message Pump// -- Use Three different controls to create a calculator// -- Use resources to make a dialog box appear#define IDC_ADD 1001#define IDC_SUB 1002#define IDC_DIV 1003#define IDC_MUL 1004#define IDC_EQA 1005#define IDC_OUTPUT 1006#define IDC_Clear 1007#define ADD 1#define SUB 2#define DIV 3#define MUL 4#define EQA 5#define WIN32_LEAN_AND_MEAN#include <windows.h>int recent,total,currentOperation;bool first=true;LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);int calc_total(int, int);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){	WNDCLASSEX windowClass;	// class/struct for our main window-	HWND hwnd;				// the handle to that window-	MSG msg;				// message-	windowClass.cbSize = sizeof WNDCLASSEX;	windowClass.style = CS_HREDRAW | CS_VREDRAW;	// redraw on resize	windowClass.lpfnWndProc = WndProc;	// WndProc() address to function pointer-	windowClass.cbClsExtra=0;	windowClass.cbWndExtra=0;	windowClass.hInstance = hInstance;	windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);				// Standard app icon-	windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);					// Standard cursor-	windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);	//paint the background with?	windowClass.lpszMenuName = NULL;									// No menu	windowClass.lpszClassName = "MyClass";								// Handle for this windows class-	windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);	if(!RegisterClassEx(&windowClass))		return 0;		// struct registered and valid, now create the window-	hwnd = CreateWindowEx(NULL,						// extended styles-						  "MyClass",				// struct/class name from earlier-						  "Calc",		// Window title-						  WS_OVERLAPPED |						  WS_VISIBLE |						  WS_SYSMENU,						  100, 100,					//x,y						  158, 75,					// width, height						  NULL,						  NULL,						  hInstance,				// app instance-						  NULL);	if(!hwnd)		return 0;	while(GetMessage(&msg,NULL, 0,0) > 0){		TranslateMessage(&msg);		DispatchMessage(&msg);	}	return (int)msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)	{				HWND hAdd, hSub, hDiv, hMul, hEqa, hClear, hOutput;								switch(message){			case WM_CREATE:				hAdd = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "+",  WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 0, 26, 30, 25, hwnd, (HMENU)IDC_ADD, GetModuleHandle(NULL), NULL);				if(hAdd == NULL)					MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);				hSub = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "-",  WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 31, 26, 30, 25, hwnd, (HMENU)IDC_SUB, GetModuleHandle(NULL), NULL);				if(hSub == NULL)					MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);				hDiv = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "/",  WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 61, 26, 30, 25, hwnd, (HMENU)IDC_DIV, GetModuleHandle(NULL), NULL);				if(hDiv == NULL)					MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);				hMul = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "*",  WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 91, 26, 30, 25, hwnd, (HMENU)IDC_MUL, GetModuleHandle(NULL), NULL);				if(hMul == NULL)					MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);				hEqa = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "=",  WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 121, 26, 30, 25, hwnd, (HMENU)IDC_EQA, GetModuleHandle(NULL), NULL);				if(hEqa == NULL)					MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);				hClear = CreateWindowEx(WS_EX_CLIENTEDGE, "BUTTON", "CE",  WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 121, 0, 30, 25, hwnd, (HMENU)IDC_Clear, GetModuleHandle(NULL), NULL);				if(hClear == NULL)					MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);								hOutput = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",  WS_CHILD | WS_VISIBLE | ES_NUMBER , 0, 0, 121, 25, hwnd, (HMENU)IDC_OUTPUT, GetModuleHandle(NULL), NULL);				if(hOutput == NULL)					MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);								break;			case WM_DESTROY:				PostQuitMessage(WM_QUIT);				break;			case WM_COMMAND:				switch(LOWORD(wParam)){					case IDC_ADD:						switch(HIWORD(wParam)){							case BN_CLICKED:																recent=GetDlgItemInt(hwnd, IDC_OUTPUT, NULL, FALSE);								total=calc_total(ADD, recent);								SetDlgItemInt(hwnd, IDC_OUTPUT, total, FALSE);								break;						}					break;					case IDC_SUB:						switch(HIWORD(wParam)){							case BN_CLICKED:								recent=GetDlgItemInt(hwnd, IDC_OUTPUT, NULL, FALSE);								total=calc_total(SUB, recent);								SetDlgItemInt(hwnd, IDC_OUTPUT, total, FALSE);								break;						}					break;					case IDC_DIV:						switch(HIWORD(wParam)){							case BN_CLICKED:								recent=GetDlgItemInt(hwnd, IDC_OUTPUT, NULL, FALSE);								total=calc_total(DIV, recent);								SetDlgItemInt(hwnd, IDC_OUTPUT, total, FALSE);								break;						}					break;					case IDC_MUL:						switch(HIWORD(wParam)){							case BN_CLICKED:								recent=GetDlgItemInt(hwnd, IDC_OUTPUT, NULL, FALSE);								total=calc_total(MUL, recent);								SetDlgItemInt(hwnd, IDC_OUTPUT, total, FALSE);								break;						}					break;					case IDC_Clear:						switch(HIWORD(wParam)){							case BN_CLICKED:								recent=0; total=0;								SetDlgItemInt(hwnd, IDC_OUTPUT, total, FALSE);								break;						}					break;					case IDC_EQA:						switch(HIWORD(wParam)){							case BN_CLICKED:								recent=GetDlgItemInt(hwnd, IDC_OUTPUT, NULL, FALSE);								total=calc_total(EQA, recent);								SetDlgItemInt(hwnd, IDC_OUTPUT, total, FALSE);								break;						}					break;				}			break;							default:				break;		}		return (DefWindowProc(hwnd, message, wParam, lParam));}int calc_total(int OperationType, int newInput){		switch(currentOperation){											case ADD:											total=total+newInput;			break;									case SUB:									total=total-newInput;										break;									case DIV:									total=total/newInput;					break;								case MUL:								total=total*newInput;									break;	}					currentOperation=OperationType;							if(first){						total=newInput;						first=false;									}	return total;}