hAccel = LoadAccelerators(hI, nm);



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

#define NUMBUTTONS  12
#define MEDIDA      301

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

void InitToolbar(void);

HBRUSH   Brush[6];
TBBUTTON tbButtons[NUMBUTTONS];
HWND     tbwnd;
int      ToolBarActive;
UINT     wSelection;
HMENU    hMenu;

TCHAR nm[] = "Menu";

char vs[] = "e livrou o justo Ló, enfadado da vida dissoluta dos \
homens abomináveis - 2 Pedro 2:7";

static HWND x, y;

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hCA, LPSTR szCL, int iCS) {
    HWND     hjan;
    MSG      msg;
    WNDCLASS wc;
    HACCEL   hAccel;
    int      i;

    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = ProcJan;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hI;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName  = nm;
    wc.lpszClassName = nm;

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

    hjan = CreateWindow(
        nm, TEXT("Menu"), WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        HWND_DESKTOP, NULL, hI, NULL
    );
    hAccel = LoadAccelerators(hI, nm);

    InitToolbar();
    InitCommonControls();

    tbwnd = CreateToolbarEx(
        hjan,WS_VISIBLE|WS_CHILD|WS_BORDER|TBSTYLE_TOOLTIPS,IDM_TOOLBAR,
        NUMBUTTONS, hI, IDTB_BMP, tbButtons,
        NUMBUTTONS, 0, 0, 16, 16, sizeof(TBBUTTON)
    );

    ShowWindow(hjan, iCS);
    UpdateWindow(hjan);

    while(GetMessage(&msg, NULL, 0, 0)) {
        if(!TranslateAccelerator(hjan, hAccel, &msg)) {
            TranslateMessage(&msg);
            DispatchMessage (&msg);
        }
    }
    for(i=0; i<6; i++) {
        DeleteObject((HGDIOBJ) Brush[i]);
    }
    return msg.wParam;
}

LRESULT CALLBACK ProcJan(HWND hwnd, UINT msg, WPARAM wP, LPARAM lParam) {
    HDC           hdc;
    PAINTSTRUCT   ps;
    RECT          rect;
    LPTOOLTIPTEXT TTtext;

    switch(msg) {
        case WM_CREATE:
            hMenu = GetMenu(hwnd);
            Brush[0] = CreateSolidBrush(RGB(0, 0, 255));
            Brush[1] = CreateSolidBrush(RGB(255, 0, 255));
            Brush[2] = CreateSolidBrush(RGB(0, 255, 0));
            Brush[3] = CreateSolidBrush(RGB(0, 0, 0));
            Brush[4] = CreateSolidBrush(RGB(255,255,255));
            Brush[5] = CreateSolidBrush(RGB(255, 0, 0));
            CreateWindow(
                TEXT("button"),TEXT("Screen(x, y)"),WS_VISIBLE|WS_CHILD,
                10, 100, 120, 20,
                hwnd, (HMENU) MEDIDA, NULL, NULL
            );
            x = CreateWindow( /** Largura */
                TEXT("edit"),TEXT(""),WS_VISIBLE|WS_CHILD|DT_CENTER,
                200, 100, 120, 20,
                hwnd, NULL, NULL, NULL
            );
            y = CreateWindow( /** Altura */
                TEXT("edit"),TEXT(""),WS_VISIBLE|WS_CHILD|DT_CENTER,
                360, 100, 120, 20,
                hwnd, NULL, NULL, NULL
            );
            CreateWindow(
                TEXT("button"),TEXT("2 Pedro 2:7"),WS_VISIBLE|WS_CHILD,
                520, 100, 120, 20,
                hwnd, 302, NULL, NULL
            );
            return 0;
        case WM_NOTIFY:
            TTtext = (LPTOOLTIPTEXT) lParam;
            if(TTtext->hdr.code==TTN_NEEDTEXT) {
                switch(TTtext->hdr.idFrom) {
                    case IDM_BLUE:
                        TTtext->lpszText="Azul";
                        break;
                    case IDM_CIANO:
                        TTtext->lpszText="Ciano";
                        break;
                    case IDM_VERDE:
                        TTtext->lpszText="Verde";
                        break;
                    case IDM_PRETO:
                        TTtext->lpszText="Preto";
                        break;
                    case IDM_BRANCO:
                        TTtext->lpszText="Branco";
                        break;
                    case IDM_VERMELHO:
                        TTtext->lpszText="Vermelho";
                        break;
                    case IDM_MSG1:
                        TTtext->lpszText="Mensagem 1";
                        break;
                    case IDM_MSG2:
                        TTtext->lpszText="Mensagem 2";
                        break;
                    case IDM_MSG3:
                        TTtext->lpszText="Mensagem 3";
                        break;
                    case IDM_SAIR:
                        TTtext->lpszText="Sair";
                        break;
                }
            }
            return 0;
        case WM_COMMAND:
            switch(LOWORD(wP)) {
                case IDM_BLUE:
                case IDM_CIANO:
                case IDM_VERDE:
                case IDM_PRETO:
                case IDM_BRANCO:
                case IDM_VERMELHO:
                    hMenu      = GetMenu(hwnd);
                    CheckMenuItem(hMenu, wSelection, MF_UNCHECKED);
                    wSelection = LOWORD(wP);
                    CheckMenuItem(hMenu, wSelection, MF_CHECKED);
                    InvalidateRect(hwnd, NULL, 0);
                    break;
                case IDM_MSG1:
                    MessageBox(
                        hwnd,
                        "Mensagem 1",
                        nm,
                        MB_OK|MB_ICONEXCLAMATION
                    );
                    break;
                case IDM_MSG2:
                    MessageBox(
                        hwnd,
                        "Mensagem 2",
                        nm,
                        MB_OK|MB_ICONEXCLAMATION
                    );
                    break;
                case IDM_MSG3:
                    MessageBox(
                        hwnd,
                        "Mensagem 3",
                        nm,
                        MB_OK|MB_ICONEXCLAMATION
                    );
                    break;
                case IDM_SAIR:
                    if(IDOK==MessageBox(hwnd,"Sair",nm,MB_OK|MB_OKCANCEL|0x30)) {
                        SendMessage(hwnd, WM_CLOSE, 0, 0L);
                    }
                    break;
                case IDM_MOSTRARB:
                    ToolBarActive = 1;
                    ShowWindow(tbwnd, SW_RESTORE);
                    InvalidateRect(hwnd, NULL, 1);
                    break;
                case IDM_ESCB:
                    ToolBarActive=0;
                    ShowWindow(tbwnd, SW_HIDE);
                    InvalidateRect(hwnd, NULL, 1);
                    break;
                }
                if(LOWORD(wP)==MEDIDA) {
                    int largura, altura;
                    largura = GetSystemMetrics(SM_CXSCREEN);
                    altura  = GetSystemMetrics(SM_CYSCREEN);

                    static char cnt1[400], cnt2[400];

                    itoa(largura, cnt1, 10);

                    itoa(altura, cnt2, 10);

                    SetWindowText(x, cnt1);

                    SetWindowText(y, cnt2);
                }
                if(LOWORD(wP)==302) {
                    MessageBox(hwnd, vs, "2 Pedro 2:7", MB_OK);
                }
                return 0;
            case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                GetClientRect(hwnd, &rect);
                FillRect(hdc, &rect, Brush[wSelection]);
                EndPaint(hwnd, &ps);
                return 0;
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
            case WM_CLOSE:
                DestroyWindow(hwnd);
                return 0;
    }
    return DefWindowProc(hwnd, msg, wP, lParam);
}


void InitToolbar() {
    tbButtons[0].iBitmap  = 0;
    tbButtons[0].idCommand= IDM_BLUE;
    tbButtons[0].fsState  = TBSTATE_ENABLED;
    tbButtons[0].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[0].dwData   = 0L;
    tbButtons[0].iString  = 0;

    tbButtons[1].iBitmap  = 1;
    tbButtons[1].idCommand= IDM_CIANO;
    tbButtons[1].fsState  = TBSTATE_ENABLED;
    tbButtons[1].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[1].dwData   = 0L;
    tbButtons[1].iString  = 0;

    tbButtons[2].iBitmap  = 2;
    tbButtons[2].idCommand= IDM_VERDE;
    tbButtons[2].fsState  = TBSTATE_ENABLED;
    tbButtons[2].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[2].dwData   = 0L;
    tbButtons[2].iString  = 0;

    tbButtons[3].iBitmap  = 3;
    tbButtons[3].idCommand= IDM_PRETO;
    tbButtons[3].fsState  = TBSTATE_ENABLED;
    tbButtons[3].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[3].dwData   = 0L;
    tbButtons[3].iString  = 0;

    tbButtons[4].iBitmap  = 4;
    tbButtons[4].idCommand= IDM_BRANCO;
    tbButtons[4].fsState  = TBSTATE_ENABLED;
    tbButtons[4].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[4].dwData   = 0L;
    tbButtons[4].iString  = 0;

    tbButtons[5].iBitmap  = 5;
    tbButtons[5].idCommand= IDM_VERMELHO;
    tbButtons[5].fsState  = TBSTATE_ENABLED;
    tbButtons[5].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[5].dwData   = 0L;
    tbButtons[5].iString  = 0;

    tbButtons[6].iBitmap  = 0;
    tbButtons[6].idCommand= 0;
    tbButtons[6].fsState  = TBSTATE_ENABLED;
    tbButtons[6].fsStyle  = TBSTYLE_SEP;
    tbButtons[6].dwData   = 0L;
    tbButtons[6].iString  = 0;

    tbButtons[7].iBitmap  = 6;
    tbButtons[7].idCommand= IDM_MSG1;
    tbButtons[7].fsState  = TBSTATE_ENABLED;
    tbButtons[7].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[7].dwData   = 0L;
    tbButtons[7].iString  = 0;

    tbButtons[8].iBitmap  = 7;
    tbButtons[8].idCommand= IDM_MSG2;
    tbButtons[8].fsState  = TBSTATE_ENABLED;
    tbButtons[8].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[8].dwData   = 0L;
    tbButtons[8].iString  = 0;

    tbButtons[9].iBitmap  = 8;
    tbButtons[9].idCommand= IDM_MSG3;
    tbButtons[9].fsState  = TBSTATE_ENABLED;
    tbButtons[9].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[9].dwData   = 0L;
    tbButtons[9].iString  = 0;

    tbButtons[10].iBitmap  = 0;
    tbButtons[10].idCommand= 0;
    tbButtons[10].fsState  = TBSTATE_ENABLED;
    tbButtons[10].fsStyle  = TBSTYLE_SEP;
    tbButtons[10].dwData   = 0L;
    tbButtons[10].iString  = 0;

    tbButtons[11].iBitmap  = 9;
    tbButtons[11].idCommand= IDM_SAIR;
    tbButtons[11].fsState  = TBSTATE_ENABLED;
    tbButtons[11].fsStyle  = TBSTYLE_BUTTON;
    tbButtons[11].dwData   = 0L;
    tbButtons[11].iString  = 0;
}


/************* Arquivo: Resource.h *************/

#define IDM_BLUE     0
#define IDM_CIANO    1
#define IDM_VERDE    2
#define IDM_PRETO    3
#define IDM_BRANCO   4
#define IDM_VERMELHO 5

#define IDM_MSG1     10
#define IDM_MSG2     11
#define IDM_MSG3     12

#define IDM_SAIR     20
#define IDM_MOSTRARB 30
#define IDM_ESCB     31

#define IDM_TOOLBAR  200

#define IDTB_BMP     300


/************* Arquivo: Resource.rc *************/

#include "resource.h"
#include "afxres.h"

Menu MENU {
    POPUP "&Cor" {
        POPUP "Mais &Cores" {
            MENUITEM "&Preto\t^P",    IDM_PRETO
            MENUITEM "&Branco\t^B",   IDM_BRANCO
            MENUITEM "&Vermelho\t^V", IDM_VERMELHO
        }
        MENUITEM "A&zul\t^Z",         IDM_BLUE
        MENUITEM "C&iano\t^A",        IDM_CIANO
        MENUITEM "Ve&rde\t^R",        IDM_VERDE
    }
    POPUP "&Mensagens" {
        MENUITEM "Mensagem &1\t^F1", IDM_MSG1
        MENUITEM "Mensagem &2\t^F2", IDM_MSG2
        MENUITEM "Mensagem &3\t^F3", IDM_MSG3
    }

    MENUITEM "&Sair ^S",       IDM_SAIR

    POPUP "&Botões" {
        MENUITEM "&Mostar\t^M",   IDM_MOSTRARB
        MENUITEM SEPARATOR
        MENUITEM "&Esconder\t^E", IDM_ESCB
    }
}

Menu ACCELERATORS {
    "^Z",  IDM_BLUE
    "^A",  IDM_CIANO
    "^R",  IDM_VERDE
    "^P",  IDM_PRETO
    "^B",  IDM_BRANCO
    "^V",  IDM_VERMELHO

    VK_F1, IDM_MSG1, VIRTKEY
    VK_F2, IDM_MSG2, VIRTKEY
    VK_F3, IDM_MSG3, VIRTKEY

    "^S",  IDM_SAIR
    "^M",  IDM_MOSTRARB
    "^E",  IDM_ESCB
}


Comentários