ui/win32/button.c

changeset 825
1bac7e45712b
parent 817
d09817e6e6a4
child 841
651cf2c59dd9
equal deleted inserted replaced
824:a0ea8f3aa6e8 825:1bac7e45712b
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 }

mercurial