一个window ce 的计算器 主要实现科学计算和基本计算功能

源代码在线查看: ce calculate.cpp

软件大小: 3511 K
上传用户: srbrabbit
关键词: window 计算 ce 计算器
下载地址: 免注册下载 普通下载 VIP

相关代码

				// ce calculate.cpp : Defines the entry point for the application.
				//
				
				#include "stdafx.h"
				#include "ce calculate.h"
				#include 
				#include 
				
				#define MAX_LOADSTRING 100
				
				// Global Variables:
				HINSTANCE			g_hInst;			// current instance
				HWND				g_hWndMenuBar;		// menu bar handle
				BOOL MainDlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); 
				int number1=0,number2=0,result=0;
				// Forward declarations of functions included in this code module:
				ATOM			MyRegisterClass(HINSTANCE, LPTSTR);
				BOOL			InitInstance(HINSTANCE, int);
				LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
				INT_PTR CALLBACK	About(HWND, UINT, WPARAM, LPARAM);
				
				int WINAPI WinMain(HINSTANCE hInstance,
				                   HINSTANCE hPrevInstance,
				                   LPTSTR    lpCmdLine,
				                   int       nCmdShow)
				{
					MSG msg;
				
					// Perform application initialization:
					if (!InitInstance(hInstance, nCmdShow)) 
					{
						return FALSE;
					}
				
					HACCEL hAccelTable;
					hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_CECALCULATE));
				
					// Main message loop:
					while (GetMessage(&msg, NULL, 0, 0)) 
					{
						if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
						{
							TranslateMessage(&msg);
							DispatchMessage(&msg);
						}
					}
				
					return (int) msg.wParam;// DialogBoxParam(hInstance, (LPCSTR)IDD_DIALOG1, NULL, (DLGPROC)MainDlgProc, NULL); 
				   // return 0; 
				}/*
				BOOL MainDlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) 
				{ 
					
				    switch(uMsg) 
				    { 
				    case WM_INITDIALOG: 
				        SetDlgItemText(hWndDlg, IDC_SEND, TEXT("number 1")); 
				        SetDlgItemText(hWndDlg, IDC_SHOW, TEXT("number 2")); 
						SetDlgItemText(hWndDlg, IDC_operator, TEXT("")); 
				        break; 
				    case WM_COMMAND: 
				        switch (LOWORD(wParam)) 
				        { 
							TCHAR lpString[20];
				        case IDOK: 
							TCHAR szText[20];
				            //SetDlgItemText(hWndDlg, IDC_SEND, TEXT("VVVVVV")); 
							wsprintf (szText, TEXT ("%d"), result);
				
				            MessageBox(hWndDlg, TEXT(szText), TEXT("message sent"), MB_OK); 
				            break; 
						case IDC_BUTTON1:
							//TCHAR lpString[20];
						
							SetDlgItemText(hWndDlg, IDC_operator, TEXT("+")); 
							GetDlgItemText(hWndDlg,IDC_SEND,lpString,sizeof(lpString));
							number1=atoi(lpString);
							//MessageBox(hWndDlg, lpString, TEXT("message sent"), MB_OK);
							GetDlgItemText(hWndDlg,IDC_SHOW,lpString,sizeof(lpString));
							number2=atoi(lpString);
							result=number1+number2;
							break;
						case IDC_BUTTON2:
							//TCHAR lpString[20];
						
							SetDlgItemText(hWndDlg, IDC_operator, TEXT("-")); 
							GetDlgItemText(hWndDlg,IDC_SEND,lpString,sizeof(lpString));
							number1=atoi(lpString);
							//MessageBox(hWndDlg, lpString, TEXT("message sent"), MB_OK);
							GetDlgItemText(hWndDlg,IDC_SHOW,lpString,sizeof(lpString));
							number2=atoi(lpString);
							result=number1-number2;
							break;
						case IDC_BUTTON3:
							
							
							SetDlgItemText(hWndDlg, IDC_operator, TEXT("*")); 
							GetDlgItemText(hWndDlg,IDC_SEND,lpString,sizeof(lpString));
							number1=atoi(lpString);
							//MessageBox(hWndDlg, lpString, TEXT("message sent"), MB_OK);
							GetDlgItemText(hWndDlg,IDC_SHOW,lpString,sizeof(lpString));
							number2=atoi(lpString);
							result=number1*number2;
							break;
						case IDC_BUTTON4:
							//TCHAR lpString[20];
							
							SetDlgItemText(hWndDlg, IDC_operator, TEXT("/")); 
							GetDlgItemText(hWndDlg,IDC_SEND,lpString,sizeof(lpString));
							number1=atoi(lpString);
							//MessageBox(hWndDlg, lpString, TEXT("message sent"), MB_OK);
							GetDlgItemText(hWndDlg,IDC_SHOW,lpString,sizeof(lpString));
							number2=atoi(lpString);
							result=number1/number2;
							break;
				        // to be added: 
				        // case IDCANCEL: 
				        //     handle the message from "CANCEL" button etc.  
				        } 
				        break; 
				    case WM_CLOSE: 
				        MessageBox(hWndDlg, TEXT("close dialog."), TEXT("close"), MB_OK); 
				        EndDialog(hWndDlg, 0); 
				        break; 
				    default: 
				        return FALSE; 
				    } 
				    return TRUE; 
				}*/
				
				
				//
				//  FUNCTION: MyRegisterClass()
				//
				//  PURPOSE: Registers the window class.
				//
				//  COMMENTS:
				//
				ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass)
				{
					WNDCLASS wc;
				
					wc.style         = CS_HREDRAW | CS_VREDRAW;
					wc.lpfnWndProc   = WndProc;
					wc.cbClsExtra    = 0;
					wc.cbWndExtra    = 0;
					wc.hInstance     = hInstance;
					wc.hIcon         = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_CECALCULATE));
					wc.hCursor       = 0;
					wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
					wc.lpszMenuName  = 0;
					wc.lpszClassName = szWindowClass;
				
					return RegisterClass(&wc);
				}
				
				//
				//   FUNCTION: InitInstance(HINSTANCE, int)
				//
				//   PURPOSE: Saves instance handle and creates main window
				//
				//   COMMENTS:
				//
				//        In this function, we save the instance handle in a global variable and
				//        create and display the main program window.
				//
				BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
				{
				    HWND hWnd;
				    TCHAR szTitle[MAX_LOADSTRING];		// title bar text
				    TCHAR szWindowClass[MAX_LOADSTRING];	// main window class name
				
				    g_hInst = hInstance; // Store instance handle in our global variable
				
				    // SHInitExtraControls should be called once during your application's initialization to initialize any
				    // of the device specific controls such as CAPEDIT and SIPPREF.
				    SHInitExtraControls();
				
				    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); 
				    LoadString(hInstance, IDC_CECALCULATE, szWindowClass, MAX_LOADSTRING);
				
				    //If it is already running, then focus on the window, and exit
				    hWnd = FindWindow(szWindowClass, szTitle);	
				    if (hWnd) 
				    {
				        // set focus to foremost child window
				        // The "| 0x00000001" is used to bring any owned windows to the foreground and
				        // activate them.
				        SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001));
				        return 0;
				    } 
				
				    if (!MyRegisterClass(hInstance, szWindowClass))
				    {
				    	return FALSE;
				    }
				
				    hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
				        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
				
				    if (!hWnd)
				    {
				        return FALSE;
				    }
				
				    // When the main window is created using CW_USEDEFAULT the height of the menubar (if one
				    // is created is not taken into account). So we resize the window after creating it
				    // if a menubar is present
				    if (g_hWndMenuBar)
				    {
				        RECT rc;
				        RECT rcMenuBar;
				
				        GetWindowRect(hWnd, &rc);
				        GetWindowRect(g_hWndMenuBar, &rcMenuBar);
				        rc.bottom -= (rcMenuBar.bottom - rcMenuBar.top);
						
				        MoveWindow(hWnd, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, FALSE);
				    }
				
				    ShowWindow(hWnd, nCmdShow);
				    UpdateWindow(hWnd);
				
				
				    return TRUE;
				}
				
				//
				//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
				//
				//  PURPOSE:  Processes messages for the main window.
				//
				//  WM_COMMAND	- process the application menu
				//  WM_PAINT	- Paint the main window
				//  WM_DESTROY	- post a quit message and return
				//
				//
				LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
				{
				    int wmId, wmEvent;
				    PAINTSTRUCT ps;
				    HDC hdc;
				
				    static SHACTIVATEINFO s_sai;
					
				    switch (message) 
				    {
				        case WM_COMMAND:
				            wmId    = LOWORD(wParam); 
				            wmEvent = HIWORD(wParam); 
				            // Parse the menu selections:
				            switch (wmId)
				            {
				                case IDM_HELP_ABOUT:
				                    DialogBox(g_hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, About);
				                    break;
				                case IDM_OK:
				                    SendMessage (hWnd, WM_CLOSE, 0, 0);				
				                    break;
				                default:
				                    return DefWindowProc(hWnd, message, wParam, lParam);
				            }
				            break;
				        case WM_CREATE:
				            SHMENUBARINFO mbi;
				
				            memset(&mbi, 0, sizeof(SHMENUBARINFO));
				            mbi.cbSize     = sizeof(SHMENUBARINFO);
				            mbi.hwndParent = hWnd;
				            mbi.nToolBarId = IDR_MENU;
				            mbi.hInstRes   = g_hInst;
				
				            if (!SHCreateMenuBar(&mbi)) 
				            {
				                g_hWndMenuBar = NULL;
				            }
				            else
				            {
				                g_hWndMenuBar = mbi.hwndMB;
				            }
				
				            // Initialize the shell activate info structure
				            memset(&s_sai, 0, sizeof (s_sai));
				            s_sai.cbSize = sizeof (s_sai);
				            break;
				        case WM_PAINT:
				            hdc = BeginPaint(hWnd, &ps);
				            
				            // TODO: Add any drawing code here...
				            
				            EndPaint(hWnd, &ps);
				            break;
				        case WM_DESTROY:
				            CommandBar_Destroy(g_hWndMenuBar);
				            PostQuitMessage(0);
				            break;
				
				        case WM_ACTIVATE:
				            // Notify shell of our activate message
				            SHHandleWMActivate(hWnd, wParam, lParam, &s_sai, FALSE);
				            break;
				        case WM_SETTINGCHANGE:
				            SHHandleWMSettingChange(hWnd, wParam, lParam, &s_sai);
				            break;
				
				        default:
				            return DefWindowProc(hWnd, message, wParam, lParam);
				    }
				    return 0;
				}
				
				// Message handler for about box.
				INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
				{
				    switch (message)
				    {
				        case WM_INITDIALOG:
				            {
				                // Create a Done button and size it.  
				                SHINITDLGINFO shidi;
				                shidi.dwMask = SHIDIM_FLAGS;
				                shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_EMPTYMENU;
				                shidi.hDlg = hDlg;
				                SHInitDialog(&shidi);
				            }
				            return (INT_PTR)TRUE;
				
				        case WM_COMMAND:
				            if (LOWORD(wParam) == IDOK)
				            {
				                EndDialog(hDlg, LOWORD(wParam));
				                return TRUE;
				            }
				            break;
				
				        case WM_CLOSE:
				            EndDialog(hDlg, message);
				            return TRUE;
				
				#ifdef _DEVICE_RESOLUTION_AWARE
				        case WM_SIZE:
				            {
						DRA::RelayoutDialog(
							g_hInst, 
							hDlg, 
							DRA::GetDisplayMode() != DRA::Portrait ? MAKEINTRESOURCE(IDD_ABOUTBOX_WIDE) : MAKEINTRESOURCE(IDD_ABOUTBOX));
				            }
				            break;
				#endif
				    }
				    return (INT_PTR)FALSE;
				}
							

相关资源