ui/win32/container.c

changeset 891
0804fc9298f6
parent 880
9c99ff36513f
child 938
be4c88ded783
equal deleted inserted replaced
890:8d30cbd1c465 891:0804fc9298f6
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 void ui_grid_widget_event(W32Widget *widget, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
66 HDC hdc = (HDC)wParam;
67 UiGridWidget *grid = (UiGridWidget*)widget;
68 RECT rc;
69 GetClientRect(hwnd, &rc);
70 FillRect(hdc, &rc, grid->brush);
63 } 71 }
64 72
65 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) { 73 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) {
66 UiGridLayout *grid = widget->layoutmanager; 74 UiGridLayout *grid = widget->layoutmanager;
67 W32Size size; 75 W32Size size;
132 HWND hwnd = CreateWindowEx( 140 HWND hwnd = CreateWindowEx(
133 0, 141 0,
134 TEXT("STATIC"), 142 TEXT("STATIC"),
135 NULL, 143 NULL,
136 WS_CHILD | WS_VISIBLE, 144 WS_CHILD | WS_VISIBLE,
137 0, 0, 100, 100, 145 0, 0, 300, 300,
138 parent, 146 parent,
139 NULL, 147 NULL,
140 hInstance, 148 hInstance,
141 NULL); 149 NULL);
142 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc); 150 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc);
143 151
144 W32Widget *widget = w32_widget_new(&grid_layout_widget_class, hwnd); 152 UiGridWidget *widget = w32_widget_create(&grid_layout_widget_class, hwnd, sizeof(UiGridWidget));
145 ui_container_add(container, widget, &layout); 153 ui_container_add(container, (W32Widget*)widget, &layout);
146 154
147 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO); 155 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO);
148 uic_object_push_container(obj, gridContainer); 156 uic_object_push_container(obj, gridContainer);
149 157
150 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer; 158 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer;
151 widget->layout = (W32LayoutFunc)ui_grid_layout; 159 widget->widget.layout = (W32LayoutFunc)ui_grid_layout;
152 widget->layoutmanager = grid->layout; 160 widget->widget.layoutmanager = grid->layout;
161 widget->brush = GetSysColorBrush(COLOR_BTNFACE);
153 grid->layout->preferred_width = 200; 162 grid->layout->preferred_width = 200;
154 grid->layout->preferred_height = 200; 163 grid->layout->preferred_height = 200;
155 164
156 return widget; 165 return (W32Widget*)widget;
157 } 166 }
158 167
159 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { 168 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) {
160 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); 169 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer));
161 container->container.hwnd = hwnd; 170 container->container.hwnd = hwnd;

mercurial