diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-10 04:59:39 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-10 04:59:39 -0500 |
| commit | 6662e09c3064e6c24fb0bc12eca9b7ea716cb328 (patch) | |
| tree | 9a282e555355d88e6f0f40b90e3f4f7687480393 /main.go | |
| parent | ef5739229eaae5f5f8c2346d1d6a789f2b79855d (diff) | |
Added a button to the test main window, including click handling.
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 27 |
1 files changed, 25 insertions, 2 deletions
@@ -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) |
