summaryrefslogtreecommitdiff
path: root/widgetfactory.cpp
blob: 6259f17a084acde64b422956b1666247b9d8252a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "alf/alf.h"

enum {
    ID_LBLHELLO,
    ID_LBL2,
    ID_LBL3,
    ID_ED1,
    ID_B1,
    ID_B2,
    ID__MAX
};

static HBRUSH red;
static HBRUSH green;
static HBRUSH blue;
static HBRUSH white;

LRESULT
handleMessage(void *closure, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    (void)closure;

    if (msg == WM_CTLCOLORSTATIC) {
        DWORD id = GetDlgCtrlID((HWND)lparam);
        HDC hdcStatic = (HDC)wparam;
        if (id == ID_LBLHELLO) {
            SetTextColor(hdcStatic, RGB(0,0,0));
            SetBkColor(hdcStatic, RGB(255,0,0));
            return (LRESULT)red;
        } else if (id == ID_LBL2) {
            SetTextColor(hdcStatic, RGB(0,0,0));
            SetBkColor(hdcStatic, RGB(0,255,0));
            return (LRESULT)green;
        } /*else if (id == ID_LBL3) {
            SetTextColor(hdcStatic, RGB(255,255,255));
            SetBkColor(hdcStatic, RGB(0,0,255));
            return (LRESULT)blue;
        } else {
            SetTextColor(hdcStatic, RGB(0,0,0));
            SetBkColor(hdcStatic, RGB(255,255,255));
            return (LRESULT)white;
        }*/
    }

    return ALF_DefWindowProc(hwnd, msg, wparam, lparam);
}

int CALLBACK
#ifdef UNICODE
wWinMain
#else
WinMain
#endif
(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    (void)hPrevInstance;
    (void)lpCmdLine;
    (void)nCmdShow;

    ALF_SetDpiAwareness(ALF_DPI_AWARENESS_PER_MONITOR_AWARE_V2);

    red = CreateSolidBrush(RGB(255,0,0));
    green = CreateSolidBrush(RGB(0,255,0));
    blue = CreateSolidBrush(RGB(0,0,255));
    white = CreateSolidBrush(RGB(255,255,255));

    ALFWindowClassParams cparams;
    ZeroMemory(&cparams, sizeof(cparams));

    //cparams.className = TEXT("DummyClass");
    cparams.vtbl.message = handleMessage;

    ALFAPP app = ALF_CreateApplication(hInstance);

    LPCTSTR clazz = ALF_RegisterWindowClass(app, &cparams);

    HWND win = ALF_InstantiateWindow(app, clazz, NULL, NULL);

    ALF_AddLabel(win, ID_LBL2, 1, 0, TEXT("Hello, 2!\nblub"));

    HWND hwndLabel = CreateWindow(
                        TEXT("STATIC"),
                        TEXT("Hello World!"),
                        WS_CHILD | WS_VISIBLE | SS_LEFT,
                        0, 0, 50, 25,
                        win,
                        (HMENU)ID_LBLHELLO,
                        hInstance,
                        NULL);
    ALF_AddWidget(win, 0, 0, hwndLabel, 5000, 1000, ALF_MESSAGEFONT);

    ALF_AddLabel(win, ID_LBL3, 0, 1, TEXT("Good Morning my &Angel!"));

    ALF_AddEdit(win, ID_ED1, 1, 1, TEXT("Happy Birthday!"));

    ALF_AddButton(win, ID_B1, 2, 1, TEXT("&Go!"));
    ALF_AddButton(win, ID_B2, 0, 2, TEXT("Oh m&y god,\r\nwho the hell cares?"));

    ALF_RecalculateLayout(win);
    ALF_SetDefaultButton(win, ID_B1);

    //EnableWindow(ALF_WidgetHwndById(win, ID_LBL3), FALSE);

    ALF_ResizeWindow(win, 1, 1);

    ALF_ShowModal(win);

    DestroyWindow(win);

    return 0;
}