diff options
Diffstat (limited to 'widgetfactory.cpp')
| -rw-r--r-- | widgetfactory.cpp | 66 |
1 files changed, 64 insertions, 2 deletions
diff --git a/widgetfactory.cpp b/widgetfactory.cpp index 3298d81..b2c3396 100644 --- a/widgetfactory.cpp +++ b/widgetfactory.cpp @@ -10,6 +10,7 @@ enum { PANE_CHECKBOX, PANE_GROUPBOX, PANE_ICONVIEW, + PANE_SPINBOX, PANE__MAX }; @@ -20,7 +21,8 @@ static const TCHAR *g_paneLabels[PANE__MAX] = { TEXT("Notebook"), //PANE_NOTEBOOK, TEXT("Checkbox"), //PANE_CHECKBOX, TEXT("GroupBox"), //PANE_GROUPBOX, - TEXT("Icon View") //PANE_ICONVIEW + TEXT("Icon View"), //PANE_ICONVIEW, + TEXT("Spin Box") //PANE_SPINBOX }; enum { @@ -30,6 +32,8 @@ enum { ID_BTNCOMBOCLEAR, ID_NOTEBOOK, ID_HELLO, + ID_SPINBOX, + ID_SPINBOXOUT, IDM_FILE, IDM_FILE_CLOSE, IDM_HELP, @@ -808,6 +812,62 @@ iconviewPanelInit(HWND panel) ALF_Panel_SetVTable(panel, &iconviewPanelVtbl, priv); } +/* spinbox panel */ + +static LRESULT +spinboxPanelCommand(void *closure, HWND panel, WORD notificationcode, WORD sourceid, HWND control) +{ + (void)closure; + + if (notificationcode == EN_CHANGE && sourceid == ID_SPINBOX) { + HWND out = ALF_ControlHwndById(panel, ID_SPINBOXOUT); + TCHAR buf[12]; + wsprintf(buf, TEXT("%d"), (int)ALF_SpinBox_Pos(control)); + ALF_SetText(out, buf); + return 1; + } + + return 0; +} + +static void +spinboxPanelAttach(void *closure, HWND panel) +{ + (void)closure; + + ALF_AddLabel(panel, (WORD)-1, 1, 1, TEXT("Spin Box -10 to +42")); + ALF_AddNumericSpinBox(panel, ID_SPINBOX, 3, 1, 12, -10, 42); + ALF_AddLabel(panel, ID_SPINBOXOUT, 3, 3, TEXT("initial")); + + ALF_Layout_SetRowMinSize(panel, 0, 825); + ALF_Layout_SetRowMinSize(panel, 2, 825); + ALF_Layout_SetRowMinSize(panel, 4, 825); + ALF_Layout_SetColumnMinSize(panel, 0, 825); + ALF_Layout_SetColumnMinSize(panel, 2, 525); + ALF_Layout_SetColumnMinSize(panel, 4, 825); + ALF_Layout_SetRowExpandNumerator(panel, 1, 1); + ALF_Layout_SetRowExpandNumerator(panel, 3, 1); + ALF_Layout_SetColumnExpandNumerator(panel, 3, 1); + ALF_Layout_SetColumnExpandNumerator(panel, 4, 1); +} + +static ALFPanelVTable spinboxPanelVtbl = { + spinboxPanelAttach, + commonPanelDestroy, + commonPanelMessage, + spinboxPanelCommand, + NULL, + commonPanelPaint, + NULL +}; + +static void +spinboxPanelInit(HWND panel) +{ + CommonPanelPriv *priv = ALF_New(CommonPanelPriv, 1); + ALF_Panel_SetVTable(panel, &spinboxPanelVtbl, priv); +} + void (*g_paneInitTable[PANE__MAX])(HWND) = { buttonPanelInit, //PANE_BUTTONS labelPanelInit, //PANE_LABEL, @@ -815,7 +875,8 @@ void (*g_paneInitTable[PANE__MAX])(HWND) = { notebookPanelInit, //PANE_NOTEBOOK, checkboxPanelInit, //PANE_CHECKBOX, groupboxPanelInit, //PANE_GROUPBOX, - iconviewPanelInit //PANE_ICONVIEW + iconviewPanelInit, //PANE_ICONVIEW, + spinboxPanelInit //PANE_SPINBOX }; static void @@ -1094,6 +1155,7 @@ WinMain addPaneToNotebook(hwndNtbk, PANE_COMBO); addPaneToNotebook(hwndNtbk, PANE_GROUPBOX); addPaneToNotebook(hwndNtbk, PANE_ICONVIEW); + addPaneToNotebook(hwndNtbk, PANE_SPINBOX); ALF_AddNativeButton(win, ID_HELLO, 1, 3, TEXT("&Hello World!")); ALF_AddNativeButton(win, (WORD)-1, 3, 3, TEXT("Goodbye, World")); |
