ui/win32/container.c

changeset 115
e57ca2747782
parent 113
dde28a806552
equal deleted inserted replaced
114:3da24640513a 115:e57ca2747782
33 #include "../common/container.h" 33 #include "../common/container.h"
34 #include "../motif/container.h" 34 #include "../motif/container.h"
35 35
36 36
37 static W32WidgetClass grid_layout_widget_class = { 37 static W32WidgetClass grid_layout_widget_class = {
38 .eventproc = NULL, 38 .eventproc = ui_grid_widget_event,
39 .enable = NULL, 39 .enable = NULL,
40 .show = w32_widget_default_show, 40 .show = w32_widget_default_show,
41 .get_preferred_size = ui_grid_layout_get_preferred_size, 41 .get_preferred_size = ui_grid_layout_get_preferred_size,
42 .destroy = w32_widget_default_destroy 42 .destroy = w32_widget_default_destroy
43 }; 43 };
58 layout2.margin_top = layout2.margin; 58 layout2.margin_top = layout2.margin;
59 layout2.margin_bottom = layout2.margin; 59 layout2.margin_bottom = layout2.margin;
60 } 60 }
61 ctn->add(ctn, widget, &layout2); 61 ctn->add(ctn, widget, &layout2);
62 ctn->container.newline = FALSE; 62 ctn->container.newline = FALSE;
63 }
64
65 int ui_grid_widget_event(W32Widget *widget, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
66 if (uMsg == WM_ERASEBKGND) {
67 HDC hdc = (HDC)wParam;
68 UiGridWidget *grid = (UiGridWidget*)widget;
69 RECT rc;
70 GetClientRect(hwnd, &rc);
71 FillRect(hdc, &rc, grid->brush);
72 return 1;
73 }
74 return 0;
63 } 75 }
64 76
65 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) { 77 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) {
66 UiGridLayout *grid = widget->layoutmanager; 78 UiGridLayout *grid = widget->layoutmanager;
67 W32Size size; 79 W32Size size;
132 HWND hwnd = CreateWindowEx( 144 HWND hwnd = CreateWindowEx(
133 0, 145 0,
134 TEXT("STATIC"), 146 TEXT("STATIC"),
135 NULL, 147 NULL,
136 WS_CHILD | WS_VISIBLE, 148 WS_CHILD | WS_VISIBLE,
137 0, 0, 100, 100, 149 0, 0, 300, 300,
138 parent, 150 parent,
139 NULL, 151 NULL,
140 hInstance, 152 hInstance,
141 NULL); 153 NULL);
142 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc); 154 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc);
143 155
144 W32Widget *widget = w32_widget_new(&grid_layout_widget_class, hwnd); 156 UiGridWidget *widget = w32_widget_create(&grid_layout_widget_class, hwnd, sizeof(UiGridWidget));
145 ui_container_add(container, widget, &layout); 157 ui_container_add(container, (W32Widget*)widget, &layout);
146 158
147 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO); 159 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO);
148 uic_object_push_container(obj, gridContainer); 160 uic_object_push_container(obj, gridContainer);
149 161
150 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer; 162 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer;
151 widget->layout = (W32LayoutFunc)ui_grid_layout; 163 widget->widget.layout = (W32LayoutFunc)ui_grid_layout;
152 widget->layoutmanager = grid->layout; 164 widget->widget.layoutmanager = grid->layout;
165 widget->brush = GetSysColorBrush(COLOR_BTNFACE);
153 grid->layout->preferred_width = 200; 166 grid->layout->preferred_width = 200;
154 grid->layout->preferred_height = 200; 167 grid->layout->preferred_height = 200;
155 168
156 return widget; 169 return (W32Widget*)widget;
157 } 170 }
158 171
159 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { 172 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) {
160 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); 173 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer));
161 container->container.hwnd = hwnd; 174 container->container.hwnd = hwnd;

mercurial