diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-09 16:40:53 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-09 16:40:53 -0500 |
| commit | df8f7a2190af726e19adb205ef1a221757e2288d (patch) | |
| tree | 22427b2b9035cc9eb90626096e42a6704eba1930 /main.go | |
| parent | 3482c9c541210dbf0e7bdd5dbf2c6372d5d55162 (diff) | |
Added window messages and custom message loops.
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 23 |
1 files changed, 22 insertions, 1 deletions
@@ -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, |
