summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--comboboxes.go1
-rw-r--r--edits.go94
-rw-r--r--main.go37
3 files changed, 123 insertions, 9 deletions
diff --git a/comboboxes.go b/comboboxes.go
index 77b7046..ac2a715 100644
--- a/comboboxes.go
+++ b/comboboxes.go
@@ -67,6 +67,7 @@ const (
)
// Combobox WM_COMMAND notificaitons.
+// TODO filter out notifications not provided in windows 2000
const (
// from winuser.h
CBN_ERRSPACE = (-1) // TODO this will blow up the Go compiler if it's used
diff --git a/edits.go b/edits.go
new file mode 100644
index 0000000..5aaeeac
--- /dev/null
+++ b/edits.go
@@ -0,0 +1,94 @@
+// 10 february 2014
+package main
+
+import (
+// "syscall"
+// "unsafe"
+)
+
+// Edit control styles.
+const (
+ // from winuser.h
+ ES_LEFT = 0x0000
+ ES_CENTER = 0x0001
+ ES_RIGHT = 0x0002
+ ES_MULTILINE = 0x0004
+ ES_UPPERCASE = 0x0008
+ ES_LOWERCASE = 0x0010
+ ES_PASSWORD = 0x0020
+ ES_AUTOVSCROLL = 0x0040
+ ES_AUTOHSCROLL = 0x0080
+ ES_NOHIDESEL = 0x0100
+ ES_OEMCONVERT = 0x0400
+ ES_READONLY = 0x0800
+ ES_WANTRETURN = 0x1000
+ ES_NUMBER = 0x2000
+)
+
+// Edit control messages.
+// TODO filter out messages not provided in windows 2000
+const (
+ // from winuser.h
+ EM_GETSEL = 0x00B0
+ EM_SETSEL = 0x00B1
+ EM_GETRECT = 0x00B2
+ EM_SETRECT = 0x00B3
+ EM_SETRECTNP = 0x00B4
+ EM_SCROLL = 0x00B5
+ EM_LINESCROLL = 0x00B6
+ EM_SCROLLCARET = 0x00B7
+ EM_GETMODIFY = 0x00B8
+ EM_SETMODIFY = 0x00B9
+ EM_GETLINECOUNT = 0x00BA
+ EM_LINEINDEX = 0x00BB
+ EM_SETHANDLE = 0x00BC
+ EM_GETHANDLE = 0x00BD
+ EM_GETTHUMB = 0x00BE
+ EM_LINELENGTH = 0x00C1
+ EM_REPLACESEL = 0x00C2
+ EM_GETLINE = 0x00C4
+ EM_LIMITTEXT = 0x00C5
+ EM_CANUNDO = 0x00C6
+ EM_UNDO = 0x00C7
+ EM_FMTLINES = 0x00C8
+ EM_LINEFROMCHAR = 0x00C9
+ EM_SETTABSTOPS = 0x00CB
+ EM_SETPASSWORDCHAR = 0x00CC
+ EM_EMPTYUNDOBUFFER = 0x00CD
+ EM_GETFIRSTVISIBLELINE = 0x00CE
+ EM_SETREADONLY = 0x00CF
+ EM_SETWORDBREAKPROC = 0x00D0
+ EM_GETWORDBREAKPROC = 0x00D1
+ EM_GETPASSWORDCHAR = 0x00D2
+ EM_SETMARGINS = 0x00D3
+ EM_GETMARGINS = 0x00D4
+ EM_SETLIMITTEXT = EM_LIMITTEXT // [;win40 Name change]
+ EM_GETLIMITTEXT = 0x00D5
+ EM_POSFROMCHAR = 0x00D6
+ EM_CHARFROMPOS = 0x00D7
+ EM_SETIMESTATUS = 0x00D8
+ EM_GETIMESTATUS = 0x00D9
+)
+
+// Edit control WM_COMMAND notifications.
+// TODO filter out notifications not provided in windows 2000
+const (
+ // from winuser.h
+ EN_SETFOCUS = 0x0100
+ EN_KILLFOCUS = 0x0200
+ EN_CHANGE = 0x0300
+ EN_UPDATE = 0x0400
+ EN_ERRSPACE = 0x0500
+ EN_MAXTEXT = 0x0501
+ EN_HSCROLL = 0x0601
+ EN_VSCROLL = 0x0602
+ EN_ALIGN_LTR_EC = 0x0700
+ EN_ALIGN_RTL_EC = 0x0701
+ EC_LEFTMARGIN = 0x0001
+ EC_RIGHTMARGIN = 0x0002
+ EC_USEFONTINFO = 0xFFFF
+ EMSIS_COMPOSITIONSTRING = 0x0001
+ EIMES_GETCOMPSTRATONCE = 0x0001
+ EIMES_CANCELCOMPSTRINFOCUS = 0x0002
+ EIMES_COMPLETECOMPSTRKILLFOCUS = 0x0004
+)
diff --git a/main.go b/main.go
index b551b40..a5b68af 100644
--- a/main.go
+++ b/main.go
@@ -20,12 +20,13 @@ func fatalf(format string, args ...interface{}) {
}
const (
- IDC_BUTTON = 100
- IDC_VARCOMBO = 101
- IDC_FIXCOMBO = 102
+ IDC_BUTTON = 100 + iota
+ IDC_VARCOMBO
+ IDC_FIXCOMBO
+ IDC_EDIT
)
-var varCombo, fixCombo HWND
+var varCombo, fixCombo, edit HWND
func wndProc(hwnd HWND, msg uint32, wParam WPARAM, lParam LPARAM) LRESULT {
switch msg {
@@ -54,12 +55,18 @@ func wndProc(hwnd HWND, msg uint32, wParam WPARAM, lParam LPARAM) LRESULT {
}
// TODO get text from index
+ editText, err := getText(edit)
+ if err != nil {
+ fatalf("error getting edit field text: %v", err)
+ }
+
MessageBox(hwnd,
fmt.Sprintf("button state: %s\n" +
"variable combo box text: %s\n" +
"fixed combo box text with WM_GETTEXT: %s\n" +
- "fixed combo box current index: %d\n",
- buttonclick, varText, fixTextWM, fixTextIndex),
+ "fixed combo box current index: %d\n" +
+ "edit field text: %s\n",
+ buttonclick, varText, fixTextWM, fixTextIndex, editText),
"note",
MB_OK)
}
@@ -129,10 +136,12 @@ func main() {
fatalf("error creating window: %v", err)
}
+ const controlStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP
+
_, err = CreateWindowEx(
0,
"BUTTON", "Click Me",
- BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
+ BS_PUSHBUTTON | controlStyle,
20, 20, 100, 20,
hwnd, HMENU(IDC_BUTTON), hInstance, NULL)
if err != nil {
@@ -142,7 +151,7 @@ func main() {
varCombo, err = CreateWindowEx(
0,
"COMBOBOX", "",
- CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
+ CBS_DROPDOWN | CBS_AUTOHSCROLL | controlStyle,
140, 20, 100, 20,
hwnd, HMENU(IDC_VARCOMBO), hInstance, NULL)
if err != nil {
@@ -160,7 +169,7 @@ func main() {
fixCombo, err = CreateWindowEx(
0,
"COMBOBOX", "",
- CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_TABSTOP,
+ CBS_DROPDOWNLIST | controlStyle,
140, 50, 100, 20,
hwnd, HMENU(IDC_FIXCOMBO), hInstance, NULL)
if err != nil {
@@ -175,6 +184,16 @@ func main() {
}
}
+ edit, err = CreateWindowEx(
+ 0,
+ "EDIT", "",
+ ES_AUTOHSCROLL | ES_NOHIDESEL | WS_BORDER | controlStyle,
+ 20, 50, 100, 20,
+ hwnd, HMENU(IDC_EDIT), hInstance, NULL)
+ if err != nil {
+ fatalf("error creating edit field: %v", err)
+ }
+
_, err = ShowWindow(hwnd, nCmdShow)
if err != nil {
fatalf("error showing window: %v", err)