From df8f7a2190af726e19adb205ef1a221757e2288d Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 9 Feb 2014 16:40:53 -0500 Subject: Added window messages and custom message loops. --- main.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'main.go') diff --git a/main.go b/main.go index b16378e..fe38d47 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,27 @@ func fatalf(format string, args ...interface{}) { panic(fmt.Sprintf("error trying to warn user of internal error: %v\ninternal error:\n%s", err, s)) } +func wndProc(hwnd HWND, msg uint32, wparam WPARAM, lparam LPARAM) LRESULT { + switch msg { + case WM_CLOSE: + err := DestroyWindow(hwnd) + if err != nil { + fatalf("error destroying window: %v", err) + } + return 0 + case WM_DESTROY: + err := PostQuitMessage(0) + if err != nil { + fatalf("error posting quit message: %v", err) + } + return 0 + default: + return DefWindowProc(hwnd, msg, wparam, lparam) + } + fatalf("major bug: forgot a return on wndProc for message %d", msg) + panic("unreachable") +} + const className = "mainwin" func main() { @@ -44,7 +65,7 @@ func main() { wc := &WNDCLASS{ LpszClassName: className, - LpfnWndProc: DefWindowProc, + LpfnWndProc: wndProc, HInstance: hInstance, HIcon: icon, HCursor: cursor, -- cgit v1.2.3