summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go23
1 files changed, 22 insertions, 1 deletions
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,