Mercurial > godwindows
changeset 99:ad39f3ddb362
Switch to using cgo.Handle to pass Go functions and other objects through
the C API. The avoids Go checks that were introduced around 1.5...
This also means we can remove the list that stopped garbage collection.
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Sat, 06 Nov 2021 07:14:50 -0500 |
parents | f1837535d46c |
children | 0c720f011dad |
files | dw/dw.go dwtest/dwtest.go |
diffstat | 2 files changed, 429 insertions(+), 438 deletions(-) [+] |
line wrap: on
line diff
--- a/dw/dw.go Fri Nov 05 16:45:46 2021 -0500 +++ b/dw/dw.go Sat Nov 06 07:14:50 2021 -0500 @@ -10,6 +10,7 @@ #include "dwglue.c" */ import "C" +import "runtime/cgo" import "unsafe" import "runtime" import "reflect" @@ -137,7 +138,7 @@ } type COLOR C.ulong type POINTER unsafe.Pointer -type SIGNAL_FUNC unsafe.Pointer +type DWFUNC cgo.Handle type Env struct { OSName, BuildDate, BuildTime string @@ -414,9 +415,6 @@ var VK_LCONTROL = int(C.VK_LCONTROL) var VK_RCONTROL = int(C.VK_RCONTROL) -// Cache the function pointers so they don't get garbage collected -var backs []unsafe.Pointer - // Convert a resource ID into a pointer func RESOURCE(id uintptr) unsafe.Pointer { return unsafe.Pointer(id) @@ -430,6 +428,12 @@ return COLOR((0xF0000000 | (lred) | (lgreen << 8) | (lblue << 16))) } +// Convert a Go Function into a C compatible handle +func SIGNAL_FUNC(h interface{}) DWFUNC { + fhandle := cgo.NewHandle(h) + return DWFUNC(fhandle) +} + // Convert a POINTER to a HANDLE (use with care) func POINTER_TO_HANDLE(ptr POINTER) HANDLE { return HANDLE(HGENERIC{unsafe.Pointer(ptr)}) @@ -445,6 +449,18 @@ return POINTER(handle.GetHandle()) } +// Convert a Go Object to a POINTER +func OBJECT_TO_POINTER(h interface{}) POINTER { + handle := cgo.NewHandle(h) + return POINTER(handle) +} + +// Convert a POINTER containing a Go Object to a string +func POINTER_TO_STRING(ptr POINTER) string { + h := cgo.Handle(ptr) + return h.Value().(string) +} + // Convert a HNOTEPAGE to a UINT, mostly used for display purposes func HNOTEPAGE_TO_UINT(handle HNOTEPAGE) uint { return uint(handle.pageid) @@ -2726,8 +2742,7 @@ } // Add a callback to a timer event. -func Timer_connect(interval int, sigfunc SIGNAL_FUNC, data POINTER) HTIMER { - backs = append(backs, unsafe.Pointer(sigfunc)) +func Timer_connect(interval int, sigfunc DWFUNC, data POINTER) HTIMER { return HTIMER{C.go_timer_connect(C.int(interval), unsafe.Pointer(sigfunc), unsafe.Pointer(data), 0)} } @@ -2744,11 +2759,10 @@ } // Add a callback to a widget event. -func Signal_connect(window HANDLE, signame string, sigfunc SIGNAL_FUNC, data POINTER) { +func Signal_connect(window HANDLE, signame string, sigfunc DWFUNC, data POINTER) { csigname := C.CString(signame) defer C.free(unsafe.Pointer(csigname)) - backs = append(backs, unsafe.Pointer(sigfunc)) thissigfunc := unsafe.Pointer(sigfunc) thisdata := unsafe.Pointer(data) C.go_signal_connect(window.GetHandle(), csigname, thissigfunc, thisdata, window.GetType()<<8) @@ -4647,8 +4661,7 @@ } // Creates a new print object. -func Print_new(jobname string, flags uint, pages uint, drawfunc SIGNAL_FUNC, drawdata POINTER) HPRINT { - backs = append(backs, unsafe.Pointer(drawfunc)) +func Print_new(jobname string, flags uint, pages uint, drawfunc DWFUNC, drawdata POINTER) HPRINT { cjobname := C.CString(jobname) defer C.free(unsafe.Pointer(cjobname)) @@ -4823,8 +4836,7 @@ 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a widget clicked event. @@ -4832,8 +4844,7 @@ 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a focus clicked event. @@ -4841,8 +4852,7 @@ 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a key press event. @@ -4850,8 +4860,7 @@ 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a key press event. @@ -4859,8 +4868,7 @@ 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a mouse motion event. @@ -4868,8 +4876,7 @@ 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a mouse button press event. @@ -4877,8 +4884,7 @@ csigname := C.CString(C.DW_SIGNAL_BUTTON_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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a mouse button release event. @@ -4886,8 +4892,7 @@ csigname := C.CString(C.DW_SIGNAL_BUTTON_RELEASE) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a render expose event. @@ -4895,8 +4900,7 @@ csigname := C.CString(C.DW_SIGNAL_EXPOSE) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a configure (size change) event. @@ -4904,8 +4908,7 @@ csigname := C.CString(C.DW_SIGNAL_CONFIGURE) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a tree ENTER/RETURN press event. @@ -4913,8 +4916,7 @@ csigname := C.CString(C.DW_SIGNAL_ITEM_ENTER) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a container ENTER/RETURN press event. @@ -4922,8 +4924,7 @@ csigname := C.CString(C.DW_SIGNAL_ITEM_ENTER) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a tree context event. @@ -4931,8 +4932,7 @@ csigname := C.CString(C.DW_SIGNAL_ITEM_CONTEXT) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a container context event. @@ -4940,8 +4940,7 @@ csigname := C.CString(C.DW_SIGNAL_ITEM_CONTEXT) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a tree select event. @@ -4949,8 +4948,7 @@ csigname := C.CString(C.DW_SIGNAL_ITEM_SELECT) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a container select event. @@ -4958,8 +4956,7 @@ csigname := C.CString(C.DW_SIGNAL_ITEM_SELECT) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a listbox select event. @@ -4967,8 +4964,7 @@ csigname := C.CString(C.DW_SIGNAL_LIST_SELECT) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a value changed event. @@ -4976,8 +4972,7 @@ csigname := C.CString(C.DW_SIGNAL_VALUE_CHANGED) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a value changed event. @@ -4985,8 +4980,7 @@ csigname := C.CString(C.DW_SIGNAL_VALUE_CHANGED) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a value changed event. @@ -4994,8 +4988,7 @@ csigname := C.CString(C.DW_SIGNAL_VALUE_CHANGED) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a column title click event. @@ -5003,8 +4996,7 @@ csigname := C.CString(C.DW_SIGNAL_COLUMN_CLICK) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a notebook switch page event. @@ -5012,8 +5004,7 @@ csigname := C.CString(C.DW_SIGNAL_SWITCH_PAGE) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a tree item (node) expand event. @@ -5021,8 +5012,7 @@ csigname := C.CString(C.DW_SIGNAL_TREE_EXPAND) 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a menu item clicked event. @@ -5030,15 +5020,13 @@ 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, (window.GetType()<<8)|go_flags_no_data) + C.go_signal_connect(unsafe.Pointer(window.hwnd), csigname, unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, (window.GetType()<<8)|go_flags_no_data) } // Connect a function or closure to a timer event. func (id *HTIMER) Connect(sigfunc func() int, interval int) { if id.tid == 0 { - backs = append(backs, unsafe.Pointer(&sigfunc)) - id.tid = C.go_timer_connect(C.int(interval), unsafe.Pointer(&sigfunc), nil, go_flags_no_data) + id.tid = C.go_timer_connect(C.int(interval), unsafe.Pointer(cgo.NewHandle(sigfunc)), nil, go_flags_no_data) } } @@ -5052,1060 +5040,1063 @@ // Connect a function or closure to a print object draw page event. func (print HPRINT) Connect(drawfunc func(HPRINT, HPIXMAP, int) int, flags uint, pages int) { if print.hprint == nil { - backs = append(backs, unsafe.Pointer(&drawfunc)) cjobname := C.CString(print.jobname) defer C.free(unsafe.Pointer(cjobname)) - print.hprint = C.go_print_new(cjobname, C.ulong(flags), C.uint(pages), unsafe.Pointer(&drawfunc), nil, go_flags_no_data) + print.hprint = C.go_print_new(cjobname, C.ulong(flags), C.uint(pages), unsafe.Pointer(cgo.NewHandle(drawfunc)), nil, go_flags_no_data) } } //export go_callback_remove -func go_callback_remove(pfunc unsafe.Pointer) { - // Scan through the callback function pointer list... - for i, p := range backs { - // When we find the pointer of the function - // we are removing... - if p == pfunc { - // Remove it from the callback list... - // So it can be garbage collected if not used - backs = append(backs[:i], backs[i+1:]...) - //delete(backs, i); - return - } - } +func go_callback_remove(h unsafe.Pointer) { + pfunc := cgo.Handle(h) + pfunc.Delete() } //export go_int_callback_basic -func go_int_callback_basic(pfunc unsafe.Pointer, window unsafe.Pointer, data unsafe.Pointer, flags C.uint) C.int { +func go_int_callback_basic(h unsafe.Pointer, window unsafe.Pointer, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (1 << 8): // HWND - thisfunc := *(*func(HWND, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, POINTER) int) return C.int(thisfunc(HWND{window}, POINTER(data))) case (2 << 8): // HENTRYFIELD - thisfunc := *(*func(HENTRYFIELD, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HENTRYFIELD, POINTER) int) return C.int(thisfunc(HENTRYFIELD{window}, POINTER(data))) case (3 << 8): // HTEXT - thisfunc := *(*func(HTEXT, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTEXT, POINTER) int) return C.int(thisfunc(HTEXT{window}, POINTER(data))) case (4 << 8): // HTREE - thisfunc := *(*func(HTREE, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, POINTER) int) return C.int(thisfunc(HTREE{window}, POINTER(data))) case (5 << 8): // HCONTAINER - thisfunc := *(*func(HCONTAINER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HMLE, POINTER) int) return C.int(thisfunc(HMLE{window}, POINTER(data))) case (7 << 8): // HBUTTON - thisfunc := *(*func(HBUTTON, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBUTTON, POINTER) int) return C.int(thisfunc(HBUTTON{window}, POINTER(data))) case (8 << 8): // HSPINBUTTON - thisfunc := *(*func(HSPINBUTTON, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPINBUTTON, POINTER) int) return C.int(thisfunc(HSPINBUTTON{window}, POINTER(data))) case (9 << 8): // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK, POINTER) int) return C.int(thisfunc(HNOTEBOOK{window}, POINTER(data))) case (10 << 8): // HBOX - thisfunc := *(*func(HBOX, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBOX, POINTER) int) return C.int(thisfunc(HBOX{window}, POINTER(data))) case (11 << 8): // HSCROLLBOX - thisfunc := *(*func(HSCROLLBOX, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBOX, POINTER) int) return C.int(thisfunc(HSCROLLBOX{window}, POINTER(data))) case (12 << 8): // HMENUITEM - thisfunc := *(*func(HMENUITEM, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HMENUITEM, POINTER) int) return C.int(thisfunc(HMENUITEM{window}, POINTER(data))) case (13 << 8): // HLISTBOX - thisfunc := *(*func(HLISTBOX, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HLISTBOX, POINTER) int) return C.int(thisfunc(HLISTBOX{window}, POINTER(data))) case (14 << 8): // HPERCENT - thisfunc := *(*func(HPERCENT, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HPERCENT, POINTER) int) return C.int(thisfunc(HPERCENT{window}, POINTER(data))) case (15 << 8): // HSLIDER - thisfunc := *(*func(HSLIDER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSLIDER, POINTER) int) return C.int(thisfunc(HSLIDER{window}, POINTER(data))) case (16 << 8): // HSCROLLBAR - thisfunc := *(*func(HSCROLLBAR, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBAR, POINTER) int) return C.int(thisfunc(HSCROLLBAR{window}, POINTER(data))) case (17 << 8): // HRENDER - thisfunc := *(*func(HRENDER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HRENDER, POINTER) int) return C.int(thisfunc(HRENDER{window}, POINTER(data))) case (18 << 8): // HHTML - thisfunc := *(*func(HHTML, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HHTML, POINTER) int) return C.int(thisfunc(HHTML{window}, POINTER(data))) case (19 << 8): // HCALENDAR - thisfunc := *(*func(HCALENDAR, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCALENDAR, POINTER) int) return C.int(thisfunc(HCALENDAR{window}, POINTER(data))) case (20 << 8): // HBITMAP - thisfunc := *(*func(HBITMAP, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBITMAP, POINTER) int) return C.int(thisfunc(HBITMAP{window}, POINTER(data))) case (21 << 8): // HSPLITBAR - thisfunc := *(*func(HSPLITBAR, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPLITBAR, POINTER) int) return C.int(thisfunc(HSPLITBAR{window}, POINTER(data))) case go_flags_no_data: - thisfunc := *(*func(HANDLE) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE) int) return C.int(thisfunc(HGENERIC{window})) case (1 << 8) | go_flags_no_data: // HWND - thisfunc := *(*func(HWND) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND) int) return C.int(thisfunc(HWND{window})) case (2 << 8) | go_flags_no_data: // HENTRYFIELD - thisfunc := *(*func(HENTRYFIELD) int)(pfunc) + thisfunc := pfunc.Value().(func(HENTRYFIELD) int) return C.int(thisfunc(HENTRYFIELD{window})) case (3 << 8) | go_flags_no_data: // HTEXT - thisfunc := *(*func(HTEXT) int)(pfunc) + thisfunc := pfunc.Value().(func(HTEXT) int) return C.int(thisfunc(HTEXT{window})) case (4 << 8) | go_flags_no_data: // HTREE - thisfunc := *(*func(HTREE) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE) int) return C.int(thisfunc(HTREE{window})) case (5 << 8) | go_flags_no_data: // HCONTAINER - thisfunc := *(*func(HCONTAINER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER) int) 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) + thisfunc := pfunc.Value().(func(HMLE) int) return C.int(thisfunc(HMLE{window})) case (7 << 8) | go_flags_no_data: // HBUTTON - thisfunc := *(*func(HBUTTON) int)(pfunc) + thisfunc := pfunc.Value().(func(HBUTTON) int) return C.int(thisfunc(HBUTTON{window})) case (8 << 8) | go_flags_no_data: // HSPINBUTTON - thisfunc := *(*func(HSPINBUTTON) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPINBUTTON) int) return C.int(thisfunc(HSPINBUTTON{window})) case (9 << 8) | go_flags_no_data: // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK) int) return C.int(thisfunc(HNOTEBOOK{window})) case (10 << 8) | go_flags_no_data: // HBOX - thisfunc := *(*func(HBOX) int)(pfunc) + thisfunc := pfunc.Value().(func(HBOX) int) return C.int(thisfunc(HBOX{window})) case (11 << 8) | go_flags_no_data: // HSCROLLBOX - thisfunc := *(*func(HSCROLLBOX) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBOX) int) return C.int(thisfunc(HSCROLLBOX{window})) case (12 << 8) | go_flags_no_data: // HMENUITEM - thisfunc := *(*func(HMENUITEM) int)(pfunc) + thisfunc := pfunc.Value().(func(HMENUITEM) int) return C.int(thisfunc(HMENUITEM{window})) case (13 << 8) | go_flags_no_data: // HLISTBOX - thisfunc := *(*func(HLISTBOX) int)(pfunc) + thisfunc := pfunc.Value().(func(HLISTBOX) int) return C.int(thisfunc(HLISTBOX{window})) case (14 << 8) | go_flags_no_data: // HPERCENT - thisfunc := *(*func(HPERCENT) int)(pfunc) + thisfunc := pfunc.Value().(func(HPERCENT) int) return C.int(thisfunc(HPERCENT{window})) case (15 << 8) | go_flags_no_data: // HSLIDER - thisfunc := *(*func(HSLIDER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSLIDER) int) return C.int(thisfunc(HSLIDER{window})) case (16 << 8) | go_flags_no_data: // HSCROLLBAR - thisfunc := *(*func(HSCROLLBAR) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBAR) int) return C.int(thisfunc(HSCROLLBAR{window})) case (17 << 8) | go_flags_no_data: // HRENDER - thisfunc := *(*func(HRENDER) int)(pfunc) + thisfunc := pfunc.Value().(func(HRENDER) int) return C.int(thisfunc(HRENDER{window})) case (18 << 8) | go_flags_no_data: // HHTML - thisfunc := *(*func(HHTML) int)(pfunc) + thisfunc := pfunc.Value().(func(HHTML) int) return C.int(thisfunc(HHTML{window})) case (19 << 8) | go_flags_no_data: // HCALENDAR - thisfunc := *(*func(HCALENDAR) int)(pfunc) + thisfunc := pfunc.Value().(func(HCALENDAR) int) return C.int(thisfunc(HCALENDAR{window})) case (20 << 8) | go_flags_no_data: // HBITMAP - thisfunc := *(*func(HBITMAP) int)(pfunc) + thisfunc := pfunc.Value().(func(HBITMAP) int) return C.int(thisfunc(HBITMAP{window})) case (21 << 8) | go_flags_no_data: // HSPLITBAR - thisfunc := *(*func(HSPLITBAR) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPLITBAR) int) return C.int(thisfunc(HSPLITBAR{window})) } - thisfunc := *(*func(HANDLE, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_configure(h unsafe.Pointer, window unsafe.Pointer, width C.int, height C.int, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (1 << 8): // HWND - thisfunc := *(*func(HWND, int, int, POINTER) C.int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HENTRYFIELD, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HTEXT, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HTREE, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HMLE, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HBUTTON, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSPINBUTTON, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HNOTEBOOK, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HBOX, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBOX, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HMENUITEM, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HLISTBOX, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HPERCENT, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSLIDER, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBAR, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HRENDER, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HHTML, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCALENDAR, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HBITMAP, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSPLITBAR, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, int, int) int) return C.int(thisfunc(HGENERIC{window}, int(width), int(height))) case (1 << 8) | go_flags_no_data: // HWND - thisfunc := *(*func(HWND, int, int) C.int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, int, int) int) 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) + thisfunc := pfunc.Value().(func(HENTRYFIELD, int, int) int) 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) + thisfunc := pfunc.Value().(func(HTEXT, int, int) int) 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) + thisfunc := pfunc.Value().(func(HTREE, int, int) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, int, int) int) 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) + thisfunc := pfunc.Value().(func(HMLE, int, int) int) 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) + thisfunc := pfunc.Value().(func(HBUTTON, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSPINBUTTON, int, int) int) 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) + thisfunc := pfunc.Value().(func(HNOTEBOOK, int, int) int) 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) + thisfunc := pfunc.Value().(func(HBOX, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBOX, int, int) int) 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) + thisfunc := pfunc.Value().(func(HMENUITEM, int, int) int) 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) + thisfunc := pfunc.Value().(func(HLISTBOX, int, int) int) 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) + thisfunc := pfunc.Value().(func(HPERCENT, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSLIDER, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBAR, int, int) int) 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) + thisfunc := pfunc.Value().(func(HRENDER, int, int) int) 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) + thisfunc := pfunc.Value().(func(HHTML, int, int) int) 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) + thisfunc := pfunc.Value().(func(HCALENDAR, int, int) int) 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) + thisfunc := pfunc.Value().(func(HBITMAP, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSPLITBAR, int, int) int) return C.int(thisfunc(HSPLITBAR{window}, int(width), int(height))) } - thisfunc := *(*func(HANDLE, int, int, POINTER) C.int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, int, int, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_keypress(h 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 { + pfunc := cgo.Handle(h) switch flags { case (1 << 8): // HWND - thisfunc := *(*func(HWND, uint8, int, int, POINTER, string) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HENTRYFIELD, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HTEXT, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HTREE, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HMLE, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HBUTTON, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HSPINBUTTON, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HNOTEBOOK, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HBOX, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBOX, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HMENUITEM, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HLISTBOX, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HPERCENT, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HSLIDER, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBAR, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HRENDER, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HHTML, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HCALENDAR, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HBITMAP, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HSPLITBAR, uint8, int, int, POINTER, string) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, uint8, int, int, string) int) return C.int(thisfunc(HGENERIC{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) + thisfunc := pfunc.Value().(func(HWND, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HENTRYFIELD, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HTEXT, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HTREE, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HMLE, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HBUTTON, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HSPINBUTTON, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HNOTEBOOK, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HBOX, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBOX, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HMENUITEM, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HLISTBOX, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HPERCENT, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HSLIDER, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBAR, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HRENDER, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HHTML, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HCALENDAR, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HBITMAP, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HSPLITBAR, uint8, int, int, string) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, uint8, int, int, POINTER, string) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_mouse(h unsafe.Pointer, window unsafe.Pointer, x C.int, y C.int, mask C.int, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (1 << 8): // HWND - thisfunc := *(*func(HWND, int, int, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HENTRYFIELD, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HTEXT, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HTREE, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HMLE, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HBUTTON, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSPINBUTTON, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HNOTEBOOK, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HBOX, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBOX, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HMENUITEM, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HLISTBOX, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HPERCENT, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSLIDER, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBAR, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HRENDER, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HHTML, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCALENDAR, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HBITMAP, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HSPLITBAR, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, int, int, int) int) return C.int(thisfunc(HGENERIC{window}, int(x), int(y), int(mask))) case (1 << 8) | go_flags_no_data: // HWND - thisfunc := *(*func(HWND, int, int, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HENTRYFIELD, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HTEXT, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HTREE, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HMLE, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HBUTTON, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSPINBUTTON, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HNOTEBOOK, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HBOX, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBOX, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HMENUITEM, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HLISTBOX, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HPERCENT, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSLIDER, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSCROLLBAR, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HRENDER, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HHTML, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HCALENDAR, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HBITMAP, int, int, int) int) 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) + thisfunc := pfunc.Value().(func(HSPLITBAR, int, int, int) int) return C.int(thisfunc(HSPLITBAR{window}, int(x), int(y), int(mask))) } - thisfunc := *(*func(HANDLE, int, int, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, int, int, int, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_expose(h 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 { + pfunc := cgo.Handle(h) switch flags { case (17 << 8): // HRENDER - thisfunc := *(*func(HRENDER, int, int, int, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HRENDER, int, int, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, int, int, int, int) int) return C.int(thisfunc(HGENERIC{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) + thisfunc := pfunc.Value().(func(HRENDER, int, int, int, int) int) return C.int(thisfunc(HRENDER{window}, int(x), int(y), int(width), int(height))) } - thisfunc := *(*func(HANDLE, int, int, int, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, int, int, int, int, POINTER) int) return C.int(thisfunc(HGENERIC{window}, int(x), int(y), int(width), int(height), POINTER(data))) } //export go_int_callback_item_enter -func go_int_callback_item_enter(pfunc unsafe.Pointer, window unsafe.Pointer, text *C.char, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.uint) C.int { +func go_int_callback_item_enter(h unsafe.Pointer, window unsafe.Pointer, text *C.char, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (4 << 8): // HTREE - thisfunc := *(*func(HTREE, string, POINTER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, string, POINTER, POINTER) int) return C.int(thisfunc(HTREE{window}, C.GoString(text), POINTER(data), POINTER(itemdata))) case (5 << 8): // HCONTAINER - thisfunc := *(*func(HCONTAINER, string, POINTER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER, string, POINTER, POINTER) int) filesystem := false if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { filesystem = true } return C.int(thisfunc(HCONTAINER{window, filesystem}, C.GoString(text), POINTER(data), POINTER(itemdata))) case go_flags_no_data: - thisfunc := *(*func(HANDLE, string, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, string, POINTER) int) return C.int(thisfunc(HGENERIC{window}, C.GoString(text), POINTER(itemdata))) case (4 << 8) | go_flags_no_data: // HTREE - thisfunc := *(*func(HTREE, string, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, string, POINTER) int) return C.int(thisfunc(HTREE{window}, C.GoString(text), POINTER(itemdata))) case (5 << 8) | go_flags_no_data: // HCONTAINER - thisfunc := *(*func(HCONTAINER, string, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER, string, POINTER) int) filesystem := false if Window_get_data(HCONTAINER{window, false}, "_go_filesystem") != nil { filesystem = true } return C.int(thisfunc(HCONTAINER{window, filesystem}, C.GoString(text), POINTER(itemdata))) } - thisfunc := *(*func(HANDLE, string, POINTER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, string, POINTER, POINTER) int) return C.int(thisfunc(HGENERIC{window}, C.GoString(text), POINTER(data), POINTER(itemdata))) } //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.uint) C.int { +func go_int_callback_item_context(h 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 { + pfunc := cgo.Handle(h) switch flags { case (4 << 8): // HTREE - thisfunc := *(*func(HTREE, string, int, int, POINTER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, string, int, int, POINTER, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, string, int, int, POINTER, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, string, int, int, POINTER) int) return C.int(thisfunc(HGENERIC{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) + thisfunc := pfunc.Value().(func(HTREE, string, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, string, int, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, string, int, int, POINTER, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_item_select(h unsafe.Pointer, window unsafe.Pointer, item unsafe.Pointer, text *C.char, data unsafe.Pointer, itemdata unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (4 << 8): // HTREE - thisfunc := *(*func(HTREE, HTREEITEM, string, POINTER, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, HTREEITEM, string, POINTER, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, HTREEITEM, string, POINTER, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, HTREEITEM, string, POINTER) int) return C.int(thisfunc(HGENERIC{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) + thisfunc := pfunc.Value().(func(HTREE, HTREEITEM, string, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HCONTAINER, HTREEITEM, string, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HANDLE, HTREEITEM, string, POINTER, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_numeric(h unsafe.Pointer, window unsafe.Pointer, val C.int, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (1 << 8): // HWND - thisfunc := *(*func(HWND, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, int, POINTER) int) return C.int(thisfunc(HWND{window}, int(val), POINTER(data))) case (2 << 8): // HENTRYFIELD - thisfunc := *(*func(HENTRYFIELD, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HENTRYFIELD, int, POINTER) int) return C.int(thisfunc(HENTRYFIELD{window}, int(val), POINTER(data))) case (3 << 8): // HTEXT - thisfunc := *(*func(HTEXT, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTEXT, int, POINTER) int) return C.int(thisfunc(HTEXT{window}, int(val), POINTER(data))) case (4 << 8): // HTREE - thisfunc := *(*func(HTREE, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, int, POINTER) int) return C.int(thisfunc(HTREE{window}, int(val), POINTER(data))) case (5 << 8): // HCONTAINER - thisfunc := *(*func(HCONTAINER, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER, int, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HMLE, int, POINTER) int) return C.int(thisfunc(HMLE{window}, int(val), POINTER(data))) case (7 << 8): // HBUTTON - thisfunc := *(*func(HBUTTON, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBUTTON, int, POINTER) int) return C.int(thisfunc(HBUTTON{window}, int(val), POINTER(data))) case (8 << 8): // HSPINBUTTON - thisfunc := *(*func(HSPINBUTTON, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPINBUTTON, int, POINTER) int) return C.int(thisfunc(HSPINBUTTON{window}, int(val), POINTER(data))) case (9 << 8): // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK, int, POINTER) int) return C.int(thisfunc(HNOTEBOOK{window}, int(val), POINTER(data))) case (10 << 8): // HBOX - thisfunc := *(*func(HBOX, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBOX, int, POINTER) int) return C.int(thisfunc(HBOX{window}, int(val), POINTER(data))) case (11 << 8): // HSCROLLBOX - thisfunc := *(*func(HSCROLLBOX, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBOX, int, POINTER) int) return C.int(thisfunc(HSCROLLBOX{window}, int(val), POINTER(data))) case (12 << 8): // HMENUITEM - thisfunc := *(*func(HMENUITEM, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HMENUITEM, int, POINTER) int) return C.int(thisfunc(HMENUITEM{window}, int(val), POINTER(data))) case (13 << 8): // HLISTBOX - thisfunc := *(*func(HLISTBOX, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HLISTBOX, int, POINTER) int) return C.int(thisfunc(HLISTBOX{window}, int(val), POINTER(data))) case (14 << 8): // HPERCENT - thisfunc := *(*func(HPERCENT, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HPERCENT, int, POINTER) int) return C.int(thisfunc(HPERCENT{window}, int(val), POINTER(data))) case (15 << 8): // HSLIDER - thisfunc := *(*func(HSLIDER, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSLIDER, int, POINTER) int) return C.int(thisfunc(HSLIDER{window}, int(val), POINTER(data))) case (16 << 8): // HSCROLLBAR - thisfunc := *(*func(HSCROLLBAR, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBAR, int, POINTER) int) return C.int(thisfunc(HSCROLLBAR{window}, int(val), POINTER(data))) case (17 << 8): // HRENDER - thisfunc := *(*func(HRENDER, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HRENDER, int, POINTER) int) return C.int(thisfunc(HRENDER{window}, int(val), POINTER(data))) case (18 << 8): // HHTML - thisfunc := *(*func(HHTML, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HHTML, int, POINTER) int) return C.int(thisfunc(HHTML{window}, int(val), POINTER(data))) case (19 << 8): // HCALENDAR - thisfunc := *(*func(HCALENDAR, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCALENDAR, int, POINTER) int) return C.int(thisfunc(HCALENDAR{window}, int(val), POINTER(data))) case (20 << 8): // HBITMAP - thisfunc := *(*func(HBITMAP, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBITMAP, int, POINTER) int) return C.int(thisfunc(HBITMAP{window}, int(val), POINTER(data))) case (21 << 8): // HSPLITBAR - thisfunc := *(*func(HSPLITBAR, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPLITBAR, int, POINTER) int) return C.int(thisfunc(HSPLITBAR{window}, int(val), POINTER(data))) case go_flags_no_data: - thisfunc := *(*func(HANDLE, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, int) int) return C.int(thisfunc(HGENERIC{window}, int(val))) case (1 << 8) | go_flags_no_data: // HWND - thisfunc := *(*func(HWND, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, int) int) return C.int(thisfunc(HWND{window}, int(val))) case (2 << 8) | go_flags_no_data: // HENTRYFIELD - thisfunc := *(*func(HENTRYFIELD, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HENTRYFIELD, int) int) return C.int(thisfunc(HENTRYFIELD{window}, int(val))) case (3 << 8) | go_flags_no_data: // HTEXT - thisfunc := *(*func(HTEXT, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HTEXT, int) int) return C.int(thisfunc(HTEXT{window}, int(val))) case (4 << 8) | go_flags_no_data: // HTREE - thisfunc := *(*func(HTREE, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, int) int) return C.int(thisfunc(HTREE{window}, int(val))) case (5 << 8) | go_flags_no_data: // HCONTAINER - thisfunc := *(*func(HCONTAINER, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER, int) int) 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) + thisfunc := pfunc.Value().(func(HMLE, int) int) return C.int(thisfunc(HMLE{window}, int(val))) case (7 << 8) | go_flags_no_data: // HBUTTON - thisfunc := *(*func(HBUTTON, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HBUTTON, int) int) return C.int(thisfunc(HBUTTON{window}, int(val))) case (8 << 8) | go_flags_no_data: // HSPINBUTTON - thisfunc := *(*func(HSPINBUTTON, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPINBUTTON, int) int) return C.int(thisfunc(HSPINBUTTON{window}, int(val))) case (9 << 8) | go_flags_no_data: // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK, int) int) return C.int(thisfunc(HNOTEBOOK{window}, int(val))) case (10 << 8) | go_flags_no_data: // HBOX - thisfunc := *(*func(HBOX, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HBOX, int) int) return C.int(thisfunc(HBOX{window}, int(val))) case (11 << 8) | go_flags_no_data: // HSCROLLBOX - thisfunc := *(*func(HSCROLLBOX, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBOX, int) int) return C.int(thisfunc(HSCROLLBOX{window}, int(val))) case (12 << 8) | go_flags_no_data: // HMENUITEM - thisfunc := *(*func(HMENUITEM, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HMENUITEM, int) int) return C.int(thisfunc(HMENUITEM{window}, int(val))) case (13 << 8) | go_flags_no_data: // HLISTBOX - thisfunc := *(*func(HLISTBOX, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HLISTBOX, int) int) return C.int(thisfunc(HLISTBOX{window}, int(val))) case (14 << 8) | go_flags_no_data: // HPERCENT - thisfunc := *(*func(HPERCENT, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HPERCENT, int) int) return C.int(thisfunc(HPERCENT{window}, int(val))) case (15 << 8) | go_flags_no_data: // HSLIDER - thisfunc := *(*func(HSLIDER, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HSLIDER, int) int) return C.int(thisfunc(HSLIDER{window}, int(val))) case (16 << 8) | go_flags_no_data: // HSCROLLBAR - thisfunc := *(*func(HSCROLLBAR, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBAR, int) int) return C.int(thisfunc(HSCROLLBAR{window}, int(val))) case (17 << 8) | go_flags_no_data: // HRENDER - thisfunc := *(*func(HRENDER, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HRENDER, int) int) return C.int(thisfunc(HRENDER{window}, int(val))) case (18 << 8) | go_flags_no_data: // HHTML - thisfunc := *(*func(HHTML, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HHTML, int) int) return C.int(thisfunc(HHTML{window}, int(val))) case (19 << 8) | go_flags_no_data: // HCALENDAR - thisfunc := *(*func(HCALENDAR, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HCALENDAR, int) int) return C.int(thisfunc(HCALENDAR{window}, int(val))) case (20 << 8) | go_flags_no_data: // HBITMAP - thisfunc := *(*func(HBITMAP, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HBITMAP, int) int) return C.int(thisfunc(HBITMAP{window}, int(val))) case (21 << 8) | go_flags_no_data: // HSPLITBAR - thisfunc := *(*func(HSPLITBAR, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPLITBAR, int) int) return C.int(thisfunc(HSPLITBAR{window}, int(val))) } - thisfunc := *(*func(HANDLE, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, int, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_ulong(h unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (1 << 8): // HWND - thisfunc := *(*func(HWND, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, uint, POINTER) int) return C.int(thisfunc(HWND{window}, uint(val), POINTER(data))) case (2 << 8): // HENTRYFIELD - thisfunc := *(*func(HENTRYFIELD, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HENTRYFIELD, uint, POINTER) int) return C.int(thisfunc(HENTRYFIELD{window}, uint(val), POINTER(data))) case (3 << 8): // HTEXT - thisfunc := *(*func(HTEXT, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTEXT, uint, POINTER) int) return C.int(thisfunc(HTEXT{window}, uint(val), POINTER(data))) case (4 << 8): // HTREE - thisfunc := *(*func(HTREE, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, uint, POINTER) int) return C.int(thisfunc(HTREE{window}, uint(val), POINTER(data))) case (5 << 8): // HCONTAINER - thisfunc := *(*func(HCONTAINER, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER, uint, POINTER) int) 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) + thisfunc := pfunc.Value().(func(HMLE, uint, POINTER) int) return C.int(thisfunc(HMLE{window}, uint(val), POINTER(data))) case (7 << 8): // HBUTTON - thisfunc := *(*func(HBUTTON, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBUTTON, uint, POINTER) int) return C.int(thisfunc(HBUTTON{window}, uint(val), POINTER(data))) case (8 << 8): // HSPINBUTTON - thisfunc := *(*func(HSPINBUTTON, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPINBUTTON, uint, POINTER) int) return C.int(thisfunc(HSPINBUTTON{window}, uint(val), POINTER(data))) case (9 << 8): // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK, uint, POINTER) int) return C.int(thisfunc(HNOTEBOOK{window}, uint(val), POINTER(data))) case (10 << 8): // HBOX - thisfunc := *(*func(HBOX, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBOX, uint, POINTER) int) return C.int(thisfunc(HBOX{window}, uint(val), POINTER(data))) case (11 << 8): // HSCROLLBOX - thisfunc := *(*func(HSCROLLBOX, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBOX, uint, POINTER) int) return C.int(thisfunc(HSCROLLBOX{window}, uint(val), POINTER(data))) case (12 << 8): // HMENUITEM - thisfunc := *(*func(HMENUITEM, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HMENUITEM, uint, POINTER) int) return C.int(thisfunc(HMENUITEM{window}, uint(val), POINTER(data))) case (13 << 8): // HLISTBOX - thisfunc := *(*func(HLISTBOX, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HLISTBOX, uint, POINTER) int) return C.int(thisfunc(HLISTBOX{window}, uint(val), POINTER(data))) case (14 << 8): // HPERCENT - thisfunc := *(*func(HPERCENT, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HPERCENT, uint, POINTER) int) return C.int(thisfunc(HPERCENT{window}, uint(val), POINTER(data))) case (15 << 8): // HSLIDER - thisfunc := *(*func(HSLIDER, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSLIDER, uint, POINTER) int) return C.int(thisfunc(HSLIDER{window}, uint(val), POINTER(data))) case (16 << 8): // HSCROLLBAR - thisfunc := *(*func(HSCROLLBAR, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBAR, uint, POINTER) int) return C.int(thisfunc(HSCROLLBAR{window}, uint(val), POINTER(data))) case (17 << 8): // HRENDER - thisfunc := *(*func(HRENDER, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HRENDER, uint, POINTER) int) return C.int(thisfunc(HRENDER{window}, uint(val), POINTER(data))) case (18 << 8): // HHTML - thisfunc := *(*func(HHTML, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HHTML, uint, POINTER) int) return C.int(thisfunc(HHTML{window}, uint(val), POINTER(data))) case (19 << 8): // HCALENDAR - thisfunc := *(*func(HCALENDAR, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HCALENDAR, uint, POINTER) int) return C.int(thisfunc(HCALENDAR{window}, uint(val), POINTER(data))) case (20 << 8): // HBITMAP - thisfunc := *(*func(HBITMAP, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HBITMAP, uint, POINTER) int) return C.int(thisfunc(HBITMAP{window}, uint(val), POINTER(data))) case (21 << 8): // HSPLITBAR - thisfunc := *(*func(HSPLITBAR, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPLITBAR, uint, POINTER) int) return C.int(thisfunc(HSPLITBAR{window}, uint(val), POINTER(data))) case go_flags_no_data: - thisfunc := *(*func(HANDLE, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, uint) int) return C.int(thisfunc(HGENERIC{window}, uint(val))) case (1 << 8) | go_flags_no_data: // HWND - thisfunc := *(*func(HWND, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HWND, uint) int) return C.int(thisfunc(HWND{window}, uint(val))) case (2 << 8) | go_flags_no_data: // HENTRYFIELD - thisfunc := *(*func(HENTRYFIELD, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HENTRYFIELD, uint) int) return C.int(thisfunc(HENTRYFIELD{window}, uint(val))) case (3 << 8) | go_flags_no_data: // HTEXT - thisfunc := *(*func(HTEXT, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HTEXT, uint) int) return C.int(thisfunc(HTEXT{window}, uint(val))) case (4 << 8) | go_flags_no_data: // HTREE - thisfunc := *(*func(HTREE, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, uint) int) return C.int(thisfunc(HTREE{window}, uint(val))) case (5 << 8) | go_flags_no_data: // HCONTAINER - thisfunc := *(*func(HCONTAINER, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HCONTAINER, uint) int) 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) + thisfunc := pfunc.Value().(func(HMLE, uint) int) return C.int(thisfunc(HMLE{window}, uint(val))) case (7 << 8) | go_flags_no_data: // HBUTTON - thisfunc := *(*func(HBUTTON, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HBUTTON, uint) int) return C.int(thisfunc(HBUTTON{window}, uint(val))) case (8 << 8) | go_flags_no_data: // HSPINBUTTON - thisfunc := *(*func(HSPINBUTTON, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPINBUTTON, uint) int) return C.int(thisfunc(HSPINBUTTON{window}, uint(val))) case (9 << 8) | go_flags_no_data: // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK, uint) int) return C.int(thisfunc(HNOTEBOOK{window}, uint(val))) case (10 << 8) | go_flags_no_data: // HBOX - thisfunc := *(*func(HBOX, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HBOX, uint) int) return C.int(thisfunc(HBOX{window}, uint(val))) case (11 << 8) | go_flags_no_data: // HSCROLLBOX - thisfunc := *(*func(HSCROLLBOX, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBOX, uint) int) return C.int(thisfunc(HSCROLLBOX{window}, uint(val))) case (12 << 8) | go_flags_no_data: // HMENUITEM - thisfunc := *(*func(HMENUITEM, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HMENUITEM, uint) int) return C.int(thisfunc(HMENUITEM{window}, uint(val))) case (13 << 8) | go_flags_no_data: // HLISTBOX - thisfunc := *(*func(HLISTBOX, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HLISTBOX, uint) int) return C.int(thisfunc(HLISTBOX{window}, uint(val))) case (14 << 8) | go_flags_no_data: // HPERCENT - thisfunc := *(*func(HPERCENT, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HPERCENT, uint) int) return C.int(thisfunc(HPERCENT{window}, uint(val))) case (15 << 8) | go_flags_no_data: // HSLIDER - thisfunc := *(*func(HSLIDER, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HSLIDER, uint) int) return C.int(thisfunc(HSLIDER{window}, uint(val))) case (16 << 8) | go_flags_no_data: // HSCROLLBAR - thisfunc := *(*func(HSCROLLBAR, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HSCROLLBAR, uint) int) return C.int(thisfunc(HSCROLLBAR{window}, uint(val))) case (17 << 8) | go_flags_no_data: // HRENDER - thisfunc := *(*func(HRENDER, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HRENDER, uint) int) return C.int(thisfunc(HRENDER{window}, uint(val))) case (18 << 8) | go_flags_no_data: // HHTML - thisfunc := *(*func(HHTML, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HHTML, uint) int) return C.int(thisfunc(HHTML{window}, uint(val))) case (19 << 8) | go_flags_no_data: // HCALENDAR - thisfunc := *(*func(HCALENDAR, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HCALENDAR, uint) int) return C.int(thisfunc(HCALENDAR{window}, uint(val))) case (20 << 8) | go_flags_no_data: // HBITMAP - thisfunc := *(*func(HBITMAP, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HBITMAP, uint) int) return C.int(thisfunc(HBITMAP{window}, uint(val))) case (21 << 8) | go_flags_no_data: // HSPLITBAR - thisfunc := *(*func(HSPLITBAR, uint) int)(pfunc) + thisfunc := pfunc.Value().(func(HSPLITBAR, uint) int) return C.int(thisfunc(HSPLITBAR{window}, uint(val))) } - thisfunc := *(*func(HANDLE, uint, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, uint, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_notepage(h unsafe.Pointer, window unsafe.Pointer, val C.ulong, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (9 << 8): // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK, HNOTEPAGE, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK, HNOTEPAGE, POINTER) int) return C.int(thisfunc(HNOTEBOOK{window}, HNOTEPAGE{val, HNOTEBOOK{window}}, POINTER(data))) case go_flags_no_data: - thisfunc := *(*func(HANDLE, HNOTEPAGE) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, HNOTEPAGE) int) return C.int(thisfunc(HGENERIC{window}, HNOTEPAGE{val, HNOTEBOOK{window}})) case (9 << 8) | go_flags_no_data: // HNOTEBOOK - thisfunc := *(*func(HNOTEBOOK, HNOTEPAGE) int)(pfunc) + thisfunc := pfunc.Value().(func(HNOTEBOOK, HNOTEPAGE) int) return C.int(thisfunc(HNOTEBOOK{window}, HNOTEPAGE{val, HNOTEBOOK{window}})) } - thisfunc := *(*func(HANDLE, HNOTEPAGE, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, HNOTEPAGE, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_tree(h unsafe.Pointer, window unsafe.Pointer, tree unsafe.Pointer, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) switch flags { case (4 << 8): // HTREE - thisfunc := *(*func(HTREE, HTREEITEM, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, HTREEITEM, POINTER) int) return C.int(thisfunc(HTREE{window}, HTREEITEM{tree, HWND{window}}, POINTER(data))) case go_flags_no_data: - thisfunc := *(*func(HANDLE, HTREEITEM) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, HTREEITEM) int) return C.int(thisfunc(HGENERIC{window}, HTREEITEM{tree, HWND{window}})) case (4 << 8) | go_flags_no_data: // HTREE - thisfunc := *(*func(HTREE, HTREEITEM) int)(pfunc) + thisfunc := pfunc.Value().(func(HTREE, HTREEITEM) int) return C.int(thisfunc(HTREE{window}, HTREEITEM{tree, HWND{window}})) } - thisfunc := *(*func(HANDLE, HTREEITEM, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HANDLE, HTREEITEM, POINTER) int) return C.int(thisfunc(HGENERIC{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.uint) C.int { +func go_int_callback_timer(h unsafe.Pointer, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func() int)(pfunc) + thisfunc := pfunc.Value().(func() int) return C.int(thisfunc()) } - thisfunc := *(*func(POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(POINTER) int) return C.int(thisfunc(POINTER(data))) } //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.uint) C.int { +func go_int_callback_print(h unsafe.Pointer, print unsafe.Pointer, pixmap unsafe.Pointer, page_num C.int, data unsafe.Pointer, flags C.uint) C.int { + pfunc := cgo.Handle(h) if (flags & go_flags_no_data) == go_flags_no_data { - thisfunc := *(*func(HPRINT, HPIXMAP, int) int)(pfunc) + thisfunc := pfunc.Value().(func(HPRINT, HPIXMAP, int) int) return C.int(thisfunc(HPRINT{print, ""}, HPIXMAP{pixmap}, int(page_num))) } - thisfunc := *(*func(HPRINT, HPIXMAP, int, POINTER) int)(pfunc) + thisfunc := pfunc.Value().(func(HPRINT, HPIXMAP, int, POINTER) int) return C.int(thisfunc(HPRINT{print, ""}, HPIXMAP{pixmap}, int(page_num), POINTER(data))) }
--- a/dwtest/dwtest.go Fri Nov 05 16:45:46 2021 -0500 +++ b/dwtest/dwtest.go Sat Nov 06 07:14:50 2021 -0500 @@ -156,7 +156,7 @@ } func menu_callback(window dw.HMENUITEM, data dw.POINTER) int { - info := *(*string)(data) + info := dw.POINTER_TO_STRING(data) buf := fmt.Sprintf("%s menu item selected", info) dw.Messagebox("Menu Item Callback", dw.MB_OK|dw.MB_INFORMATION, buf) return FALSE @@ -283,10 +283,10 @@ hwndMenu := dw.Menu_new(0) menuitem := dw.Menu_append_item(hwndMenu, "~Quit", dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU) - dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) dw.Menu_append_item(hwndMenu, dw.MENU_SEPARATOR, dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU) menuitem = dw.Menu_append_item(hwndMenu, "~Show Window", dw.MENU_POPUP, 0, TRUE, FALSE, dw.NOMENU) - dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&show_window_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(show_window_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) px, py := dw.Pointer_query_pos() /* Use the toplevel window handle here.... because on the Mac.. * using the control itself, when a different tab is active @@ -440,7 +440,7 @@ } func print_callback(window dw.HANDLE, data dw.POINTER) int { - print := dw.Print_new("DWTest Job", 0, 2, dw.SIGNAL_FUNC(&draw_page_func), nil) + print := dw.Print_new("DWTest Job", 0, 2, dw.SIGNAL_FUNC(draw_page_func), nil) dw.Print_run(print, 0) return FALSE } @@ -1027,7 +1027,7 @@ /* add menus to the menubar */ menu := dw.Menu_new(0) menuitem := dw.Menu_append_item(menu, "~Quit", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU) - dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) /* * Add the "File" menu to the menubar... */ @@ -1035,14 +1035,14 @@ changeable_menu := dw.Menu_new(0) checkable_menuitem = dw.Menu_append_item(changeable_menu, "~Checkable Menu Item", dw.MENU_AUTO, 0, dw.TRUE, dw.TRUE, dw.NOMENU) - dw.Signal_connect(checkable_menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&menu_callback_func), dw.POINTER(&checkable_string)) + dw.Signal_connect(checkable_menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(menu_callback_func), dw.OBJECT_TO_POINTER(checkable_string)) noncheckable_menuitem = dw.Menu_append_item(changeable_menu, "~Non-checkable Menu Item", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU) - dw.Signal_connect(noncheckable_menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&menu_callback_func), dw.POINTER(&noncheckable_string)) + dw.Signal_connect(noncheckable_menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(menu_callback_func), dw.OBJECT_TO_POINTER(noncheckable_string)) dw.Menu_append_item(changeable_menu, "~Disabled menu Item", dw.MENU_AUTO, dw.MIS_DISABLED|dw.MIS_CHECKED, dw.TRUE, dw.TRUE, dw.NOMENU) /* seperator */ dw.Menu_append_item(changeable_menu, dw.MENU_SEPARATOR, dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU) menuitem = dw.Menu_append_item(changeable_menu, "~Menu Items Disabled", dw.MENU_AUTO, 0, dw.TRUE, dw.TRUE, dw.NOMENU) - dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&menutoggle_callback_func), nil) + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(menutoggle_callback_func), nil) /* * Add the "Menu" menu to the menubar... */ @@ -1050,7 +1050,7 @@ menu = dw.Menu_new(0) menuitem = dw.Menu_append_item(menu, "~About", dw.MENU_AUTO, 0, dw.TRUE, dw.FALSE, dw.NOMENU) - dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&helpabout_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(menuitem, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(helpabout_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) /* * Add the "Help" menu to the menubar... */ @@ -1136,14 +1136,14 @@ dw.Window_set_color(buttonbox, dw.CLR_DARKCYAN, dw.CLR_PALEGRAY) dw.Window_set_color(okbutton, dw.CLR_PALEGRAY, dw.CLR_DARKCYAN) - dw.Signal_connect(browsefilebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&browse_file_callback_func), nil) - dw.Signal_connect(browsefolderbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&browse_folder_callback_func), nil) - dw.Signal_connect(copybutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(©_clicked_callback_func), dw.HANDLE_TO_POINTER(copypastefield)) - dw.Signal_connect(pastebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&paste_clicked_callback_func), dw.HANDLE_TO_POINTER(copypastefield)) - dw.Signal_connect(okbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&beep_callback_func), nil) - dw.Signal_connect(cancelbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) - dw.Signal_connect(cursortogglebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&cursortoggle_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) - dw.Signal_connect(colorchoosebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&colorchoose_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(browsefilebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(browse_file_callback_func), nil) + dw.Signal_connect(browsefolderbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(browse_folder_callback_func), nil) + dw.Signal_connect(copybutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(copy_clicked_callback_func), dw.HANDLE_TO_POINTER(copypastefield)) + dw.Signal_connect(pastebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(paste_clicked_callback_func), dw.HANDLE_TO_POINTER(copypastefield)) + dw.Signal_connect(okbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(beep_callback_func), nil) + dw.Signal_connect(cancelbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(cursortogglebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(cursortoggle_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(colorchoosebutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(colorchoose_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) } // Create Page 2 @@ -1250,19 +1250,19 @@ dw.Messagebox("DWTest", dw.MB_OK|dw.MB_INFORMATION, fmt.Sprintf("Width: %d Height: %d\n", font_width, font_height)) dw.Draw_rect(dw.NOHWND, text1pm, dw.DRAW_FILL|dw.DRAW_NOAA, 0, 0, font_width*width1, font_height*rows) dw.Draw_rect(dw.NOHWND, text2pm, dw.DRAW_FILL|dw.DRAW_NOAA, 0, 0, font_width*cols, font_height*rows) - dw.Signal_connect(textbox1, dw.SIGNAL_BUTTON_PRESS, dw.SIGNAL_FUNC(&context_menu_event_func), nil) - dw.Signal_connect(textbox1, dw.SIGNAL_EXPOSE, dw.SIGNAL_FUNC(&text_expose_func), nil) - dw.Signal_connect(textbox2, dw.SIGNAL_EXPOSE, dw.SIGNAL_FUNC(&text_expose_func), nil) - dw.Signal_connect(textbox2, dw.SIGNAL_CONFIGURE, dw.SIGNAL_FUNC(&configure_event_func), nil) - dw.Signal_connect(textbox2, dw.SIGNAL_MOTION_NOTIFY, dw.SIGNAL_FUNC(&motion_notify_event_func), dw.POINTER(uintptr(1))) - dw.Signal_connect(textbox2, dw.SIGNAL_BUTTON_PRESS, dw.SIGNAL_FUNC(&motion_notify_event_func), nil) - dw.Signal_connect(hscrollbar, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&scrollbar_valuechanged_callback_func), dw.HANDLE_TO_POINTER(status1)) - dw.Signal_connect(vscrollbar, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&scrollbar_valuechanged_callback_func), dw.HANDLE_TO_POINTER(status1)) - dw.Signal_connect(imagestretchcheck, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&refresh_callback_func), nil) - dw.Signal_connect(button1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&refresh_callback_func), nil) - dw.Signal_connect(button2, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&print_callback_func), nil) - dw.Signal_connect(rendcombo, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(&render_select_event_callback_func), nil) - dw.Signal_connect(mainwindow, dw.SIGNAL_KEY_PRESS, dw.SIGNAL_FUNC(&keypress_callback_func), nil) + dw.Signal_connect(textbox1, dw.SIGNAL_BUTTON_PRESS, dw.SIGNAL_FUNC(context_menu_event_func), nil) + dw.Signal_connect(textbox1, dw.SIGNAL_EXPOSE, dw.SIGNAL_FUNC(text_expose_func), nil) + dw.Signal_connect(textbox2, dw.SIGNAL_EXPOSE, dw.SIGNAL_FUNC(text_expose_func), nil) + dw.Signal_connect(textbox2, dw.SIGNAL_CONFIGURE, dw.SIGNAL_FUNC(configure_event_func), nil) + dw.Signal_connect(textbox2, dw.SIGNAL_MOTION_NOTIFY, dw.SIGNAL_FUNC(motion_notify_event_func), dw.POINTER(uintptr(1))) + dw.Signal_connect(textbox2, dw.SIGNAL_BUTTON_PRESS, dw.SIGNAL_FUNC(motion_notify_event_func), nil) + dw.Signal_connect(hscrollbar, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(scrollbar_valuechanged_callback_func), dw.HANDLE_TO_POINTER(status1)) + dw.Signal_connect(vscrollbar, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(scrollbar_valuechanged_callback_func), dw.HANDLE_TO_POINTER(status1)) + dw.Signal_connect(imagestretchcheck, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(refresh_callback_func), nil) + dw.Signal_connect(button1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(refresh_callback_func), nil) + dw.Signal_connect(button2, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(print_callback_func), nil) + dw.Signal_connect(rendcombo, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(render_select_event_callback_func), nil) + dw.Signal_connect(mainwindow, dw.SIGNAL_KEY_PRESS, dw.SIGNAL_FUNC(keypress_callback_func), nil) dw.Taskbar_insert(textbox1, fileicon, "DWTest") } @@ -1287,8 +1287,8 @@ dw.Box_pack_start(notebookbox3, tree_status, 100, -1, TRUE, FALSE, 1) /* set up our signal trappers... */ - dw.Signal_connect(tree, dw.SIGNAL_ITEM_CONTEXT, dw.SIGNAL_FUNC(&item_context_cb_func), dw.HANDLE_TO_POINTER(tree_status)) - dw.Signal_connect(tree, dw.SIGNAL_ITEM_SELECT, dw.SIGNAL_FUNC(&item_select_cb_func), dw.HANDLE_TO_POINTER(tree_status)) + dw.Signal_connect(tree, dw.SIGNAL_ITEM_CONTEXT, dw.SIGNAL_FUNC(item_context_cb_func), dw.HANDLE_TO_POINTER(tree_status)) + dw.Signal_connect(tree, dw.SIGNAL_ITEM_SELECT, dw.SIGNAL_FUNC(item_select_cb_func), dw.HANDLE_TO_POINTER(tree_status)) t1 := dw.Tree_insert(tree, "tree folder 1", foldericon, dw.NOHTREEITEM, dw.POINTER(uintptr(1))) t2 := dw.Tree_insert(tree, "tree folder 2", foldericon, dw.NOHTREEITEM, dw.POINTER(uintptr(2))) @@ -1370,10 +1370,10 @@ mle_point = dw.Mle_import(container_mle, fmt.Sprintf("[%d]\r\n\r\n", mle_point), mle_point) dw.Mle_set_cursor(container_mle, mle_point) /* connect our event trappers... */ - dw.Signal_connect(container, dw.SIGNAL_ITEM_ENTER, dw.SIGNAL_FUNC(&item_enter_cb_func), dw.HANDLE_TO_POINTER(container_status)) - dw.Signal_connect(container, dw.SIGNAL_ITEM_CONTEXT, dw.SIGNAL_FUNC(&item_context_cb_func), dw.HANDLE_TO_POINTER(container_status)) - dw.Signal_connect(container, dw.SIGNAL_ITEM_SELECT, dw.SIGNAL_FUNC(&container_select_cb_func), dw.HANDLE_TO_POINTER(container_status)) - dw.Signal_connect(container, dw.SIGNAL_COLUMN_CLICK, dw.SIGNAL_FUNC(&column_click_cb_func), dw.HANDLE_TO_POINTER(container_status)) + dw.Signal_connect(container, dw.SIGNAL_ITEM_ENTER, dw.SIGNAL_FUNC(item_enter_cb_func), dw.HANDLE_TO_POINTER(container_status)) + dw.Signal_connect(container, dw.SIGNAL_ITEM_CONTEXT, dw.SIGNAL_FUNC(item_context_cb_func), dw.HANDLE_TO_POINTER(container_status)) + dw.Signal_connect(container, dw.SIGNAL_ITEM_SELECT, dw.SIGNAL_FUNC(container_select_cb_func), dw.HANDLE_TO_POINTER(container_status)) + dw.Signal_connect(container, dw.SIGNAL_COLUMN_CLICK, dw.SIGNAL_FUNC(column_click_cb_func), dw.HANDLE_TO_POINTER(container_status)) } // Page 5 @@ -1400,11 +1400,11 @@ dw.Window_set_color(buttonboxperm, dw.CLR_WHITE, dw.CLR_WHITE) abutton1 := dw.Bitmapbutton_new_from_file("Top Button", 0, fmt.Sprintf("%s/%s", SRCROOT, FILE_ICON_NAME)) dw.Box_pack_start(buttonboxperm, abutton1, 100, 30, FALSE, FALSE, 0) - dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&button_callback_func), nil) + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(button_callback_func), nil) dw.Box_pack_start(buttonboxperm, dw.NOHWND, 25, 5, FALSE, FALSE, 0) abutton2 := dw.Bitmapbutton_new_from_file("Bottom", 0, fmt.Sprintf("%s/%s", SRCROOT, FOLDER_ICON_NAME)) dw.Box_pack_start(buttonsbox, abutton2, 25, 25, FALSE, FALSE, 0) - dw.Signal_connect(abutton2, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&button_callback_func), nil) + dw.Signal_connect(abutton2, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(button_callback_func), nil) dw.Window_set_bitmap(abutton2, 0, FILE_ICON_NAME) create_button(false) @@ -1417,14 +1417,14 @@ /* dw_window_set_text( combobox, "initial value"); */ - dw.Signal_connect(combobox1, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(&combobox_select_event_callback_func), nil) + dw.Signal_connect(combobox1, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(combobox_select_event_callback_func), nil) combobox2 = dw.Combobox_new("joe", 0) /* no point in specifying an initial value */ dw.Box_pack_start(combox, combobox2, -1, -1, TRUE, FALSE, 0) /* dw_window_set_text( combobox, "initial value"); */ - dw.Signal_connect(combobox2, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(&combobox_select_event_callback_func), nil) + dw.Signal_connect(combobox2, dw.SIGNAL_LIST_SELECT, dw.SIGNAL_FUNC(combobox_select_event_callback_func), nil) /* add LOTS of items */ fmt.Printf("before appending 500 items to combobox using dw_listbox_list_append()\n") text := make([]string, 500) @@ -1441,11 +1441,11 @@ dw.Box_pack_start(combox, spinbutton, -1, -1, TRUE, FALSE, 0) dw.Spinbutton_set_limits(spinbutton, 100, 1) dw.Spinbutton_set_pos(spinbutton, 30) - dw.Signal_connect(spinbutton, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&spinbutton_valuechanged_callback_func), nil) + dw.Signal_connect(spinbutton, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(spinbutton_valuechanged_callback_func), nil) /* make a slider */ slider = dw.Slider_new(FALSE, 11, 0) /* no point in specifying text */ dw.Box_pack_start(combox, slider, -1, -1, TRUE, FALSE, 0) - dw.Signal_connect(slider, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(&slider_valuechanged_callback_func), nil) + dw.Signal_connect(slider, dw.SIGNAL_VALUE_CHANGED, dw.SIGNAL_FUNC(slider_valuechanged_callback_func), nil) /* make a percent */ percent = dw.Percent_new(0) dw.Box_pack_start(combox, percent, -1, -1, TRUE, FALSE, 0) @@ -1457,19 +1457,19 @@ abutton1 := dw.Bitmapbutton_new_from_file("Empty image. Should be under Top button", 0, "junk") dw.Box_pack_start(filetoolbarbox, abutton1, 25, 25, FALSE, FALSE, 0) - dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&change_color_red_callback_func), nil) + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(change_color_red_callback_func), nil) dw.Box_pack_start(filetoolbarbox, dw.NOHWND, 25, 5, FALSE, FALSE, 0) abutton1 = dw.Bitmapbutton_new_from_file("A borderless bitmapbitton", 0, fmt.Sprintf("%s/%s", SRCROOT, FOLDER_ICON_NAME)) dw.Box_pack_start(filetoolbarbox, abutton1, 25, 25, FALSE, FALSE, 0) - dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&change_color_yellow_callback_func), nil) + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(change_color_yellow_callback_func), nil) dw.Box_pack_start(filetoolbarbox, dw.NOHWND, 25, 5, FALSE, FALSE, 0) dw.Window_set_style(abutton1, dw.BS_NOBORDER, dw.BS_NOBORDER) //abutton1 = dw.Bitmapbutton_new_from_data("A button from data", 0, folder_ico, 1718 ); abutton1 = dw.Bitmapbutton_new_from_file("A button from data", 0, "junk") dw.Box_pack_start(filetoolbarbox, abutton1, 25, 25, FALSE, FALSE, 0) - dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&percent_button_box_callback_func), nil) + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(percent_button_box_callback_func), nil) dw.Box_pack_start(filetoolbarbox, dw.NOHWND, 25, 5, FALSE, FALSE, 0) if redraw == true { dw.Window_redraw(filetoolbarbox) @@ -1487,7 +1487,7 @@ abutton1 := dw.Button_new("Show Adjustments", 0) dw.Box_pack_start(scrollbox, abutton1, -1, 30, FALSE, FALSE, 0) - dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&scrollbox_button_callback_func), nil) + dw.Signal_connect(abutton1, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(scrollbox_button_callback_func), nil) for i = 0; i < MAX_WIDGETS; i++ { tmpbox := dw.Box_new(dw.HORZ, 0) @@ -1519,7 +1519,7 @@ startbutton = dw.Button_new("Start Threads", 0) dw.Box_pack_start(tmpbox, startbutton, -1, 30, dw.FALSE, dw.FALSE, 0) - dw.Signal_connect(startbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(&start_threads_button_callback_func), nil) + dw.Signal_connect(startbutton, dw.SIGNAL_CLICKED, dw.SIGNAL_FUNC(start_threads_button_callback_func), nil) /* Create the base threading components */ threadmle = dw.Mle_new(0) @@ -1563,7 +1563,7 @@ } notebook := dw.Notebook_new(1, dw.TRUE) dw.Box_pack_start(notebookbox, notebook, 100, 100, dw.TRUE, dw.TRUE, 0) - dw.Signal_connect(notebook, dw.SIGNAL_SWITCH_PAGE, dw.SIGNAL_FUNC(&switch_page_callback_func), nil) + dw.Signal_connect(notebook, dw.SIGNAL_SWITCH_PAGE, dw.SIGNAL_FUNC(switch_page_callback_func), nil) notebookbox1 = dw.Box_new(dw.VERT, 5) notebookpage1 := dw.Notebook_page_new(notebook, 0, dw.TRUE) @@ -1635,7 +1635,7 @@ /* Set the default field */ dw.Window_default(mainwindow, copypastefield) - dw.Signal_connect(mainwindow, dw.SIGNAL_DELETE, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + dw.Signal_connect(mainwindow, dw.SIGNAL_DELETE, dw.SIGNAL_FUNC(exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) /* * The following is a special case handler for the Mac and other platforms which contain * an application object which can be closed. It function identically to a window delete/close @@ -1643,8 +1643,8 @@ * handled or you allow the default handler to take place the entire application will close. * On platforms which do not have an application object this line will be ignored. */ - dw.Signal_connect(dw.DESKTOP, dw.SIGNAL_DELETE, dw.SIGNAL_FUNC(&exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) - timerid = dw.Timer_connect(2000, dw.SIGNAL_FUNC(&timer_callback_func), nil) + dw.Signal_connect(dw.DESKTOP, dw.SIGNAL_DELETE, dw.SIGNAL_FUNC(exit_callback_func), dw.HANDLE_TO_POINTER(mainwindow)) + timerid = dw.Timer_connect(2000, dw.SIGNAL_FUNC(timer_callback_func), nil) dw.Window_set_size(mainwindow, 640, 550) dw.Window_show(mainwindow)