#include <stdlib.h>
#include "win32.h"
W32Widget* w32_widget_new(W32WidgetClass *wclass,
HWND hwnd) {
return w32_widget_create(wclass, hwnd,
sizeof(W32Widget));
}
void* w32_widget_create(W32WidgetClass *wclass,
HWND hwnd,
size_t obj_size) {
W32Widget *w = calloc(obj_size,
1);
w->wclass = wclass;
w->hwnd = hwnd;
SetWindowLongPtr(hwnd,
GWLP_USERDATA, (
LONG_PTR)w);
return w;
}
W32Size w32_widget_get_preferred_size(W32Widget *w) {
if (w->wclass->get_preferred_size) {
return w->wclass->get_preferred_size(w);
}
return (W32Size){
0,
0};
}
void w32_widget_default_destroy(W32Widget *w) {
free(w);
}
void w32_widget_default_show(W32Widget *w,
BOOLEAN show) {
ShowWindow(w->hwnd, show ?
SW_SHOW :
SW_HIDE);
}
void w32_widget_default_enable(W32Widget *w,
BOOLEAN enable) {
}
W32Size w32_widget_default_get_preferred_size(W32Widget *widget) {
return (W32Size){
0,
0};
}