From bd17e5e9ecf0292e8113b5e889bccf4a73b06902 Mon Sep 17 00:00:00 2001 From: Milan Nikolic Date: Sat, 10 Mar 2018 22:29:31 +0100 Subject: [PATCH] Unregister class, fixes #2 --- dlgs_windows.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dlgs_windows.go b/dlgs_windows.go index d540412..d81bf5a 100644 --- a/dlgs_windows.go +++ b/dlgs_windows.go @@ -25,6 +25,7 @@ var ( sendMessageW = user32.NewProc("SendMessageW") postQuitMessageW = user32.NewProc("PostQuitMessage") registerClassExW = user32.NewProc("RegisterClassExW") + unregisterClassW = user32.NewProc("UnregisterClassW") translateMessageW = user32.NewProc("TranslateMessage") setWindowTextW = user32.NewProc("SetWindowTextW") getWindowTextLengthW = user32.NewProc("GetWindowTextLengthW") @@ -335,6 +336,12 @@ func registerClassEx(wcx *wndClassExW) (uint16, error) { return uint16(ret), nil } +func unregisterClass(className string, instance syscall.Handle) bool { + ret, _, _ := unregisterClassW.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(className))), uintptr(instance)) + + return ret != 0 +} + func getMessage(msg *msgW, hwnd syscall.Handle, msgFilterMin, msgFilterMax uint32) (bool, error) { ret, _, err := getMessageW.Call(uintptr(unsafe.Pointer(msg)), uintptr(hwnd), uintptr(msgFilterMin), uintptr(msgFilterMax)) @@ -549,6 +556,7 @@ func editBox(title, text, defaultText, className string, password bool) (string, if err != nil { return out, false, err } + defer unregisterClass(className, instance) hwnd, _ := createWindow(0, className, title, wsOverlappedWindow, swUseDefault, swUseDefault, 235, 140, 0, 0, instance) hwndText, _ := createWindow(0, "STATIC", text, wsChild|wsVisible, 10, 10, 200, 16, hwnd, 0, instance)