goat3d

view exporters/maxgoat/src/minwin.cc @ 60:0c3576325480

moving the exporter along slowly
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 30 Mar 2014 08:53:33 +0300
parents
children fdece14403ff
line source
1 #include <string.h>
2 #include <windows.h>
3 #include "minwin.h"
5 #define GOATSCE_WCLASS "goatsce-window"
7 struct MinWidget {
8 HWND win;
10 MWCallback cbfunc;
11 void *cbcls;
13 MinWidget() { win = 0; cbfunc = 0; cbcls = 0; }
14 };
16 static void init();
17 static LRESULT CALLBACK handle_msg(HWND win, unsigned int msg, WPARAM wparam, LPARAM lparam);
19 void mw_set_callback(MinWidget *w, MWCallback func, void *cls)
20 {
21 w->cbfunc = func;
22 w->cbcls = cls;
23 }
25 MinWidget *mw_create_window(MinWidget *parent, const char *name)
26 {
27 MinWidget *w = new MinWidget;
28 HINSTANCE inst = GetModuleHandle(0);
30 w->win = CreateWindowA(GOATSCE_WCLASS, "Goat3D Scene export options ...", WS_OVERLAPPED,
31 CW_USEDEFAULT, CW_USEDEFAULT, 512, 400, parent ? parent->win : 0, 0, inst, 0);
32 ShowWindow(w->win, 1);
34 return w;
35 }
37 MinWidget *mw_create_button(MinWidget *parent, const char *text, int x, int y, int xsz, int ysz)
38 {
39 MinWidget *bn = new MinWidget;
40 HINSTANCE inst = GetModuleHandle(0);
42 bn->win = CreateWindowA("BUTTON", text, BS_PUSHBUTTON | BS_TEXT,
43 x, y, xsz, ysz, parent ? parent->win : 0, 0, inst, 0);
44 ShowWindow(bn->win, 1);
46 return bn;
47 }
49 MinWidget *mw_create_checkbox(MinWidget *parent, const char *text, int x, int y, int w, int h, bool checked)
50 {
51 return 0;
52 }
55 void mw_test()
56 {
57 MinWidget *win = mw_create_window(0, "test window!");
58 MinWidget *bn = mw_create_button(win, "button!", 100, 100, 300, 80);
59 }
61 static void init()
62 {
63 static bool done_init;
64 if(done_init) {
65 return;
66 }
67 done_init = true;
69 HINSTANCE hinst = GetModuleHandle(0);
71 WNDCLASSA wc;
72 memset(&wc, 0, sizeof wc);
73 wc.lpszClassName = GOATSCE_WCLASS;
74 wc.hInstance = hinst;
75 wc.lpfnWndProc = handle_msg;
76 wc.style = CS_HREDRAW | CS_VREDRAW;
78 RegisterClassA(&wc);
79 }
81 static LRESULT CALLBACK handle_msg(HWND win, unsigned int msg, WPARAM wparam, LPARAM lparam)
82 {
83 switch(msg) {
84 case WM_CLOSE:
85 DestroyWindow(win);
86 break;
88 default:
89 return DefWindowProc(win, msg, wparam, lparam);
90 }
92 return 0;
93 }