Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2012, 17:16   #1
MartyM
 
Регистрация: 17.11.2012
Сообщений: 7
По умолчанию Функционал для Калькулятора (WinApi)

Здраствуйте, на данный момент я сделал оболочку для калькулятора и не знаю как сделать функционал, поэтому прощу вашей помощи...Делаю на VS 2010
Код:
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#include <iostream>
#include <math.h>

static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("Калькулятор (Lab2)");

HINSTANCE hInst;

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

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow) {

	WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+11);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

	if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL,
            _T("Call to RegisterClassEx failed!"),
            _T("Win32 Guided Tour"),
            NULL);

        return 1;
    }

    hInst = hInstance; 


    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_SYSMENU,
        CW_USEDEFAULT, CW_USEDEFAULT,
        255, 220,
        NULL,
        NULL,
        hInstance,
        NULL
    );

    if (!hWnd)
    {
        MessageBox(NULL,
            _T("Call to CreateWindow failed!"),
            _T("Win32 Guided Tour"),
            NULL);

        return 1;
    }

	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);

   MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

	return (int) msg.wParam;}

#define ID_EDIT	 99
#define ID_BUTTON	 100
#define ID_BUTTON_1	 101
#define ID_BUTTON_2	 102
#define ID_BUTTON_3	 103
#define ID_BUTTON_4	 104
#define ID_BUTTON_5	 105
#define ID_BUTTON_6	 106
#define ID_BUTTON_7	 107
#define ID_BUTTON_8	 108
#define ID_BUTTON_9	 109
#define ID_BUTTON_ADD	 110
#define ID_BUTTON_MIN	 111
#define ID_BUTTON_MUL	 112
#define ID_BUTTON_DEL	 113
#define ID_BUTTON_MAIN	 114
#define ID_BUTTON_REM	 115

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

	static HWND hButton[100], hEdit, hListBox;
    PAINTSTRUCT ps;
    HDC hdc;
	TCHAR buff[256];
	CHAR result[256];
	int calc[256];
	int i = 0;

    switch (message)
    {
MartyM вне форума Ответить с цитированием
Старый 17.11.2012, 17:17   #2
MartyM
 
Регистрация: 17.11.2012
Сообщений: 7
По умолчанию продолжение проги

Код:
    case WM_CREATE:
        {
		hEdit = CreateWindowEx(NULL, L"EDIT", L"0", WS_BORDER | WS_VISIBLE| WS_CHILD | ES_MULTILINE | ES_READONLY | ES_RIGHT, 10, 5, 230, 35, hWnd, (HMENU)ID_EDIT, hInst, NULL);
        hButton[0] = CreateWindow (L"Button", L"0", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  10, 150, 130, 30, hWnd, (HMENU)ID_BUTTON, hInst, 0);
		hButton[1] = CreateWindow (L"Button", L"1", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  10, 115, 40, 30, hWnd, (HMENU)ID_BUTTON_1, hInst, 0);
		hButton[2] = CreateWindow (L"Button", L"2", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  55, 115, 40, 30, hWnd, (HMENU)ID_BUTTON_2, hInst, 0);
		hButton[3] = CreateWindow (L"Button", L"3", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  100, 115, 40, 30, hWnd, (HMENU)ID_BUTTON_3, hInst, 0);
		hButton[4] = CreateWindow (L"Button", L"4", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  10, 80, 40, 30, hWnd, (HMENU)ID_BUTTON_4, hInst, 0);
		hButton[5] = CreateWindow (L"Button", L"5", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  55, 80, 40, 30, hWnd, (HMENU)ID_BUTTON_5, hInst, 0);
		hButton[6] = CreateWindow (L"Button", L"6", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  100, 80, 40, 30, hWnd, (HMENU)ID_BUTTON_6, hInst, 0);
		hButton[7] = CreateWindow (L"Button", L"7", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  10, 45, 40, 30, hWnd, (HMENU)ID_BUTTON_7, hInst, 0);
		hButton[8] = CreateWindow (L"Button", L"8", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  55, 45, 40, 30, hWnd, (HMENU)ID_BUTTON_8, hInst, 0);
		hButton[9] = CreateWindow (L"Button", L"9", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  100, 45, 40, 30, hWnd, (HMENU)ID_BUTTON_9, hInst, 0);
		hButton[10] = CreateWindow (L"Button", L"+", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  150, 80, 43, 30, hWnd, (HMENU)ID_BUTTON_ADD, hInst, 0);
		hButton[11] = CreateWindow (L"Button", L"-", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  196, 80, 43, 30, hWnd, (HMENU)ID_BUTTON_MIN, hInst, 0);
		hButton[12] = CreateWindow (L"Button", L"*", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  150, 115, 43, 30, hWnd, (HMENU)ID_BUTTON_MUL, hInst, 0);
		hButton[13] = CreateWindow (L"Button", L"/", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  196, 115, 43, 30, hWnd, (HMENU)ID_BUTTON_DEL, hInst, 0);
		hButton[14] = CreateWindow (L"Button", L"=", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  150, 150, 90, 30, hWnd, (HMENU)ID_BUTTON_MAIN, hInst, 0);
		hButton[15] = CreateWindow (L"Button", L"C", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  150, 45, 90, 30, hWnd, (HMENU)ID_BUTTON_REM, hInst, 0);
       }
        break;

    case WM_COMMAND:{

		if((LOWORD(wParam)==ID_BUTTON_1)&&(HIWORD(wParam)==BN_CLICKED))
        {   
			SetWindowText(hEdit, L"1");
			GetWindowText (hEdit, buff, lstrlen (buff));
			//SendMessage (hEdit, WM_SETTEXT, 0, (LPARAM)buff);
        }

		if((LOWORD(wParam)==ID_BUTTON_2)&&(HIWORD(wParam)==BN_CLICKED))
        {   
			SetWindowText(hEdit, L"2");
			GetWindowText (hEdit, buff, lstrlen (buff));
			SendMessage (hEdit, WM_SETTEXT, 0, (LPARAM)buff);
        }

		if((LOWORD(wParam)==ID_BUTTON_ADD)&&(HIWORD(wParam)==BN_CLICKED))
        {
			SetWindowText(hEdit, L"+");
			GetWindowText (hEdit, buff, lstrlen (buff));
			SendMessage (hEdit, WM_SETTEXT, 0, (LPARAM)buff);
        }

		if((LOWORD(wParam)==ID_BUTTON_MAIN)&&(HIWORD(wParam)==BN_CLICKED))
        {
			calc[i] = _wtoi(buff);
			SendMessage (hEdit, WM_SETTEXT, 0, (LPARAM)buff);
        }
        break;

    }


    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
    return 0;
}
MartyM вне форума Ответить с цитированием
Старый 17.11.2012, 18:35   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Функционал в каком смысле?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2012, 18:59   #4
MartyM
 
Регистрация: 17.11.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Функционал в каком смысле?
Операции + - * /
MartyM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт калькулятора для сайта lines Фриланс 4 08.08.2011 16:39
Кнопка для калькулятора из 10-й в 16-ую систему счисления. iron_cross Помощь студентам 6 21.12.2010 12:00
Код Delphi для мульти-калькулятора Alex_Axel Общие вопросы Delphi 3 22.05.2010 21:22
Библиотека для WINAPI для работы с ORACL Golovastik SQL, базы данных 2 02.03.2010 19:42
UNIX Графический интерфейс для калькулятора (С) spirit_trapper Общие вопросы C/C++ 0 09.01.2010 00:51