| 27 */ |
27 */ |
| 28 |
28 |
| 29 #include "button.h" |
29 #include "button.h" |
| 30 #include "widget.h" |
30 #include "widget.h" |
| 31 |
31 |
| |
32 #include <stdio.h> |
| |
33 #include <stdlib.h> |
| |
34 |
| 32 static W32WidgetClass button_widget_class = { |
35 static W32WidgetClass button_widget_class = { |
| |
36 .eventproc = ui_button_eventproc, |
| 33 .enable = w32_widget_default_enable, |
37 .enable = w32_widget_default_enable, |
| 34 .show = w32_widget_default_show, |
38 .show = w32_widget_default_show, |
| 35 .get_preferred_size = ui_button_get_preferred_size, |
39 .get_preferred_size = ui_button_get_preferred_size, |
| 36 .destroy = w32_widget_default_destroy |
40 .destroy = w32_widget_default_destroy |
| 37 }; |
41 }; |
| 51 (HMENU)0, |
55 (HMENU)0, |
| 52 hInstance, |
56 hInstance, |
| 53 NULL); |
57 NULL); |
| 54 ui_win32_set_ui_font(hwnd); |
58 ui_win32_set_ui_font(hwnd); |
| 55 |
59 |
| 56 W32Widget *widget = w32_widget_create(&button_widget_class, hwnd, sizeof(UiButton)); |
60 W32Widget *widget = w32_widget_create(&button_widget_class, hwnd, sizeof(UiWidget)); |
| 57 ui_container_add(container, widget, &layout); |
61 ui_container_add(container, widget, &layout); |
| |
62 |
| |
63 UiWidget *btn = (UiWidget*)widget; |
| |
64 btn->obj = obj; |
| |
65 btn->callback = args->onclick; |
| |
66 btn->callbackdata = args->onclickdata; |
| 58 |
67 |
| 59 return widget; |
68 return widget; |
| 60 } |
69 } |
| 61 |
70 |
| 62 W32Size ui_button_get_preferred_size(W32Widget *widget) { |
71 W32Size ui_button_get_preferred_size(W32Widget *widget) { |
| 63 W32Size size; |
72 W32Size size; |
| 64 size.width = 100; |
73 size.width = 100; |
| 65 size.height = 30; |
74 size.height = 30; |
| 66 return size; |
75 return size; |
| 67 } |
76 } |
| |
77 |
| |
78 void ui_button_eventproc(W32Widget *widget, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { |
| |
79 UiWidget *w = (UiWidget*)widget; |
| |
80 |
| |
81 UiEvent e; |
| |
82 e.obj = w->obj; |
| |
83 e.document = e.obj->ctx->document; |
| |
84 e.window = e.obj->window; |
| |
85 e.eventdata = NULL; |
| |
86 e.eventdatatype = 0; |
| |
87 e.intval = 0; |
| |
88 e.set = ui_get_setop(); |
| |
89 |
| |
90 if (w->callback) { |
| |
91 w->callback(&e, w->callbackdata); |
| |
92 } |
| |
93 } |