Imprimindo dados da tabela ASCII em uma COMBOBOX

main.html
#include <windows.h>
#include <stdlib.h>

#define ID_BUTTON  1

static HWND num1, ResSt, Lista;

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

void addMenus(HWND);
HMENU MenuPrincipal;

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, PSTR szCL, int iCS) {
    HWND     hwnd;
    MSG      msg;
    WNDCLASS wndclass;

    wndclass.style       = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WinProc;
    wndclass.cbClsExtra  = 0;
    wndclass.cbWndExtra  = 0;
    wndclass.hInstance   = hI;
    wndclass.hIcon       = LoadIcon(hI, IDI_APPLICATION);
    wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
    wndclass.lpszMenuName  = NULL;
    wndclass.lpszClassName = "Janela";    

    if(!RegisterClass(&wndclass)) {
        MessageBox(
            NULL,
            TEXT("Program requires Windows NT!"),
            "Error",
            MB_ICONERROR
        );
        return 0;
    }

    hwnd = CreateWindow(
        "Janela",TEXT("Calculo do Somatorio em C"),WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 500, 220,
        NULL, NULL, hI, NULL
    );

    ShowWindow (hwnd, iCS);

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

LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP) {
    int i;
    TCHAR szBuffer[64];
    switch(msg) {
        case WM_CREATE:
            addMenus(hwnd);//Cria a Barra de Menus
            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
            );
            ResSt = CreateWindow(
                TEXT("edit"), TEXT(""), WS_VISIBLE | WS_CHILD | WS_BORDER,
                320, 50, 80, 20,
                hwnd, NULL, NULL, NULL
            );
            Lista = CreateWindow(
                "combobox", NULL, WS_CHILD | WS_TABSTOP | WS_VISIBLE|
                CBS_DROPDOWNLIST | CBS_SIMPLE | WS_VSCROLL | CBS_HASSTRINGS,
                310, 90, 95, 250,
                hwnd, NULL, NULL, NULL
            );
            for(i=1; i<=256 ; i++) {  
                wsprintf(szBuffer, "%dº = %c", i, i);
                SendMessage(Lista, CB_ADDSTRING, wP, (LPARAM)szBuffer);
            }  
            return 0;
        case WM_COMMAND:
            if(LOWORD(wP)==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(ResSt, tamanho);
            }
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        default:
            return DefWindowProc(hwnd, msg, wP, lP);
    }
    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, "Fechar");

    SetMenu(hwnd, MenuPrincipal);
}

Comentários