Mercurial > godwindows
changeset 64:ba5915851073
Implement using the correct types in callbacks... a little ugly but it works.
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Sat, 16 Mar 2013 16:33:05 -0500 |
parents | cb3d23459780 |
children | 4960219e245b |
files | src/dw/dw.go src/dw/dwglue.c src/dwtest/dwtest.go |
diffstat | 3 files changed, 1252 insertions(+), 146 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dw/dw.go Thu Mar 14 20:14:21 2013 -0500 +++ b/src/dw/dw.go Sat Mar 16 16:33:05 2013 -0500 @@ -17,6 +17,7 @@ type HANDLE interface { GetHandle() unsafe.Pointer + GetType() C.uint } type HWND struct { hwnd unsafe.Pointer @@ -420,94 +421,186 @@ return window.hwnd; } +func (window HWND) GetType() C.uint { + return 1; +} + func (window HENTRYFIELD) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HENTRYFIELD) GetType() C.uint { + return 2; +} + func (window HTEXT) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HTEXT) GetType() C.uint { + return 3; +} + func (window HTREE) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HTREE) GetType() C.uint { + return 4; +} + func (window HCONTAINER) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HCONTAINER) GetType() C.uint { + return 5; +} + func (window HMLE) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HMLE) GetType() C.uint { + return 6; +} + func (window HBUTTON) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HBUTTON) GetType() C.uint { + return 7; +} + func (window HSPINBUTTON) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HSPINBUTTON) GetType() C.uint { + return 8; +} + func (window HNOTEBOOK) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HNOTEBOOK) GetType() C.uint { + return 9; +} + func (window HBOX) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HBOX) GetType() C.uint { + return 10; +} + func (window HSCROLLBOX) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HSCROLLBOX) GetType() C.uint { + return 11; +} + func (window HMENUITEM) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HMENUITEM) GetType() C.uint { + return 12; +} + func (window HLISTBOX) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HLISTBOX) GetType() C.uint { + return 13; +} + func (window HPERCENT) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HPERCENT) GetType() C.uint { + return 14; +} + func (window HSLIDER) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HSLIDER) GetType() C.uint { + return 15; +} + func (window HSCROLLBAR) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HSCROLLBAR) GetType() C.uint { + return 16; +} + func (window HRENDER) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HRENDER) GetType() C.uint { + return 17; +} + func (window HHTML) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HHTML) GetType() C.uint { + return 18; +} + func (window HCALENDAR) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HCALENDAR) GetType() C.uint { + return 19; +} + func (window HBITMAP) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HBITMAP) GetType() C.uint { + return 20; +} + func (window HSPLITBAR) GetHandle() unsafe.Pointer { return window.hwnd; } +func (window HSPLITBAR) GetType() C.uint { + return 21; +} + func (treeitem HTREEITEM) GetHandle() unsafe.Pointer { return treeitem.htreeitem; } +func (window HTREEITEM) GetType() C.uint { + return 22; +} + func (contins HCONTINS) GetHandle() unsafe.Pointer { return contins.ptr; } +func (window HCONTINS) GetType() C.uint { + return 0; +} + func Init(newthread int) int { if len(os.Args) > 0 { var argc C.int = C.int(len(os.Args)); @@ -1035,7 +1128,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(sigfunc)); - C.go_signal_connect(window.GetHandle(), csigname, unsafe.Pointer(sigfunc), unsafe.Pointer(data), 0); + C.go_signal_connect(window.GetHandle(), csigname, unsafe.Pointer(sigfunc), unsafe.Pointer(data), window.GetType() << 8); } func Beep(freq int, dur int) { @@ -1648,7 +1741,7 @@ Pixmap_bitblt(window, NOHPIXMAP, xdest, ydest, width, height, NOHWND, srcp, xsrc, ysrc); } -func (window HWND) BitBltWindow(xdest int, ydest int, width int, height int, src HWND, xsrc int, ysrc int) { +func (window HWND) BitBltWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int) { Pixmap_bitblt(window, NOHPIXMAP, xdest, ydest, width, height, src, NOHPIXMAP, xsrc, ysrc); } @@ -1656,7 +1749,7 @@ Pixmap_bitblt(NOHWND, pixmap, xdest, ydest, width, height, NOHWND, srcp, xsrc, ysrc); } -func (pixmap HPIXMAP) BitBltWindow(xdest int, ydest int, width int, height int, src HWND, xsrc int, ysrc int) { +func (pixmap HPIXMAP) BitBltWindow(xdest int, ydest int, width int, height int, src HANDLE, xsrc int, ysrc int) { Pixmap_bitblt(NOHWND, pixmap, xdest, ydest, width, height, src, NOHPIXMAP, xsrc, ysrc); } @@ -2120,6 +2213,7 @@ cflags[n] = C.ulong(flags[n]); } flagsHeader := (*reflect.SliceHeader)((unsafe.Pointer(&cflags))); + Window_set_data(handle, "_go_filesystem", POINTER(uintptr(1))); return int(C.go_filesystem_setup(handle.GetHandle(), (*C.ulong)(unsafe.Pointer(flagsHeader.Data)), ctitles, C.int(count))); } @@ -2585,46 +2679,46 @@ runtime.LockOSThread(); } -var go_flags_no_data C.int = 1; - -func (window HWND) ConnectDelete(sigfunc func(window HWND) int) { +var go_flags_no_data C.uint = 1; + +func (window HWND) ConnectDelete(sigfunc func(window HANDLE) int) { csigname := C.CString(C.DW_SIGNAL_DELETE); defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); -} - -func (window HWND) ConnectClicked(sigfunc func(window HWND) int) { + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HWND) ConnectClicked(sigfunc func(window HANDLE) int) { csigname := C.CString(C.DW_SIGNAL_CLICKED); defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); -} - -func (window HWND) ConnectSetFocus(sigfunc func(window HWND) int) { + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HWND) ConnectSetFocus(sigfunc func(window HANDLE) int) { csigname := C.CString(C.DW_SIGNAL_SET_FOCUS); defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); -} - -func (window HWND) ConnectKeyPress(sigfunc func(window HWND, ch uint8, vk int, state int, utf8 string) int) { + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HWND) ConnectKeyPress(sigfunc func(window HANDLE, ch uint8, vk int, state int, utf8 string) int) { csigname := C.CString(C.DW_SIGNAL_KEY_PRESS); defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); -} - -func (window HWND) ConnectMotion(sigfunc func(window HWND, x int, y int, mask int) int) { + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); +} + +func (window HWND) ConnectMotion(sigfunc func(window HANDLE, x int, y int, mask int) int) { csigname := C.CString(C.DW_SIGNAL_MOTION_NOTIFY); defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectButtonPress(sigfunc func(window HWND, x int, y int, mask int) int) { @@ -2632,7 +2726,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectButtonRelease(sigfunc func(window HWND, x int, y int, mask int) int) { @@ -2640,7 +2734,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectExpose(sigfunc func(window HWND, x int, y int, width int, height int) int) { @@ -2648,7 +2742,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectItemEnter(sigfunc func(window HWND, str string) int) { @@ -2656,7 +2750,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectItemContext(sigfunc func(window HWND, text string, x int, y int, itemdata POINTER) int) { @@ -2664,7 +2758,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectItemSelect(sigfunc func(window HWND, item HTREEITEM, text string, itemdata POINTER) int) { @@ -2672,7 +2766,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectListSelect(sigfunc func(window HWND, index int) int) { @@ -2680,7 +2774,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectValueChanged(sigfunc func(window HWND, index int) int) { @@ -2688,7 +2782,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectColumnClick(sigfunc func(window HWND, index int) int) { @@ -2696,7 +2790,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectSwitchPage(sigfunc func(window HWND, index uint) int) { @@ -2704,7 +2798,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (window HWND) ConnectTreeExpand(sigfunc func(window HWND, item HTREEITEM) int) { @@ -2712,7 +2806,7 @@ defer C.free(unsafe.Pointer(csigname)); backs = append(backs, unsafe.Pointer(&sigfunc)); - C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, go_flags_no_data); + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(&sigfunc), nil, (window.GetType() << 8) | go_flags_no_data); } func (id HTIMER) Connect(sigfunc func() int, interval int) { @@ -2763,127 +2857,1139 @@ } //export go_int_callback_basic -func go_int_callback_basic(pfunc unsafe.Pointer, window unsafe.Pointer, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE) int)(pfunc); - return C.int(thisfunc(HWND{window})); - } - thisfunc := *(*func(HANDLE, POINTER) int)(pfunc); - return C.int(thisfunc(HWND{window}, POINTER(data))); +func go_int_callback_basic(pfunc unsafe.Pointer, window unsafe.Pointer, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (1 << 8): // HWND + thisfunc := *(*func(HWND, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, POINTER(data))); + case (2 << 8): // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, POINTER) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, POINTER(data))); + case (3 << 8): // HTEXT + thisfunc := *(*func(HTEXT, POINTER) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, POINTER(data))); + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, POINTER(data))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, POINTER(data))); + case (6 << 8): // HMLE + thisfunc := *(*func(HMLE, POINTER) int)(pfunc); + return C.int(thisfunc(HMLE{window}, POINTER(data))); + case (7 << 8): // HBUTTON + thisfunc := *(*func(HBUTTON, POINTER) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, POINTER(data))); + case (8 << 8): // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, POINTER) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, POINTER(data))); + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, POINTER) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, POINTER(data))); + case (10 << 8): // HBOX + thisfunc := *(*func(HBOX, POINTER) int)(pfunc); + return C.int(thisfunc(HBOX{window}, POINTER(data))); + case (11 << 8): // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, POINTER(data))); + case (12 << 8): // HMENUITEM + thisfunc := *(*func(HMENUITEM, POINTER) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, POINTER(data))); + case (13 << 8): // HLISTBOX + thisfunc := *(*func(HLISTBOX, POINTER) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, POINTER(data))); + case (14 << 8): // HPERCENT + thisfunc := *(*func(HPERCENT, POINTER) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, POINTER(data))); + case (15 << 8): // HSLIDER + thisfunc := *(*func(HSLIDER, POINTER) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, POINTER(data))); + case (16 << 8): // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, POINTER(data))); + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, POINTER) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, POINTER(data))); + case (18 << 8): // HHTML + thisfunc := *(*func(HHTML, POINTER) int)(pfunc); + return C.int(thisfunc(HHTML{window}, POINTER(data))); + case (19 << 8): // HCALENDAR + thisfunc := *(*func(HCALENDAR, POINTER) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, POINTER(data))); + case (20 << 8): // HBITMAP + thisfunc := *(*func(HBITMAP, POINTER) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, POINTER(data))); + case (21 << 8): // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, POINTER) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE) int)(pfunc); + return C.int(thisfunc(HWND{window})); + case (1 << 8) | go_flags_no_data: // HWND + thisfunc := *(*func(HWND) int)(pfunc); + return C.int(thisfunc(HWND{window})); + case (2 << 8) | go_flags_no_data: // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window})); + case (3 << 8) | go_flags_no_data: // HTEXT + thisfunc := *(*func(HTEXT) int)(pfunc); + return C.int(thisfunc(HTEXT{window})); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE) int)(pfunc); + return C.int(thisfunc(HTREE{window})); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem})); + case (6 << 8) | go_flags_no_data: // HMLE + thisfunc := *(*func(HMLE) int)(pfunc); + return C.int(thisfunc(HMLE{window})); + case (7 << 8) | go_flags_no_data: // HBUTTON + thisfunc := *(*func(HBUTTON) int)(pfunc); + return C.int(thisfunc(HBUTTON{window})); + case (8 << 8) | go_flags_no_data: // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window})); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window})); + case (10 << 8) | go_flags_no_data: // HBOX + thisfunc := *(*func(HBOX) int)(pfunc); + return C.int(thisfunc(HBOX{window})); + case (11 << 8) | go_flags_no_data: // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window})); + case (12 << 8) | go_flags_no_data: // HMENUITEM + thisfunc := *(*func(HMENUITEM) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window})); + case (13 << 8) | go_flags_no_data: // HLISTBOX + thisfunc := *(*func(HLISTBOX) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window})); + case (14 << 8) | go_flags_no_data: // HPERCENT + thisfunc := *(*func(HPERCENT) int)(pfunc); + return C.int(thisfunc(HPERCENT{window})); + case (15 << 8) | go_flags_no_data: // HSLIDER + thisfunc := *(*func(HSLIDER) int)(pfunc); + return C.int(thisfunc(HSLIDER{window})); + case (16 << 8) | go_flags_no_data: // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window})); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER) int)(pfunc); + return C.int(thisfunc(HRENDER{window})); + case (18 << 8) | go_flags_no_data: // HHTML + thisfunc := *(*func(HHTML) int)(pfunc); + return C.int(thisfunc(HHTML{window})); + case (19 << 8) | go_flags_no_data: // HCALENDAR + thisfunc := *(*func(HCALENDAR) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window})); + case (20 << 8) | go_flags_no_data: // HBITMAP + thisfunc := *(*func(HBITMAP) int)(pfunc); + return C.int(thisfunc(HBITMAP{window})); + case (21 << 8) | go_flags_no_data: // HSPLITBAR + thisfunc := *(*func(HSPLITBAR) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window})); + } + thisfunc := *(*func(HANDLE, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, POINTER(data))); } //export go_int_callback_configure -func go_int_callback_configure(pfunc unsafe.Pointer, window unsafe.Pointer, width C.int, height C.int, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, int, int) C.int)(pfunc); - return C.int(thisfunc(HWND{window}, int(width), int(height))); +func go_int_callback_configure(pfunc unsafe.Pointer, window unsafe.Pointer, width C.int, height C.int, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (1 << 8): // HWND + thisfunc := *(*func(HWND, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HWND{window}, int(width), int(height), POINTER(data))); + case (2 << 8): // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, int(width), int(height), POINTER(data))); + case (3 << 8): // HTEXT + thisfunc := *(*func(HTEXT, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HTEXT{window}, int(width), int(height), POINTER(data))); + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HTREE{window}, int(width), int(height), POINTER(data))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, int, int, POINTER) C.int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, int(width), int(height), POINTER(data))); + case (6 << 8): // HMLE + thisfunc := *(*func(HMLE, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HMLE{window}, int(width), int(height), POINTER(data))); + case (7 << 8): // HBUTTON + thisfunc := *(*func(HBUTTON, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, int(width), int(height), POINTER(data))); + case (8 << 8): // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, int(width), int(height), POINTER(data))); + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, int(width), int(height), POINTER(data))); + case (10 << 8): // HBOX + thisfunc := *(*func(HBOX, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HBOX{window}, int(width), int(height), POINTER(data))); + case (11 << 8): // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, int(width), int(height), POINTER(data))); + case (12 << 8): // HMENUITEM + thisfunc := *(*func(HMENUITEM, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, int(width), int(height), POINTER(data))); + case (13 << 8): // HLISTBOX + thisfunc := *(*func(HLISTBOX, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, int(width), int(height), POINTER(data))); + case (14 << 8): // HPERCENT + thisfunc := *(*func(HPERCENT, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, int(width), int(height), POINTER(data))); + case (15 << 8): // HSLIDER + thisfunc := *(*func(HSLIDER, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, int(width), int(height), POINTER(data))); + case (16 << 8): // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, int(width), int(height), POINTER(data))); + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(width), int(height), POINTER(data))); + case (18 << 8): // HHTML + thisfunc := *(*func(HHTML, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HHTML{window}, int(width), int(height), POINTER(data))); + case (19 << 8): // HCALENDAR + thisfunc := *(*func(HCALENDAR, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, int(width), int(height), POINTER(data))); + case (20 << 8): // HBITMAP + thisfunc := *(*func(HBITMAP, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, int(width), int(height), POINTER(data))); + case (21 << 8): // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, int, int, POINTER) C.int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, int(width), int(height), POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, int, int) C.int)(pfunc); + return C.int(thisfunc(HWND{window}, int(width), int(height))); + case (1 << 8) | go_flags_no_data: // HWND + thisfunc := *(*func(HWND, int, int) C.int)(pfunc); + return C.int(thisfunc(HWND{window}, int(width), int(height))); + case (2 << 8) | go_flags_no_data: // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, int, int) C.int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, int(width), int(height))); + case (3 << 8) | go_flags_no_data: // HTEXT + thisfunc := *(*func(HTEXT, int, int) C.int)(pfunc); + return C.int(thisfunc(HTEXT{window}, int(width), int(height))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, int, int) C.int)(pfunc); + return C.int(thisfunc(HTREE{window}, int(width), int(height))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, int, int) C.int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, int(width), int(height))); + case (6 << 8) | go_flags_no_data: // HMLE + thisfunc := *(*func(HMLE, int, int) C.int)(pfunc); + return C.int(thisfunc(HMLE{window}, int(width), int(height))); + case (7 << 8) | go_flags_no_data: // HBUTTON + thisfunc := *(*func(HBUTTON, int, int) C.int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, int(width), int(height))); + case (8 << 8) | go_flags_no_data: // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, int, int) C.int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, int(width), int(height))); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, int, int) C.int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, int(width), int(height))); + case (10 << 8) | go_flags_no_data: // HBOX + thisfunc := *(*func(HBOX, int, int) C.int)(pfunc); + return C.int(thisfunc(HBOX{window}, int(width), int(height))); + case (11 << 8) | go_flags_no_data: // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, int, int) C.int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, int(width), int(height))); + case (12 << 8) | go_flags_no_data: // HMENUITEM + thisfunc := *(*func(HMENUITEM, int, int) C.int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, int(width), int(height))); + case (13 << 8) | go_flags_no_data: // HLISTBOX + thisfunc := *(*func(HLISTBOX, int, int) C.int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, int(width), int(height))); + case (14 << 8) | go_flags_no_data: // HPERCENT + thisfunc := *(*func(HPERCENT, int, int) C.int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, int(width), int(height))); + case (15 << 8) | go_flags_no_data: // HSLIDER + thisfunc := *(*func(HSLIDER, int, int) C.int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, int(width), int(height))); + case (16 << 8) | go_flags_no_data: // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, int, int) C.int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, int(width), int(height))); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER, int, int) C.int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(width), int(height))); + case (18 << 8) | go_flags_no_data: // HHTML + thisfunc := *(*func(HHTML, int, int) C.int)(pfunc); + return C.int(thisfunc(HHTML{window}, int(width), int(height))); + case (19 << 8) | go_flags_no_data: // HCALENDAR + thisfunc := *(*func(HCALENDAR, int, int) C.int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, int(width), int(height))); + case (20 << 8) | go_flags_no_data: // HBITMAP + thisfunc := *(*func(HBITMAP, int, int) C.int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, int(width), int(height))); + case (21 << 8) | go_flags_no_data: // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, int, int) C.int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, int(width), int(height))); } thisfunc := *(*func(HANDLE, int, int, POINTER) C.int)(pfunc); return C.int(thisfunc(HWND{window}, int(width), int(height), POINTER(data))); } //export go_int_callback_keypress -func go_int_callback_keypress(pfunc unsafe.Pointer, window unsafe.Pointer, ch C.char, vk C.int, state C.int, data unsafe.Pointer, utf8 *C.char, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, uint8, int, int, string) int)(pfunc); - return C.int(thisfunc(HWND{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); +func go_int_callback_keypress(pfunc unsafe.Pointer, window unsafe.Pointer, ch C.char, vk C.int, state C.int, data unsafe.Pointer, utf8 *C.char, flags C.uint) C.int { + switch flags { + case (1 << 8): // HWND + thisfunc := *(*func(HWND, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HWND{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (2 << 8): // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (3 << 8): // HTEXT + thisfunc := *(*func(HTEXT, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HTREE{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, uint8, int, int, POINTER, string) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (6 << 8): // HMLE + thisfunc := *(*func(HMLE, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HMLE{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (7 << 8): // HBUTTON + thisfunc := *(*func(HBUTTON, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (8 << 8): // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (10 << 8): // HBOX + thisfunc := *(*func(HBOX, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HBOX{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (11 << 8): // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (12 << 8): // HMENUITEM + thisfunc := *(*func(HMENUITEM, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (13 << 8): // HLISTBOX + thisfunc := *(*func(HLISTBOX, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (14 << 8): // HPERCENT + thisfunc := *(*func(HPERCENT, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (15 << 8): // HSLIDER + thisfunc := *(*func(HSLIDER, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (16 << 8): // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (18 << 8): // HHTML + thisfunc := *(*func(HHTML, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HHTML{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (19 << 8): // HCALENDAR + thisfunc := *(*func(HCALENDAR, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (20 << 8): // HBITMAP + thisfunc := *(*func(HBITMAP, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case (21 << 8): // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, uint8, int, int, POINTER, string) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HWND{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (1 << 8) | go_flags_no_data: // HWND + thisfunc := *(*func(HWND, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HWND{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (2 << 8) | go_flags_no_data: // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (3 << 8) | go_flags_no_data: // HTEXT + thisfunc := *(*func(HTEXT, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HTREE{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, uint8, int, int, string) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (6 << 8) | go_flags_no_data: // HMLE + thisfunc := *(*func(HMLE, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HMLE{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (7 << 8) | go_flags_no_data: // HBUTTON + thisfunc := *(*func(HBUTTON, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (8 << 8) | go_flags_no_data: // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (10 << 8) | go_flags_no_data: // HBOX + thisfunc := *(*func(HBOX, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HBOX{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (11 << 8) | go_flags_no_data: // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (12 << 8) | go_flags_no_data: // HMENUITEM + thisfunc := *(*func(HMENUITEM, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (13 << 8) | go_flags_no_data: // HLISTBOX + thisfunc := *(*func(HLISTBOX, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (14 << 8) | go_flags_no_data: // HPERCENT + thisfunc := *(*func(HPERCENT, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (15 << 8) | go_flags_no_data: // HSLIDER + thisfunc := *(*func(HSLIDER, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (16 << 8) | go_flags_no_data: // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (18 << 8) | go_flags_no_data: // HHTML + thisfunc := *(*func(HHTML, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HHTML{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (19 << 8) | go_flags_no_data: // HCALENDAR + thisfunc := *(*func(HCALENDAR, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (20 << 8) | go_flags_no_data: // HBITMAP + thisfunc := *(*func(HBITMAP, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); + case (21 << 8) | go_flags_no_data: // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, uint8, int, int, string) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, uint8(ch), int(vk), int(state), C.GoString(utf8))); } thisfunc := *(*func(HANDLE, uint8, int, int, POINTER, string) int)(pfunc); return C.int(thisfunc(HWND{window}, uint8(ch), int(vk), int(state), POINTER(data), C.GoString(utf8))); } //export go_int_callback_mouse -func go_int_callback_mouse(pfunc unsafe.Pointer, window unsafe.Pointer, x C.int, y C.int, mask C.int, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, int, int, int) int)(pfunc); - return C.int(thisfunc(HWND{window}, int(x), int(y), int(mask))); +func go_int_callback_mouse(pfunc unsafe.Pointer, window unsafe.Pointer, x C.int, y C.int, mask C.int, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (1 << 8): // HWND + thisfunc := *(*func(HWND, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, int(x), int(y), int(mask), POINTER(data))); + case (2 << 8): // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, int(x), int(y), int(mask), POINTER(data))); + case (3 << 8): // HTEXT + thisfunc := *(*func(HTEXT, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, int(x), int(y), int(mask), POINTER(data))); + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, int(x), int(y), int(mask), POINTER(data))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, int, int, int, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, int(x), int(y), int(mask), POINTER(data))); + case (6 << 8): // HMLE + thisfunc := *(*func(HMLE, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HMLE{window}, int(x), int(y), int(mask), POINTER(data))); + case (7 << 8): // HBUTTON + thisfunc := *(*func(HBUTTON, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, int(x), int(y), int(mask), POINTER(data))); + case (8 << 8): // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, int(x), int(y), int(mask), POINTER(data))); + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, int(x), int(y), int(mask), POINTER(data))); + case (10 << 8): // HBOX + thisfunc := *(*func(HBOX, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HBOX{window}, int(x), int(y), int(mask), POINTER(data))); + case (11 << 8): // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, int(x), int(y), int(mask), POINTER(data))); + case (12 << 8): // HMENUITEM + thisfunc := *(*func(HMENUITEM, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, int(x), int(y), int(mask), POINTER(data))); + case (13 << 8): // HLISTBOX + thisfunc := *(*func(HLISTBOX, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, int(x), int(y), int(mask), POINTER(data))); + case (14 << 8): // HPERCENT + thisfunc := *(*func(HPERCENT, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, int(x), int(y), int(mask), POINTER(data))); + case (15 << 8): // HSLIDER + thisfunc := *(*func(HSLIDER, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, int(x), int(y), int(mask), POINTER(data))); + case (16 << 8): // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, int(x), int(y), int(mask), POINTER(data))); + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(x), int(y), int(mask), POINTER(data))); + case (18 << 8): // HHTML + thisfunc := *(*func(HHTML, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HHTML{window}, int(x), int(y), int(mask), POINTER(data))); + case (19 << 8): // HCALENDAR + thisfunc := *(*func(HCALENDAR, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, int(x), int(y), int(mask), POINTER(data))); + case (20 << 8): // HBITMAP + thisfunc := *(*func(HBITMAP, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, int(x), int(y), int(mask), POINTER(data))); + case (21 << 8): // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, int(x), int(y), int(mask), POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, int, int, int) int)(pfunc); + return C.int(thisfunc(HWND{window}, int(x), int(y), int(mask))); + case (1 << 8) | go_flags_no_data: // HWND + thisfunc := *(*func(HWND, int, int, int) int)(pfunc); + return C.int(thisfunc(HWND{window}, int(x), int(y), int(mask))); + case (2 << 8) | go_flags_no_data: // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, int, int, int) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, int(x), int(y), int(mask))); + case (3 << 8) | go_flags_no_data: // HTEXT + thisfunc := *(*func(HTEXT, int, int, int) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, int(x), int(y), int(mask))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, int, int, int) int)(pfunc); + return C.int(thisfunc(HTREE{window}, int(x), int(y), int(mask))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, int, int, int) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, int(x), int(y), int(mask))); + case (6 << 8) | go_flags_no_data: // HMLE + thisfunc := *(*func(HMLE, int, int, int) int)(pfunc); + return C.int(thisfunc(HMLE{window}, int(x), int(y), int(mask))); + case (7 << 8) | go_flags_no_data: // HBUTTON + thisfunc := *(*func(HBUTTON, int, int, int) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, int(x), int(y), int(mask))); + case (8 << 8) | go_flags_no_data: // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, int, int, int) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, int(x), int(y), int(mask))); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, int, int, int) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, int(x), int(y), int(mask))); + case (10 << 8) | go_flags_no_data: // HBOX + thisfunc := *(*func(HBOX, int, int, int) int)(pfunc); + return C.int(thisfunc(HBOX{window}, int(x), int(y), int(mask))); + case (11 << 8) | go_flags_no_data: // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, int, int, int) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, int(x), int(y), int(mask))); + case (12 << 8) | go_flags_no_data: // HMENUITEM + thisfunc := *(*func(HMENUITEM, int, int, int) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, int(x), int(y), int(mask))); + case (13 << 8) | go_flags_no_data: // HLISTBOX + thisfunc := *(*func(HLISTBOX, int, int, int) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, int(x), int(y), int(mask))); + case (14 << 8) | go_flags_no_data: // HPERCENT + thisfunc := *(*func(HPERCENT, int, int, int) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, int(x), int(y), int(mask))); + case (15 << 8) | go_flags_no_data: // HSLIDER + thisfunc := *(*func(HSLIDER, int, int, int) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, int(x), int(y), int(mask))); + case (16 << 8) | go_flags_no_data: // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, int, int, int) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, int(x), int(y), int(mask))); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER, int, int, int) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(x), int(y), int(mask))); + case (18 << 8) | go_flags_no_data: // HHTML + thisfunc := *(*func(HHTML, int, int, int) int)(pfunc); + return C.int(thisfunc(HHTML{window}, int(x), int(y), int(mask))); + case (19 << 8) | go_flags_no_data: // HCALENDAR + thisfunc := *(*func(HCALENDAR, int, int, int) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, int(x), int(y), int(mask))); + case (20 << 8) | go_flags_no_data: // HBITMAP + thisfunc := *(*func(HBITMAP, int, int, int) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, int(x), int(y), int(mask))); + case (21 << 8) | go_flags_no_data: // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, int, int, int) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, int(x), int(y), int(mask))); } thisfunc := *(*func(HANDLE, int, int, int, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, int(x), int(y), int(mask), POINTER(data))); } //export go_int_callback_expose -func go_int_callback_expose(pfunc unsafe.Pointer, window unsafe.Pointer, x C.int, y C.int, width C.int, height C.int, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, int, int, int, int) int)(pfunc); - return C.int(thisfunc(HWND{window}, int(x), int(y), int(width), int(height))); +func go_int_callback_expose(pfunc unsafe.Pointer, window unsafe.Pointer, x C.int, y C.int, width C.int, height C.int, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, int, int, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(x), int(y), int(width), int(height), POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, int, int, int, int) int)(pfunc); + return C.int(thisfunc(HWND{window}, int(x), int(y), int(width), int(height))); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER, int, int, int, int) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(x), int(y), int(width), int(height))); } thisfunc := *(*func(HANDLE, int, int, int, int, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, int(x), int(y), int(width), int(height), POINTER(data))); } //export go_int_callback_string -func go_int_callback_string(pfunc unsafe.Pointer, window unsafe.Pointer, str *C.char, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, string) int)(pfunc); - return C.int(thisfunc(HWND{window}, C.GoString(str))); +func go_int_callback_string(pfunc unsafe.Pointer, window unsafe.Pointer, str *C.char, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (1 << 8): // HWND + thisfunc := *(*func(HWND, string, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, C.GoString(str), POINTER(data))); + case (2 << 8): // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, string, POINTER) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, C.GoString(str), POINTER(data))); + case (3 << 8): // HTEXT + thisfunc := *(*func(HTEXT, string, POINTER) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, C.GoString(str), POINTER(data))); + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, string, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, C.GoString(str), POINTER(data))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, string, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, C.GoString(str), POINTER(data))); + case (6 << 8): // HMLE + thisfunc := *(*func(HMLE, string, POINTER) int)(pfunc); + return C.int(thisfunc(HMLE{window}, C.GoString(str), POINTER(data))); + case (7 << 8): // HBUTTON + thisfunc := *(*func(HBUTTON, string, POINTER) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, C.GoString(str), POINTER(data))); + case (8 << 8): // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, string, POINTER) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, C.GoString(str), POINTER(data))); + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, string, POINTER) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, C.GoString(str), POINTER(data))); + case (10 << 8): // HBOX + thisfunc := *(*func(HBOX, string, POINTER) int)(pfunc); + return C.int(thisfunc(HBOX{window}, C.GoString(str), POINTER(data))); + case (11 << 8): // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, string, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, C.GoString(str), POINTER(data))); + case (12 << 8): // HMENUITEM + thisfunc := *(*func(HMENUITEM, string, POINTER) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, C.GoString(str), POINTER(data))); + case (13 << 8): // HLISTBOX + thisfunc := *(*func(HLISTBOX, string, POINTER) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, C.GoString(str), POINTER(data))); + case (14 << 8): // HPERCENT + thisfunc := *(*func(HPERCENT, string, POINTER) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, C.GoString(str), POINTER(data))); + case (15 << 8): // HSLIDER + thisfunc := *(*func(HSLIDER, string, POINTER) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, C.GoString(str), POINTER(data))); + case (16 << 8): // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, string, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, C.GoString(str), POINTER(data))); + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, string, POINTER) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, C.GoString(str), POINTER(data))); + case (18 << 8): // HHTML + thisfunc := *(*func(HRENDER, string, POINTER) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, C.GoString(str), POINTER(data))); + case (19 << 8): // HCALENDAR + thisfunc := *(*func(HCALENDAR, string, POINTER) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, C.GoString(str), POINTER(data))); + case (20 << 8): // HBITMAP + thisfunc := *(*func(HBITMAP, string, POINTER) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, C.GoString(str), POINTER(data))); + case (21 << 8): // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, string, POINTER) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, C.GoString(str), POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, string) int)(pfunc); + return C.int(thisfunc(HWND{window}, C.GoString(str))); + case (1 << 8) | go_flags_no_data: // HWND + thisfunc := *(*func(HWND, string) int)(pfunc); + return C.int(thisfunc(HWND{window}, C.GoString(str))); + case (2 << 8) | go_flags_no_data: // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, string) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, C.GoString(str))); + case (3 << 8) | go_flags_no_data: // HTEXT + thisfunc := *(*func(HTEXT, string) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, C.GoString(str))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, string) int)(pfunc); + return C.int(thisfunc(HTREE{window}, C.GoString(str))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, string) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, C.GoString(str))); + case (6 << 8) | go_flags_no_data: // HMLE + thisfunc := *(*func(HMLE, string) int)(pfunc); + return C.int(thisfunc(HMLE{window}, C.GoString(str))); + case (7 << 8) | go_flags_no_data: // HBUTTON + thisfunc := *(*func(HBUTTON, string) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, C.GoString(str))); + case (8 << 8) | go_flags_no_data: // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, string) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, C.GoString(str))); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, string) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, C.GoString(str))); + case (10 << 8) | go_flags_no_data: // HBOX + thisfunc := *(*func(HBOX, string) int)(pfunc); + return C.int(thisfunc(HBOX{window}, C.GoString(str))); + case (11 << 8) | go_flags_no_data: // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, string) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, C.GoString(str))); + case (12 << 8) | go_flags_no_data: // HMENUITEM + thisfunc := *(*func(HMENUITEM, string) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, C.GoString(str))); + case (13 << 8) | go_flags_no_data: // HLISTBOX + thisfunc := *(*func(HLISTBOX, string) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, C.GoString(str))); + case (14 << 8) | go_flags_no_data: // HPERCENT + thisfunc := *(*func(HPERCENT, string) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, C.GoString(str))); + case (15 << 8) | go_flags_no_data: // HSLIDER + thisfunc := *(*func(HSLIDER, string) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, C.GoString(str))); + case (16 << 8) | go_flags_no_data: // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, string) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, C.GoString(str))); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER, string) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, C.GoString(str))); + case (18 << 8) | go_flags_no_data: // HHTML + thisfunc := *(*func(HHTML, string) int)(pfunc); + return C.int(thisfunc(HHTML{window}, C.GoString(str))); + case (19 << 8) | go_flags_no_data: // HCALENDAR + thisfunc := *(*func(HCALENDAR, string) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, C.GoString(str))); + case (20 << 8) | go_flags_no_data: // HBITMAP + thisfunc := *(*func(HBITMAP, string) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, C.GoString(str))); + case (21 << 8) | go_flags_no_data: // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, string) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, C.GoString(str))); } thisfunc := *(*func(HANDLE, string, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, C.GoString(str), POINTER(data))); } //export go_int_callback_item_context -func go_int_callback_item_context(pfunc unsafe.Pointer, window unsafe.Pointer, text *C.char, x C.int, y C.int, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, string, int, int, POINTER) int)(pfunc); - return C.int(thisfunc(HWND{window}, C.GoString(text), int(x), int(y), POINTER(itemdata))); +func go_int_callback_item_context(pfunc unsafe.Pointer, window unsafe.Pointer, text *C.char, x C.int, y C.int, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, string, int, int, POINTER, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, C.GoString(text), int(x), int(y), POINTER(data), POINTER(itemdata))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, string, int, int, POINTER, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, C.GoString(text), int(x), int(y), POINTER(data), POINTER(itemdata))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, string, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, C.GoString(text), int(x), int(y), POINTER(itemdata))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, string, int, int, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, C.GoString(text), int(x), int(y), POINTER(itemdata))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, string, int, int, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, C.GoString(text), int(x), int(y), POINTER(itemdata))); } thisfunc := *(*func(HANDLE, string, int, int, POINTER, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, C.GoString(text), int(x), int(y), POINTER(data), POINTER(itemdata))); } //export go_int_callback_item_select -func go_int_callback_item_select(pfunc unsafe.Pointer, window unsafe.Pointer, item unsafe.Pointer, text *C.char, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, HTREEITEM, string, POINTER) int)(pfunc); - return C.int(thisfunc(HWND{window}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(itemdata))); +func go_int_callback_item_select(pfunc unsafe.Pointer, window unsafe.Pointer, item unsafe.Pointer, text *C.char, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, HTREEITEM, string, POINTER, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(data), POINTER(itemdata))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, HTREEITEM, string, POINTER, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(data), POINTER(itemdata))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, HTREEITEM, string, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(itemdata))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, HTREEITEM, string, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(itemdata))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, HTREEITEM, string, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(itemdata))); } thisfunc := *(*func(HANDLE, HTREEITEM, string, POINTER, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, HTREEITEM{item, HWND{window}}, C.GoString(text), POINTER(data), POINTER(itemdata))); } //export go_int_callback_numeric -func go_int_callback_numeric(pfunc unsafe.Pointer, window unsafe.Pointer, val C.int, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, int) int)(pfunc); - return C.int(thisfunc(HWND{window}, int(val))); +func go_int_callback_numeric(pfunc unsafe.Pointer, window unsafe.Pointer, val C.int, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (1 << 8): // HWND + thisfunc := *(*func(HWND, int, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, int(val), POINTER(data))); + case (2 << 8): // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, int, POINTER) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, int(val), POINTER(data))); + case (3 << 8): // HTEXT + thisfunc := *(*func(HTEXT, int, POINTER) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, int(val), POINTER(data))); + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, int, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, int(val), POINTER(data))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, int, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, int(val), POINTER(data))); + case (6 << 8): // HMLE + thisfunc := *(*func(HMLE, int, POINTER) int)(pfunc); + return C.int(thisfunc(HMLE{window}, int(val), POINTER(data))); + case (7 << 8): // HBUTTON + thisfunc := *(*func(HBUTTON, int, POINTER) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, int(val), POINTER(data))); + case (8 << 8): // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, int(val), POINTER(data))); + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, int, POINTER) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, int(val), POINTER(data))); + case (10 << 8): // HBOX + thisfunc := *(*func(HBOX, int, POINTER) int)(pfunc); + return C.int(thisfunc(HBOX{window}, int(val), POINTER(data))); + case (11 << 8): // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, int(val), POINTER(data))); + case (12 << 8): // HMENUITEM + thisfunc := *(*func(HMENUITEM, int, POINTER) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, int(val), POINTER(data))); + case (13 << 8): // HLISTBOX + thisfunc := *(*func(HLISTBOX, int, POINTER) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, int(val), POINTER(data))); + case (14 << 8): // HPERCENT + thisfunc := *(*func(HPERCENT, int, POINTER) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, int(val), POINTER(data))); + case (15 << 8): // HSLIDER + thisfunc := *(*func(HSLIDER, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, int(val), POINTER(data))); + case (16 << 8): // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, int(val), POINTER(data))); + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, int, POINTER) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(val), POINTER(data))); + case (18 << 8): // HHTML + thisfunc := *(*func(HHTML, int, POINTER) int)(pfunc); + return C.int(thisfunc(HHTML{window}, int(val), POINTER(data))); + case (19 << 8): // HCALENDAR + thisfunc := *(*func(HCALENDAR, int, POINTER) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, int(val), POINTER(data))); + case (20 << 8): // HBITMAP + thisfunc := *(*func(HBITMAP, int, POINTER) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, int(val), POINTER(data))); + case (21 << 8): // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, int, POINTER) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, int(val), POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, int) int)(pfunc); + return C.int(thisfunc(HWND{window}, int(val))); + case (1 << 8) | go_flags_no_data: // HWND + thisfunc := *(*func(HWND, int) int)(pfunc); + return C.int(thisfunc(HWND{window}, int(val))); + case (2 << 8) | go_flags_no_data: // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, int) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, int(val))); + case (3 << 8) | go_flags_no_data: // HTEXT + thisfunc := *(*func(HTEXT, int) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, int(val))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, int) int)(pfunc); + return C.int(thisfunc(HTREE{window}, int(val))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, int) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, int(val))); + case (6 << 8) | go_flags_no_data: // HMLE + thisfunc := *(*func(HMLE, int) int)(pfunc); + return C.int(thisfunc(HMLE{window}, int(val))); + case (7 << 8) | go_flags_no_data: // HBUTTON + thisfunc := *(*func(HBUTTON, int) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, int(val))); + case (8 << 8) | go_flags_no_data: // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, int) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, int(val))); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, int) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, int(val))); + case (10 << 8) | go_flags_no_data: // HBOX + thisfunc := *(*func(HBOX, int) int)(pfunc); + return C.int(thisfunc(HBOX{window}, int(val))); + case (11 << 8) | go_flags_no_data: // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, int) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, int(val))); + case (12 << 8) | go_flags_no_data: // HMENUITEM + thisfunc := *(*func(HMENUITEM, int) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, int(val))); + case (13 << 8) | go_flags_no_data: // HLISTBOX + thisfunc := *(*func(HLISTBOX, int) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, int(val))); + case (14 << 8) | go_flags_no_data: // HPERCENT + thisfunc := *(*func(HPERCENT, int) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, int(val))); + case (15 << 8) | go_flags_no_data: // HSLIDER + thisfunc := *(*func(HSLIDER, int) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, int(val))); + case (16 << 8) | go_flags_no_data: // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, int) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, int(val))); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER, int) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, int(val))); + case (18 << 8) | go_flags_no_data: // HHTML + thisfunc := *(*func(HHTML, int) int)(pfunc); + return C.int(thisfunc(HHTML{window}, int(val))); + case (19 << 8) | go_flags_no_data: // HCALENDAR + thisfunc := *(*func(HCALENDAR, int) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, int(val))); + case (20 << 8) | go_flags_no_data: // HBITMAP + thisfunc := *(*func(HBITMAP, int) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, int(val))); + case (21 << 8) | go_flags_no_data: // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, int) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, int(val))); } thisfunc := *(*func(HANDLE, int, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, int(val), POINTER(data))); } //export go_int_callback_ulong -func go_int_callback_ulong(pfunc unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, uint) int)(pfunc); - return C.int(thisfunc(HWND{window}, uint(val))); - } - thisfunc := *(*func(HANDLE, uint, POINTER) int)(pfunc); - return C.int(thisfunc(HWND{window}, uint(val), POINTER(data))); +func go_int_callback_ulong(pfunc unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (1 << 8): // HWND + thisfunc := *(*func(HWND, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, uint(val), POINTER(data))); + case (2 << 8): // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, uint(val), POINTER(data))); + case (3 << 8): // HTEXT + thisfunc := *(*func(HTEXT, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, uint(val), POINTER(data))); + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, uint(val), POINTER(data))); + case (5 << 8): // HCONTAINER + thisfunc := *(*func(HCONTAINER, uint, POINTER) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, uint(val), POINTER(data))); + case (6 << 8): // HMLE + thisfunc := *(*func(HMLE, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HMLE{window}, uint(val), POINTER(data))); + case (7 << 8): // HBUTTON + thisfunc := *(*func(HBUTTON, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, uint(val), POINTER(data))); + case (8 << 8): // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, uint(val), POINTER(data))); + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, uint(val), POINTER(data))); + case (10 << 8): // HBOX + thisfunc := *(*func(HBOX, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HBOX{window}, uint(val), POINTER(data))); + case (11 << 8): // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, uint(val), POINTER(data))); + case (12 << 8): // HMENUITEM + thisfunc := *(*func(HMENUITEM, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, uint(val), POINTER(data))); + case (13 << 8): // HLISTBOX + thisfunc := *(*func(HLISTBOX, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, uint(val), POINTER(data))); + case (14 << 8): // HPERCENT + thisfunc := *(*func(HPERCENT, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, uint(val), POINTER(data))); + case (15 << 8): // HSLIDER + thisfunc := *(*func(HSLIDER, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, uint(val), POINTER(data))); + case (16 << 8): // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, uint(val), POINTER(data))); + case (17 << 8): // HRENDER + thisfunc := *(*func(HRENDER, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, uint(val), POINTER(data))); + case (18 << 8): // HHTML + thisfunc := *(*func(HHTML, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HHTML{window}, uint(val), POINTER(data))); + case (19 << 8): // HCALENDAR + thisfunc := *(*func(HCALENDAR, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, uint(val), POINTER(data))); + case (20 << 8): // HBITMAP + thisfunc := *(*func(HBITMAP, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, uint(val), POINTER(data))); + case (21 << 8): // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, uint(val), POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, uint) int)(pfunc); + return C.int(thisfunc(HWND{window}, uint(val))); + case (1 << 8) | go_flags_no_data: // HWND + thisfunc := *(*func(HWND, uint) int)(pfunc); + return C.int(thisfunc(HWND{window}, uint(val))); + case (2 << 8) | go_flags_no_data: // HENTRYFIELD + thisfunc := *(*func(HENTRYFIELD, uint) int)(pfunc); + return C.int(thisfunc(HENTRYFIELD{window}, uint(val))); + case (3 << 8) | go_flags_no_data: // HTEXT + thisfunc := *(*func(HTEXT, uint) int)(pfunc); + return C.int(thisfunc(HTEXT{window}, uint(val))); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, uint) int)(pfunc); + return C.int(thisfunc(HTREE{window}, uint(val))); + case (5 << 8) | go_flags_no_data: // HCONTAINER + thisfunc := *(*func(HCONTAINER, uint) int)(pfunc); + filesystem := false; + if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { + filesystem = true; + } + return C.int(thisfunc(HCONTAINER{window, filesystem}, uint(val))); + case (6 << 8) | go_flags_no_data: // HMLE + thisfunc := *(*func(HMLE, uint) int)(pfunc); + return C.int(thisfunc(HMLE{window}, uint(val))); + case (7 << 8) | go_flags_no_data: // HBUTTON + thisfunc := *(*func(HBUTTON, uint) int)(pfunc); + return C.int(thisfunc(HBUTTON{window}, uint(val))); + case (8 << 8) | go_flags_no_data: // HSPINBUTTON + thisfunc := *(*func(HSPINBUTTON, uint) int)(pfunc); + return C.int(thisfunc(HSPINBUTTON{window}, uint(val))); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, uint) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, uint(val))); + case (10 << 8) | go_flags_no_data: // HBOX + thisfunc := *(*func(HBOX, uint) int)(pfunc); + return C.int(thisfunc(HBOX{window}, uint(val))); + case (11 << 8) | go_flags_no_data: // HSCROLLBOX + thisfunc := *(*func(HSCROLLBOX, uint) int)(pfunc); + return C.int(thisfunc(HSCROLLBOX{window}, uint(val))); + case (12 << 8) | go_flags_no_data: // HMENUITEM + thisfunc := *(*func(HMENUITEM, uint) int)(pfunc); + return C.int(thisfunc(HMENUITEM{window}, uint(val))); + case (13 << 8) | go_flags_no_data: // HLISTBOX + thisfunc := *(*func(HLISTBOX, uint) int)(pfunc); + return C.int(thisfunc(HLISTBOX{window}, uint(val))); + case (14 << 8) | go_flags_no_data: // HPERCENT + thisfunc := *(*func(HPERCENT, uint) int)(pfunc); + return C.int(thisfunc(HPERCENT{window}, uint(val))); + case (15 << 8) | go_flags_no_data: // HSLIDER + thisfunc := *(*func(HSLIDER, uint) int)(pfunc); + return C.int(thisfunc(HSLIDER{window}, uint(val))); + case (16 << 8) | go_flags_no_data: // HSCROLLBAR + thisfunc := *(*func(HSCROLLBAR, uint) int)(pfunc); + return C.int(thisfunc(HSCROLLBAR{window}, uint(val))); + case (17 << 8) | go_flags_no_data: // HRENDER + thisfunc := *(*func(HRENDER, uint) int)(pfunc); + return C.int(thisfunc(HRENDER{window}, uint(val))); + case (18 << 8) | go_flags_no_data: // HHTML + thisfunc := *(*func(HHTML, uint) int)(pfunc); + return C.int(thisfunc(HHTML{window}, uint(val))); + case (19 << 8) | go_flags_no_data: // HCALENDAR + thisfunc := *(*func(HCALENDAR, uint) int)(pfunc); + return C.int(thisfunc(HCALENDAR{window}, uint(val))); + case (20 << 8) | go_flags_no_data: // HBITMAP + thisfunc := *(*func(HBITMAP, uint) int)(pfunc); + return C.int(thisfunc(HBITMAP{window}, uint(val))); + case (21 << 8) | go_flags_no_data: // HSPLITBAR + thisfunc := *(*func(HSPLITBAR, uint) int)(pfunc); + return C.int(thisfunc(HSPLITBAR{window}, uint(val))); + } + thisfunc := *(*func(HANDLE, uint, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, uint(val), POINTER(data))); } //export go_int_callback_notepage -func go_int_callback_notepage(pfunc unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.int) C.int { +func go_int_callback_notepage(pfunc unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.uint) C.int { if (flags & go_flags_no_data) == go_flags_no_data { thisfunc := *(*func(HANDLE, HNOTEPAGE) int)(pfunc); return C.int(thisfunc(HWND{window}, HNOTEPAGE{val, HNOTEBOOK{window}})); } + switch flags { + case (9 << 8): // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, HNOTEPAGE, POINTER) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, HNOTEPAGE{val, HNOTEBOOK{window}}, POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, HNOTEPAGE) int)(pfunc); + return C.int(thisfunc(HWND{window}, HNOTEPAGE{val, HNOTEBOOK{window}})); + case (9 << 8) | go_flags_no_data: // HNOTEBOOK + thisfunc := *(*func(HNOTEBOOK, HNOTEPAGE) int)(pfunc); + return C.int(thisfunc(HNOTEBOOK{window}, HNOTEPAGE{val, HNOTEBOOK{window}})); + } thisfunc := *(*func(HANDLE, HNOTEPAGE, POINTER) int)(pfunc); return C.int(thisfunc(HWND{window}, HNOTEPAGE{val, HNOTEBOOK{window}}, POINTER(data))); } //export go_int_callback_tree -func go_int_callback_tree(pfunc unsafe.Pointer, window unsafe.Pointer, tree unsafe.Pointer, data unsafe.Pointer, flags C.int) C.int { - if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HANDLE, HTREEITEM) int)(pfunc); - return C.int(thisfunc(HWND{window}, HTREEITEM{tree, HWND{window}})); - } - thisfunc := *(*func(HANDLE, HTREEITEM, POINTER) int)(pfunc); - return C.int(thisfunc(HWND{window}, HTREEITEM{tree, HWND{window}}, POINTER(data))); +func go_int_callback_tree(pfunc unsafe.Pointer, window unsafe.Pointer, tree unsafe.Pointer, data unsafe.Pointer, flags C.uint) C.int { + switch flags { + case (4 << 8): // HTREE + thisfunc := *(*func(HTREE, HTREEITEM, POINTER) int)(pfunc); + return C.int(thisfunc(HTREE{window}, HTREEITEM{tree, HWND{window}}, POINTER(data))); + case go_flags_no_data: + thisfunc := *(*func(HANDLE, HTREEITEM) int)(pfunc); + return C.int(thisfunc(HWND{window}, HTREEITEM{tree, HWND{window}})); + case (4 << 8) | go_flags_no_data: // HTREE + thisfunc := *(*func(HTREE, HTREEITEM) int)(pfunc); + return C.int(thisfunc(HTREE{window}, HTREEITEM{tree, HWND{window}})); + } + thisfunc := *(*func(HANDLE, HTREEITEM, POINTER) int)(pfunc); + return C.int(thisfunc(HWND{window}, HTREEITEM{tree, HWND{window}}, POINTER(data))); } //export go_int_callback_timer -func go_int_callback_timer(pfunc unsafe.Pointer, data unsafe.Pointer, flags C.int) C.int { +func go_int_callback_timer(pfunc unsafe.Pointer, data unsafe.Pointer, flags C.uint) C.int { if (flags & go_flags_no_data) == go_flags_no_data { thisfunc := *(*func() int)(pfunc); return C.int(thisfunc()); @@ -2893,7 +3999,7 @@ } //export go_int_callback_print -func go_int_callback_print(pfunc unsafe.Pointer, print unsafe.Pointer, pixmap unsafe.Pointer, page_num C.int, data unsafe.Pointer, flags C.int) C.int { +func go_int_callback_print(pfunc unsafe.Pointer, print unsafe.Pointer, pixmap unsafe.Pointer, page_num C.int, data unsafe.Pointer, flags C.uint) C.int { if (flags & go_flags_no_data) == go_flags_no_data { thisfunc := *(*func(HPRINT, HPIXMAP, int) int)(pfunc); return C.int(thisfunc(HPRINT{print,""}, HPIXMAP{pixmap}, int(page_num)));
--- a/src/dw/dwglue.c Thu Mar 14 20:14:21 2013 -0500 +++ b/src/dw/dwglue.c Sat Mar 16 16:33:05 2013 -0500 @@ -1091,20 +1091,20 @@ return dw_print_cancel((HPRINT)print); } -extern int go_int_callback_basic(void *pfunc, void* window, void *data, int flags); -extern int go_int_callback_configure(void *pfunc, void* window, int width, int height, void *data, int flags); -extern int go_int_callback_keypress(void *pfunc, void *window, char ch, int vk, int state, void *data, char *utf8, int flags); -extern int go_int_callback_mouse(void *pfunc, void* window, int x, int y, int mask, void *data, int flags); -extern int go_int_callback_expose(void *pfunc, void* window, int x, int y, int width, int height, void *data, int flags); -extern int go_int_callback_string(void *pfunc, void* window, char *str, void *data, int flags); -extern int go_int_callback_item_context(void *pfunc, void *window, char *text, int x, int y, void *data, void *itemdata, int flags); -extern int go_int_callback_item_select(void *pfunc, void *window, void *item, char *text, void *data, void *itemdata, int flags); -extern int go_int_callback_numeric(void *pfunc, void* window, int val, void *data, int flags); -extern int go_int_callback_ulong(void *pfunc, void* window, unsigned long val, void *data, int flags); -extern int go_int_callback_notepage(void *pfunc, void* window, unsigned long val, void *data, int flags); -extern int go_int_callback_tree(void *pfunc, void* window, void *item, void *data, int flags); -extern int go_int_callback_timer(void *pfunc, void *data, int flags); -extern int go_int_callback_print(void *pfunc, void *print, void *pixmap, int page_num, void *data, int flags); +extern int go_int_callback_basic(void *pfunc, void* window, void *data, unsigned int flags); +extern int go_int_callback_configure(void *pfunc, void* window, int width, int height, void *data, unsigned int flags); +extern int go_int_callback_keypress(void *pfunc, void *window, char ch, int vk, int state, void *data, char *utf8, unsigned int flags); +extern int go_int_callback_mouse(void *pfunc, void* window, int x, int y, int mask, void *data, unsigned int flags); +extern int go_int_callback_expose(void *pfunc, void* window, int x, int y, int width, int height, void *data, unsigned int flags); +extern int go_int_callback_string(void *pfunc, void* window, char *str, void *data, unsigned int flags); +extern int go_int_callback_item_context(void *pfunc, void *window, char *text, int x, int y, void *data, void *itemdata, unsigned int flags); +extern int go_int_callback_item_select(void *pfunc, void *window, void *item, char *text, void *data, void *itemdata, unsigned int flags); +extern int go_int_callback_numeric(void *pfunc, void* window, int val, void *data, unsigned int flags); +extern int go_int_callback_ulong(void *pfunc, void* window, unsigned long val, void *data, unsigned int flags); +extern int go_int_callback_notepage(void *pfunc, void* window, unsigned long val, void *data, unsigned int flags); +extern int go_int_callback_tree(void *pfunc, void* window, void *item, void *data, unsigned int flags); +extern int go_int_callback_timer(void *pfunc, void *data, unsigned int flags); +extern int go_int_callback_print(void *pfunc, void *print, void *pixmap, int page_num, void *data, unsigned int flags); extern void go_callback_remove(void *pfunc); static int DWSIGNAL go_callback_basic(HWND window, void *data) @@ -1247,7 +1247,7 @@ return 0; } -static void *go_print_new(char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata, int sflags) +static void *go_print_new(char *jobname, unsigned long flags, unsigned int pages, void *drawfunc, void *drawdata, unsigned int sflags) { void **param = malloc(sizeof(void *) * 3); @@ -1255,13 +1255,13 @@ { param[0] = drawfunc; param[1] = drawdata; - param[2] = DW_INT_TO_POINTER(sflags); + param[2] = DW_UINT_TO_POINTER(sflags); return (void*)dw_print_new(jobname, flags, pages, DW_SIGNAL_FUNC(go_callback_print), param); } return NULL; } -static int go_timer_connect(int interval, void *sigfunc, void *data, int flags) +static int go_timer_connect(int interval, void *sigfunc, void *data, unsigned int flags) { void **param = malloc(sizeof(void *) * 3); @@ -1269,7 +1269,7 @@ { param[0] = sigfunc; param[1] = data; - param[2] = DW_INT_TO_POINTER(flags); + param[2] = DW_UINT_TO_POINTER(flags); return dw_timer_connect(interval, DW_SIGNAL_FUNC(go_callback_timer), param); } return 0; @@ -1285,7 +1285,7 @@ } } -static void go_signal_connect(void *window, char *signame, void *sigfunc, void *data, int flags) +static void go_signal_connect(void *window, char *signame, void *sigfunc, void *data, unsigned int flags) { void **param = malloc(sizeof(void *) * 3); void *func = (void *)go_callback_basic; @@ -1294,7 +1294,7 @@ { param[0] = sigfunc; param[1] = data; - param[2] = DW_INT_TO_POINTER(flags); + param[2] = DW_UINT_TO_POINTER(flags); if(strcmp(signame, DW_SIGNAL_CONFIGURE) == 0) {
--- a/src/dwtest/dwtest.go Thu Mar 14 20:14:21 2013 -0500 +++ b/src/dwtest/dwtest.go Sat Mar 16 16:33:05 2013 -0500 @@ -134,26 +134,26 @@ } // Call back section -func exit_callback(window dw.HANDLE, data dw.POINTER) int { +func exit_callback(window dw.HWND, data dw.POINTER) int { if dw.Messagebox("dwtest", dw.MB_YESNO | dw.MB_QUESTION, "Are you sure you want to exit?") != 0 { dw.Main_quit(); } return TRUE; } -func switch_page_callback(window dw.HANDLE, page_num dw.HNOTEPAGE, itemdata dw.POINTER) int { +func switch_page_callback(window dw.HNOTEBOOK, page_num dw.HNOTEPAGE, itemdata dw.POINTER) int { fmt.Printf("DW_SIGNAL_SWITCH_PAGE: PageNum: %d\n", dw.HNOTEPAGE_TO_UINT(page_num)); return FALSE; } -func menu_callback(window dw.HANDLE, data dw.POINTER) int { +func menu_callback(window dw.HMENUITEM, data dw.POINTER) int { info:= *(*string)(data); buf := fmt.Sprintf("%s menu item selected", info); dw.Messagebox("Menu Item Callback", dw.MB_OK | dw.MB_INFORMATION, buf); return FALSE; } -func menutoggle_callback(window dw.HANDLE, data dw.POINTER) int { +func menutoggle_callback(window dw.HMENUITEM, data dw.POINTER) int { if menu_enabled { dw.Window_set_style(checkable_menuitem, dw.MIS_DISABLED, dw.MIS_DISABLED); dw.Window_set_style(noncheckable_menuitem, dw.MIS_DISABLED, dw.MIS_DISABLED); @@ -166,7 +166,7 @@ return FALSE; } -func helpabout_callback(window dw.HANDLE, data dw.POINTER) int { +func helpabout_callback(window dw.HMENUITEM, data dw.POINTER) int { var env dw.Env; dw.Environment_query(&env); @@ -179,7 +179,7 @@ } // Page 1 Callbacks -func paste_clicked_callback(button dw.HANDLE, data dw.POINTER) int { +func paste_clicked_callback(button dw.HBUTTON, data dw.POINTER) int { test := dw.Clipboard_get_text(); if len(test) > 0 { @@ -188,7 +188,7 @@ return TRUE; } -func copy_clicked_callback(button dw.HANDLE, data dw.POINTER) int { +func copy_clicked_callback(button dw.HBUTTON, data dw.POINTER) int { test := dw.Window_get_text(copypastefield); if len(test) > 0 { @@ -198,7 +198,7 @@ return TRUE; } -func browse_file_callback(window dw.HANDLE, data dw.POINTER) int { +func browse_file_callback(window dw.HBUTTON, data dw.POINTER) int { tmp := dw.File_browse("Pick a file", "dwtest.c", "c", dw.FILE_OPEN); if len(tmp) > 0 { current_file = tmp; @@ -212,18 +212,18 @@ return FALSE; } -func browse_folder_callback(window dw.HANDLE, data dw.POINTER) int { +func browse_folder_callback(window dw.HBUTTON, data dw.POINTER) int { tmp := dw.File_browse("Pick a folder", ".", "c", dw.DIRECTORY_OPEN); fmt.Printf("Folder picked: %s\n", tmp); return FALSE; } -func colorchoose_callback(window dw.HANDLE, data dw.POINTER) int { +func colorchoose_callback(window dw.HBUTTON, data dw.POINTER) int { current_color = dw.Color_choose(current_color); return FALSE; } -func cursortoggle_callback(window dw.HANDLE, data dw.POINTER) int { +func cursortoggle_callback(window dw.HBUTTON, data dw.POINTER) int { if cursor_arrow { dw.Window_set_text(cursortogglebutton, "Set Cursor pointer - ARROW"); dw.Window_set_pointer(dw.POINTER_TO_HANDLE(data), dw.POINTER_CLOCK); @@ -236,7 +236,7 @@ return FALSE; } -func beep_callback(window dw.HANDLE, data dw.POINTER) int { +func beep_callback(window dw.HBUTTON, data dw.POINTER) int { dw.Timer_disconnect(timerid); return TRUE; } @@ -250,7 +250,7 @@ } // Page 2 Callbacks -func motion_notify_event(window dw.HANDLE, x int, y int, buttonmask int, data dw.POINTER) int { +func motion_notify_event(window dw.HRENDER, x int, y int, buttonmask int, data dw.POINTER) int { var which = "button_press"; if(uintptr(data) > 0) { @@ -260,7 +260,7 @@ return FALSE; } -func show_window_callback(window dw.HANDLE, data dw.POINTER) int { +func show_window_callback(window dw.HMENUITEM, data dw.POINTER) int { thiswindow := dw.POINTER_TO_HANDLE(data); if thiswindow != dw.NOHWND { @@ -438,7 +438,7 @@ /* This gets called when a part of the graph needs to be repainted. */ -func text_expose(hwnd dw.HANDLE, x int, y int, width int, height int, data dw.POINTER) int { +func text_expose(hwnd dw.HRENDER, x int, y int, width int, height int, data dw.POINTER) int { if render_type != 1 { var hpm dw.HPIXMAP @@ -462,7 +462,7 @@ } /* Handle size change of the main render window */ -func configure_event(hwnd dw.HANDLE, width int, height int, data dw.POINTER) int { +func configure_event(hwnd dw.HRENDER, width int, height int, data dw.POINTER) int { old1 := text1pm; old2 := text2pm; depth := dw.Color_depth_get(); @@ -491,12 +491,12 @@ return TRUE; } -func refresh_callback(window dw.HANDLE, data dw.POINTER) int { +func refresh_callback(window dw.HBUTTON, data dw.POINTER) int { update_render(); return FALSE; } -func render_select_event_callback(window dw.HANDLE, index int, data dw.POINTER) int { +func render_select_event_callback(window dw.HLISTBOX, index int, data dw.POINTER) int { if index != render_type { if index == 2 { dw.Scrollbar_set_range(hscrollbar, uint(max_linewidth), uint(cols)); @@ -518,11 +518,11 @@ } /* Callback to handle user selection of the scrollbar position */ -func scrollbar_valuechanged_callback(hwnd dw.HANDLE, value int, data dw.POINTER) int { +func scrollbar_valuechanged_callback(hwnd dw.HSCROLLBAR, value int, data dw.POINTER) int { if data != nil { stext := dw.POINTER_TO_HANDLE(data); - if hwnd.GetHandle() == vscrollbar.GetHandle() { + if hwnd == vscrollbar { current_row = value; } else { current_col = value; @@ -634,7 +634,7 @@ return "none"; } -func keypress_callback(window dw.HANDLE, ch uint8, vk int, state int, data dw.POINTER, utf8 string) int { +func keypress_callback(window dw.HWND, ch uint8, vk int, state int, data dw.POINTER, utf8 string) int { var message string if ch != 0 { @@ -647,33 +647,33 @@ } // Page 3 and 4 Callbacks -func item_enter_cb(window dw.HANDLE, text string, data dw.POINTER) int { +func item_enter_cb(window dw.HCONTAINER, text string, data dw.POINTER) int { message := fmt.Sprintf("DW_SIGNAL_ITEM_ENTER: Window: %x Text: %s", dw.HANDLE_TO_UINTPTR(window), text); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); return FALSE; } -func item_context_cb(window dw.HANDLE, text string, x int, y int, data dw.POINTER, itemdata dw.POINTER) int { +func item_context_cb(window dw.HCONTAINER, text string, x int, y int, data dw.POINTER, itemdata dw.POINTER) int { message := fmt.Sprintf("DW_SIGNAL_ITEM_CONTEXT: Window: %x Text: %s x: %d y: %d Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), text, x, y, uintptr(itemdata)); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); return FALSE; } -func list_select_cb(window dw.HANDLE, item int, data dw.POINTER) int { +func list_select_cb(window dw.HLISTBOX, item int, data dw.POINTER) int { message := fmt.Sprintf("DW_SIGNAL_LIST_SELECT: Window: %x Item: %d", dw.HANDLE_TO_UINTPTR(window), item); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); return FALSE; } -func item_select_cb(window dw.HANDLE, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { +func item_select_cb(window dw.HTREE, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { message := fmt.Sprintf("DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); return FALSE; } -func container_select_cb(window dw.HANDLE, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { +func container_select_cb(window dw.HCONTAINER, item dw.HTREEITEM, text string, data dw.POINTER, itemdata dw.POINTER) int { message := fmt.Sprintf("DW_SIGNAL_ITEM_SELECT: Window: %x Item: %x Text: %s Itemdata: %x", dw.HANDLE_TO_UINTPTR(window), dw.HANDLE_TO_UINTPTR(item), text, uintptr(itemdata)); dw.Window_set_text(dw.POINTER_TO_HANDLE(data), message); @@ -691,13 +691,13 @@ return FALSE; } -func combobox_select_event_callback(window dw.HANDLE, index int, data dw.POINTER) int { +func combobox_select_event_callback(window dw.HLISTBOX, index int, data dw.POINTER) int { fmt.Printf("got combobox_select_event for index: %d, iteration: %d\n", index, iteration); iteration++; return FALSE; } -func column_click_cb(window dw.HANDLE, column_num int, data dw.POINTER) int { +func column_click_cb(window dw.HCONTAINER, column_num int, data dw.POINTER) int { var stype = "Unknown"; if column_num == 0 { @@ -723,7 +723,7 @@ } // Page 5 Callbacks -func button_callback(window dw.HANDLE, data dw.POINTER) int { +func button_callback(window dw.HBUTTON, data dw.POINTER) int { idx := dw.Listbox_selected(combobox1); buf1 := dw.Listbox_get_text(combobox1, idx); idx = dw.Listbox_selected( combobox2 ); @@ -740,7 +740,7 @@ var isfoldericon bool = true -func bitmap_toggle_callback(window dw.HANDLE, data dw.POINTER) int { +func bitmap_toggle_callback(window dw.HBUTTON, data dw.POINTER) int { if isfoldericon == true { isfoldericon = false; dw.Window_set_bitmap(window, 0, FILE_ICON_NAME); @@ -753,35 +753,35 @@ return FALSE; } -func percent_button_box_callback(window dw.HANDLE, data dw.POINTER) int { +func percent_button_box_callback(window dw.HBUTTON, data dw.POINTER) int { dw.Percent_set_pos(percent, dw.PERCENT_INDETERMINATE); return FALSE; } -func change_color_red_callback(window dw.HANDLE, data dw.POINTER) int { +func change_color_red_callback(window dw.HBUTTON, data dw.POINTER) int { dw.Window_set_color(buttonsbox, dw.CLR_RED, dw.CLR_RED); return FALSE; } -func change_color_yellow_callback(window dw.HANDLE, data dw.POINTER) int { +func change_color_yellow_callback(window dw.HBUTTON, data dw.POINTER) int { dw.Window_set_color(buttonsbox, dw.CLR_YELLOW, dw.CLR_YELLOW); return FALSE; } /* Callback to handle user selection of the spinbutton position */ -func spinbutton_valuechanged_callback(hwnd dw.HANDLE, value int, data dw.POINTER) int { +func spinbutton_valuechanged_callback(hwnd dw.HSPINBUTTON, value int, data dw.POINTER) int { dw.Messagebox("DWTest", dw.MB_OK, fmt.Sprintf("New value from spinbutton: %d\n", value)); return FALSE; } /* Callback to handle user selection of the slider position */ -func slider_valuechanged_callback(hwnd dw.HANDLE, value int, data dw.POINTER) int { +func slider_valuechanged_callback(hwnd dw.HSLIDER, value int, data dw.POINTER) int { dw.Percent_set_pos(percent, uint(value * 10)); return FALSE; } // Page 8 Callbacks -func scrollbox_button_callback(window dw.HANDLE, data dw.POINTER) int { +func scrollbox_button_callback(window dw.HBUTTON, data dw.POINTER) int { _, pos := dw.Scrollbox_get_pos(scrollbox); _, rng := dw.Scrollbox_get_range(scrollbox); fmt.Printf("Pos %d Range %d\n", pos, rng);