#include "alf/alf.h" enum { ID_LBLHELLO, ID_LBL2, ID_LBL3, ID_ED1, ID_B1, ID_B2, ID_B3, ID_B4, ID_COMBO1, ID_LBL4, ID_COMBO2, ID_LBL5, ID_LBL6, 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); } static LRESULT handleCommand(void *closure, HWND window, WORD notificationcode, WORD sourceid, HWND control) { (void)closure; if (notificationcode == CBN_SELCHANGE && sourceid == ID_COMBO2) { TCHAR *text = ALF_ComboBoxCurrentText(control); ALF_SetWidgetText(window, ID_LBL6, text); HeapFree(GetProcessHeap(), 0, text); } if (control != NULL && sourceid == ID_B4) { HWND combo = ALF_WidgetHwndById(window, ID_COMBO2); ALF_ComboBoxSetCurrentIndex(combo, -1); } if (control != NULL && sourceid == ID_B2) { MessageBox(window, TEXT("Hello World!"), TEXT("Hello"), MB_ICONASTERISK|MB_OK); } return 0; } 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; cparams.vtbl.command = handleCommand; 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 Go Go!")); ALF_AddButton(win, ID_B2, 0, 2, TEXT("Oh m&y god,\r\nwho the hell cares?")); ALF_AddLabel(win, ID_LBL4, 0, 3, TEXT("Editable Combo Box:")); HWND hwndCombo1 = ALF_AddEditableComboBox(win, ID_COMBO1, 1, 3, TEXT("Hello!")); ALF_AddButton(win, ID_B3, 2, 3, TEXT("Ok")); ALF_ComboBoxInsertString(hwndCombo1, 0, TEXT("Hello World!")); ALF_ComboBoxInsertString(hwndCombo1, -1, TEXT("Goodbye World!")); ALF_ComboBoxInsertString(hwndCombo1, 1, TEXT("The quick brown fox jumps over the lazy dog")); ALF_AddLabel(win, ID_LBL5, 0, 4, TEXT("Selection-Only Combo Box:")); HWND hwndCombo2 = ALF_AddSelectionOnlyComboBox(win, ID_COMBO2, 1, 4); ALF_AddButton(win, ID_B4, 2, 4, TEXT("Lol")); /*HWND b4 = ALF_WidgetAtLayoutPosition(win, 2, 4); ALF_SetWidgetLayoutSize(win, b4, 6427, 0);*/ ALF_ComboBoxAddString(hwndCombo2, TEXT("Hello World!")); ALF_ComboBoxAddString(hwndCombo2, TEXT("Goodbye World!")); ALF_ComboBoxAddString(hwndCombo2, TEXT("The quick brown fox jumps over the lazy dog")); ALF_AddLabel(win, ID_LBL6, 0, 5, TEXT("[ComboBox2 value]")); ALF_RecalculateLayout(win); ALF_SetDefaultButton(win, ID_B2); ALF_ComboBoxSetText(hwndCombo2, TEXT("Goodbye World!")); EnableWindow(ALF_WidgetHwndById(win, ID_LBL3), FALSE); ALF_ResizeWindow(win, 1, 1); ALF_ShowModal(win); ALF_DestroyWindow(win); ALF_UnregisterWindowClass(app, clazz); ALF_TeardownApplication(app); return 0; } void _entry(void) { ExitProcess( #ifdef UNICODE wWinMain #else WinMain #endif (GetModuleHandle(NULL), NULL, GetCommandLine(), SW_SHOW)); }