ui/win32/window.c

changeset 113
dde28a806552
parent 112
c3f2f16fa4b8
equal deleted inserted replaced
112:c3f2f16fa4b8 113:dde28a806552
50 50
51 static HINSTANCE hInstance; 51 static HINSTANCE hInstance;
52 52
53 static const char *mainWindowClass = "UiMainWindow"; 53 static const char *mainWindowClass = "UiMainWindow";
54 54
55 LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
56 W32Widget *widget = (W32Widget*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
57 if (widget && widget->wclass->eventproc) {
58 widget->wclass->eventproc(widget, hwnd, uMsg, wParam, lParam);
59 }
60 switch(uMsg) {
61 case WM_DESTROY: {
62 PostQuitMessage(0);
63 break;
64 }
65 case WM_COMMAND: {
66 HWND hwndCtrl = (HWND)lParam;
67 W32Widget *cmdWidget = (W32Widget*)GetWindowLongPtr(hwndCtrl, GWLP_USERDATA);
68 if (cmdWidget && cmdWidget->wclass->eventproc) {
69 cmdWidget->wclass->eventproc(cmdWidget, hwnd, uMsg, wParam, lParam);
70 }
71 }
72 case WM_SIZE: {
73 int width = LOWORD(lParam);
74 int height = HIWORD(lParam);
75 if (widget->layout) {
76 widget->layout(widget->layoutmanager, width, height);
77 }
78 break;
79 }
80 default: return DefWindowProc(hwnd, uMsg, wParam, lParam);
81 }
82 return 0;
83 }
84 55
85 void ui_window_init(void) { 56 void ui_window_init(void) {
86 hInstance = GetModuleHandle(NULL); 57 hInstance = GetModuleHandle(NULL);
87 58
88 WNDCLASSEX wc = { sizeof(WNDCLASSEX) }; 59 WNDCLASSEX wc = { sizeof(WNDCLASSEX) };
89 wc.lpfnWndProc = WindowProc; 60 wc.lpfnWndProc = ui_default_eventproc;
90 wc.hInstance = hInstance; 61 wc.hInstance = hInstance;
91 wc.lpszClassName = mainWindowClass; 62 wc.lpszClassName = mainWindowClass;
92 wc.hCursor = LoadCursor(NULL, IDC_ARROW); 63 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
93 wc.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); 64 wc.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
94 65

mercurial