Somatório com a bioblioteca windows.h

Somatório com a bioblioteca windows.h
#if defined(UNICODE) && !defined(_UNICODE)
    #define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
    #define UNICODE
#endif

#include <tchar.h>
#include <windows.h>
#include "resource.h"

#define ID_BUTTON  1

static HWND num1, ResSomatorio, Lista;

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

void addMenus(HWND);
HMENU MenuPrincipal;

TCHAR szClassName[ ] = _T("CodeBlocksWindowsApp");

int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) {
    HWND       hwnd;
    MSG        messages;
    WNDCLASSEX wincl;

    wincl.hInstance     = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc   = WindowProcedure;
    wincl.style         = CS_DBLCLKS;
    wincl.cbSize        = sizeof(WNDCLASSEX);
    wincl.hIcon         = LoadIcon (hThisInstance, IDI_ICON);
    wincl.hIconSm       = LoadIcon (NULL, IDI_ICON);
    wincl.hCursor       = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName  = NULL;
    wincl.cbClsExtra    = 0;
    wincl.cbWndExtra    = 0;
    wincl.hbrBackground = GetSysColorBrush(COLOR_3DFACE);

    if (!RegisterClassEx(&wincl)) {
        return 0;
    }

    hwnd = CreateWindowEx (
        0, szClassName, _T("Calculo do Somatorio em C"), WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 500, 200,
        HWND_DESKTOP, NULL, hThisInstance, NULL
    );

    ShowWindow (hwnd, nCmdShow);

    while (GetMessage (&messages, NULL, 0, 0)) {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
        case WM_CREATE:
            addMenus(hwnd);

            CreateWindow(
                TEXT("static"),TEXT("Somatorio de 4 = 1+2+3+4 = 10"),WS_VISIBLE | WS_CHILD,
                30, 20, 480, 20,
                hwnd, NULL, NULL, NULL
            );

            num1 = CreateWindow(
                TEXT("edit"), TEXT(""), WS_VISIBLE | WS_CHILD | WS_BORDER,
                30, 50, 80, 20,
                hwnd, NULL, NULL, NULL
            );

            CreateWindow(
                TEXT("button"), TEXT("Calcular"), WS_VISIBLE | WS_CHILD | WS_BORDER,
                220, 50, 80, 20,
                hwnd, (HMENU) ID_BUTTON, NULL, NULL
            );

            CreateWindow(
                TEXT("static"), TEXT("Codigo Fonte: \nhttps://cgllp-mz.blogspot.com"),
                WS_VISIBLE | WS_CHILD,
                30, 90, 320, 40,
                hwnd, NULL, NULL, NULL
            );
            ResSomatorio = CreateWindow(
                TEXT("edit"), TEXT(""), WS_VISIBLE | WS_CHILD | WS_BORDER,
                320, 50, 80, 20,
                hwnd, NULL, NULL, NULL
            );
            Lista = CreateWindow( /**static HWND Lista -> Declarado No escopo*/
                "combobox", NULL, WS_CHILD|WS_TABSTOP|WS_VISIBLE|CBS_DROPDOWNLIST|CBS_SORT|WS_VSCROLL,
                310, 90, 95, 150,
                hwnd, NULL, NULL, NULL
            );
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"Inscreva-se");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"Curta");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"Compartilhe");
            break;

        case WM_COMMAND:
            if(LOWORD(wParam)==ID_BUTTON) {
                unsigned long somatorio(int n) {
                    int i, x;
                    for(i=1, x=0; i<=n; i++) {
                        x = x+i;
                    }
                    return (x);
                }
                int n1 = GetWindowTextLength(num1)+1;

                static char t1[40];

                GetWindowText(num1, t1, n1);

                int resultado, valor = atoi(t1);

                resultado = somatorio(valor);

                char tamanho[40];

                itoa(resultado, tamanho, 10);

                SetWindowText(ResSomatorio, tamanho);
                return 0;
            }
            break;

        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

void addMenus(HWND hwnd) {
    MenuPrincipal = CreateMenu();

    AppendMenu(MenuPrincipal, MF_STRING, NULL, "Arquivo");
    AppendMenu(MenuPrincipal, MF_STRING, NULL, "Editar");
    AppendMenu(MenuPrincipal, MF_STRING, NULL, "Copiar");
    AppendMenu(MenuPrincipal, MF_STRING, NULL, "Desligar");

    SetMenu(hwnd, MenuPrincipal);
}

Comentários