| 33 W32Widget* w32_widget_new(W32WidgetClass *wclass, HWND hwnd) { |
33 W32Widget* w32_widget_new(W32WidgetClass *wclass, HWND hwnd) { |
| 34 return w32_widget_create(wclass, hwnd, sizeof(W32Widget)); |
34 return w32_widget_create(wclass, hwnd, sizeof(W32Widget)); |
| 35 } |
35 } |
| 36 |
36 |
| 37 void* w32_widget_create(W32WidgetClass *wclass, HWND hwnd, size_t obj_size) { |
37 void* w32_widget_create(W32WidgetClass *wclass, HWND hwnd, size_t obj_size) { |
| 38 W32Widget *w = malloc(obj_size); |
38 W32Widget *w = calloc(obj_size, 1); |
| 39 w->wclass = wclass; |
39 w->wclass = wclass; |
| 40 w->hwnd = hwnd; |
40 w->hwnd = hwnd; |
| 41 SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)w); |
41 SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)w); |
| 42 return w; |
42 return w; |
| 43 } |
43 } |