Programação em C com Aplicação Gráfica e suas Vantagens 15

Programação em C com Aplicação Gráfica e suas Vantagens 15
#include <windows.h>
#include "resource.h"
#include <stdio.h>
#include <time.h>

#define BTN_SAIR 2

LRESULT CALLBACK ProcJan(HWND, UINT, WPARAM, LPARAM);
char szNomeAplic[] = "Principal";

HMENU menuP, sMenu;

static HWND Lista;

int WINAPI WinMain(HINSTANCE hCopia, HINSTANCE hCopiaAnt, LPSTR szLinhaCmd, int iCmdMostrar) {
    HWND     hjan;
    MSG      msg;
    WNDCLASS classjan;

    classjan.style         = CS_HREDRAW | CS_VREDRAW;
    classjan.lpfnWndProc   = ProcJan;
    classjan.cbClsExtra    = 0;
    classjan.cbWndExtra    = 0;
    classjan.hInstance     = hCopia;
    classjan.hIcon         = LoadIcon(hCopia, IDI_ICON);
    classjan.hCursor       = LoadCursor(NULL, IDC_ARROW);
    classjan.hbrBackground = GetSysColorBrush(COLOR_INACTIVECAPTION);
    classjan.lpszMenuName  = NULL;
    classjan.lpszClassName = szNomeAplic;

    if(!RegisterClass(&classjan)) {
        return 0;
    }

    hjan = CreateWindow(szNomeAplic, "Janela Principal", WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT, CW_USEDEFAULT, 500, 300,
                        NULL, NULL, hCopia, NULL);

    ShowWindow(hjan, iCmdMostrar);
    UpdateWindow(hjan);

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

    return msg.wParam;
}

LRESULT CALLBACK ProcJan(HWND hjan, UINT iMsg, WPARAM wParam, LPARAM lParam) {

    switch(iMsg) {
        case WM_CREATE:
            menuP = CreateMenu();
            sMenu = CreateMenu();

            AppendMenu(menuP, MF_POPUP, (UINT_PTR) sMenu, "Arquivo");
            AppendMenu(menuP, MF_STRING, NULL, "Editar");
            AppendMenu(menuP, MF_STRING, NULL, "Copiar");
            AppendMenu(menuP, MF_STRING, 1, "Evento");

            AppendMenu(sMenu, MF_STRING, NULL, "SUB 1");
            AppendMenu(sMenu, MF_STRING, NULL, "Camera");
            AppendMenu(sMenu, MF_STRING, NULL, "Rede");

            SetMenu(hjan, menuP);


            CreateWindow(
                TEXT("static"), TEXT("O Senhor, teu Deus, te despertará um profeta do meio de ti, de teus irmãos, como eu; a ele ouvireis; \nDeuteronomio 18 v15;"),
                WS_VISIBLE | WS_CHILD | ES_LEFT,
                10, 20, 400, 50,
                hjan, NULL, NULL, NULL
            );

            CreateWindow(
                TEXT("button"), TEXT("Beep(500, 200)"), WS_VISIBLE | WS_CHILD,
                10, 100, 110, 20,
                hjan, 3, NULL, NULL
            );
            CreateWindow(
                TEXT("button"), TEXT("Beep(200, 100)"), WS_VISIBLE | WS_CHILD,
                125, 100, 110, 20,
                hjan, 4, NULL, NULL
            );
            CreateWindow(
                TEXT("button"), TEXT("Beep(800, 300)"), WS_VISIBLE | WS_CHILD,
                240, 100, 110, 20,
                hjan, 5, NULL, NULL
            );
            CreateWindow(
                TEXT("button"), TEXT("Beep(200, 200)"), WS_VISIBLE | WS_CHILD,
                355, 100, 110, 20,
                hjan, 6, NULL, NULL
            );

            CreateWindow(
                TEXT("button"), TEXT("Executar"), WS_VISIBLE | WS_CHILD,
                10, 140, 100, 20,
                hjan, NULL, NULL, NULL
            );
            CreateWindow(
                TEXT("button"), TEXT("Sair"), WS_VISIBLE | WS_CHILD,
                160, 140, 100, 20,
                hjan, (HWND) BTN_SAIR, NULL, NULL
            );

            struct tm *ptr;
            time_t lt;
            lt = time(NULL);
            ptr = localtime(&lt);

            CreateWindow(
                TEXT("static"), asctime(ptr), WS_VISIBLE | WS_CHILD,
                10, 180, 200, 20,
                hjan, 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,
                320, 140, 95, 150,
                hjan, NULL, NULL, NULL
            );
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"C/C++");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"PHP");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"JS");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"HTML");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"XSLT");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"PASCAL");
            SendMessage(Lista, CB_ADDSTRING, 0, (LPARAM)"XML");
            return 0;
        case WM_COMMAND:
            if(LOWORD(wParam)==1) {
                SetWindowText(hjan,"Alterar Título!!!!!!!!!!");
            }
            if(LOWORD(wParam)==BTN_SAIR) {
                exit(0);
            }
            if(LOWORD(wParam)==3) {
                Beep(500, 200);
            }
            if(LOWORD(wParam)==4) {
                Beep(200, 100);
            }
            if(LOWORD(wParam)==5) {
                Beep(800, 300);
            }
            if(LOWORD(wParam)==6) {
                Beep(200, 200);
            }
            return 0;

        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    }
    return DefWindowProc(hjan, iMsg, wParam, lParam);

}

Comentários