1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <stdlib.h>
30
31 #include "win32.h"
32
33 W32Widget* w32_widget_new(W32WidgetClass *wclass,
HWND hwnd) {
34 return w32_widget_create(wclass, hwnd,
sizeof(W32Widget));
35 }
36
37 void* w32_widget_create(W32WidgetClass *wclass,
HWND hwnd,
size_t obj_size) {
38 W32Widget *w = calloc(obj_size,
1);
39 w->wclass = wclass;
40 w->hwnd = hwnd;
41 SetWindowLongPtr(hwnd,
GWLP_USERDATA, (
LONG_PTR)w);
42 return w;
43 }
44
45 W32Size w32_widget_get_preferred_size(W32Widget *w) {
46 if (w->wclass->get_preferred_size) {
47 return w->wclass->get_preferred_size(w);
48 }
49 return (W32Size){
0,
0};
50 }
51
52 void w32_widget_default_destroy(W32Widget *w) {
53 free(w);
54 }
55
56 void w32_widget_default_show(W32Widget *w,
BOOLEAN show) {
57 ShowWindow(w->hwnd, show ?
SW_SHOW :
SW_HIDE);
58 }
59
60 void w32_widget_default_enable(W32Widget *w,
BOOLEAN enable) {
61
62 }
63
64 W32Size w32_widget_default_get_preferred_size(W32Widget *widget) {
65 return (W32Size){
0,
0};
66 }
67
68