summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-02-10 04:59:39 -0500
committerPietro Gagliardi <[email protected]>2014-02-10 04:59:39 -0500
commit6662e09c3064e6c24fb0bc12eca9b7ea716cb328 (patch)
tree9a282e555355d88e6f0f40b90e3f4f7687480393 /main.go
parentef5739229eaae5f5f8c2346d1d6a789f2b79855d (diff)
Added a button to the test main window, including click handling.
Diffstat (limited to 'main.go')
-rw-r--r--main.go27
1 files changed, 25 insertions, 2 deletions
diff --git a/main.go b/main.go
index fe38d47..dd82c13 100644
--- a/main.go
+++ b/main.go
@@ -19,8 +19,21 @@ 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 {
+const (
+ IDC_BUTTON = 100
+)
+
+func wndProc(hwnd HWND, msg uint32, wParam WPARAM, lParam LPARAM) LRESULT {
switch msg {
+ case WM_COMMAND:
+ if wParam.LOWORD() == IDC_BUTTON {
+ if wParam.HIWORD() == BN_CLICKED {
+ MessageBox(hwnd, "clicked", "", MB_OK)
+ } else if wParam.HIWORD() == BN_DOUBLECLICKED {
+ MessageBox(hwnd, "double clicked", "", MB_OK)
+ }
+ }
+ return 0
case WM_CLOSE:
err := DestroyWindow(hwnd)
if err != nil {
@@ -34,7 +47,7 @@ func wndProc(hwnd HWND, msg uint32, wparam WPARAM, lparam LPARAM) LRESULT {
}
return 0
default:
- return DefWindowProc(hwnd, msg, wparam, lparam)
+ return DefWindowProc(hwnd, msg, wParam, lParam)
}
fatalf("major bug: forgot a return on wndProc for message %d", msg)
panic("unreachable")
@@ -86,6 +99,16 @@ func main() {
fatalf("error creating window: %v", err)
}
+ _, err = CreateWindowEx(
+ 0,
+ "BUTTON", "Click Me",
+ BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
+ 20, 20, 100, 100,
+ hwnd, HMENU(IDC_BUTTON), hInstance, NULL)
+ if err != nil {
+ fatalf("error creating button: %v", err)
+ }
+
_, err = ShowWindow(hwnd, nCmdShow)
if err != nil {
fatalf("error showing window: %v", err)