PUSHBUTTON em Caixa de Diálogo - Post modificado em 14/06/2024

main.html
#include <windows.h>
#include "resource.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ElipseConf(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, LPSTR lpCmdLine, int iCS) {
    static TCHAR szAppName[] = TEXT("CaixaDeDialogo");
    WNDCLASS wc;
    MSG msg;
    HWND hwnd;

    memset(&wc,0,sizeof(wc));
    wc.style		 = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc	 = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance	 = hI;
    wc.hIcon		 = LoadIcon(hI, szAppName);
    wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = szAppName;
    wc.lpszClassName = szAppName;

    if(!RegisterClass(&wc)) {
        MessageBox(
            NULL,
            "Window Registration Failed!",
            "Error!",
            MB_ICONEXCLAMATION | MB_OK
        );
        return 0;
    }
	
    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = ElipseConf;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hI;
    wc.hIcon         = LoadIcon(hI, szAppName);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = TEXT("EllipPush");
	
    RegisterClass(&wc);

    hwnd = CreateWindow(
        szAppName,"Dialog",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 500, 300,
        NULL, NULL, hI, NULL
    );

    if(hwnd == NULL) {
        MessageBox(
            NULL,
            "Window Creation Failed!",
            "Error!",
            MB_ICONEXCLAMATION|MB_OK
        );
        return 0;
    }

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

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP) {
    static HINSTANCE hInstance;
    switch(msg) {
        case WM_CREATE:
            hInstance = ((LPCREATESTRUCT) lP)->hInstance;
            return 0;
        case WM_COMMAND:
            switch(LOWORD(wP)) {
                case IDM_APP_ABOUT:
                    DialogBox(
                        hInstance,
                        TEXT("AboutBox"),
                        hwnd,
                        AboutDlgProc
                    );
            }
            return 0;
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }		
        default:
            return DefWindowProc(hwnd, msg, wP, lP);
    }
    return 0;
}

BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP) {
    switch(msg) {
        case WM_INITDIALOG:
            return TRUE;
        case WM_COMMAND:
            switch(LOWORD(wP)) {
                case IDOK:
                    EndDialog(hDlg, 0);
                    return TRUE;
                case IDC_FECHAR:
                    exit(0);
                    return 0;
            }
            break;
    }
    return FALSE;
}

LRESULT CALLBACK ElipseConf(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP) {
    TCHAR szText[40];
    HBRUSH hBrush;
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;

    switch(msg) {
        case WM_PAINT:
            GetClientRect(hwnd, &rect);
            GetWindowText(hwnd, szText, sizeof(szText));
            hdc = BeginPaint(hwnd, &ps);
            hBrush = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
            hBrush = (HBRUSH) SelectObject(hdc, hBrush);
            SetBkColor(hdc, GetSysColor(COLOR_WINDOW));
            SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
            Ellipse (
                hdc,
                rect.left,
                rect.top,
                rect.right,
                rect.bottom
            );
            DrawText(
                hdc, szText, -1, &rect,
                DT_SINGLELINE | DT_CENTER | DT_VCENTER
            );
            DeleteObject(SelectObject(hdc, hBrush));
            EndPaint(hwnd, &ps);
            return 0;
        case WM_KEYUP:
            if(wP != VK_SPACE)
                break;
        case WM_LBUTTONUP:
            SendMessage(
                GetParent(hwnd),
                WM_COMMAND,
                GetWindowLong(hwnd, GWL_ID),
                (LPARAM) hwnd
            );
            return 0;
    }
    return DefWindowProc(hwnd, msg, wP, lP);
}


resource.html



/********************Arquivo: resource.h********************/


#define IDM_APP_ABOUT                               40001
#define IDC_STATIC                                     -1
#define IDS_N1                         "Fechar DialogBox"
#define IDC_FECHAR                                      7

resourcerc.html



/********************Arquivo: resource.rc********************/

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

AboutBox DIALOG DISCARDABLE 38, 32, 160, 180 //x,y,xw,yh
STYLE DS_MODALFRAME | WS_POPUP
FONT 12, "MS Sans Serif"
BEGIN
    ICON  "CaixaDeDialogo", IDC_STATIC, 7, 7, 20, 20
    CONTROL IDS_N1, IDOK,"EllipPush",
        WS_GROUP | WS_TABSTOP,52,20,58,20
    PUSHBUTTON "Fechar Aplicação", IDC_FECHAR,
        20, 50, 120, 20
    PUSHBUTTON "PUSHBUTTON2", 8,
        20, 90, 120, 20
    PUSHBUTTON "PUSHBUTTON3", 9,
        20, 130, 120, 20
END

CaixaDeDialogo MENU DISCARDABLE
BEGIN
    POPUP "&Help"
    BEGIN
        MENUITEM "&About About3...", IDM_APP_ABOUT
    END
END

CaixaDeDialogo ICON DISCARDABLE "project1.ico"

Comentários