本文整理汇总了Golang中github.com/lxn/win.HIWORD函数的典型用法代码示例。如果您正苦于以下问题:Golang HIWORD函数的具体用法?Golang HIWORD怎么用?Golang HIWORD使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了HIWORD函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: WndProc
func (cb *ComboBox) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
code := win.HIWORD(uint32(wParam))
selIndex := cb.CurrentIndex()
switch code {
case win.CBN_SELCHANGE:
cb.selChangeIndex = selIndex
case win.CBN_SELENDCANCEL:
if cb.selChangeIndex != -1 {
cb.SetCurrentIndex(cb.selChangeIndex)
cb.selChangeIndex = -1
}
case win.CBN_SELENDOK:
if selIndex != cb.prevCurIndex {
cb.currentIndexChangedPublisher.Publish()
cb.prevCurIndex = selIndex
return 0
}
cb.selChangeIndex = -1
}
}
return cb.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例2: WndProc
func (sv *ScrollView) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
if sv.composite != nil {
switch msg {
case win.WM_HSCROLL:
sv.composite.SetX(sv.scroll(win.SB_HORZ, win.LOWORD(uint32(wParam))))
case win.WM_VSCROLL:
sv.composite.SetY(sv.scroll(win.SB_VERT, win.LOWORD(uint32(wParam))))
case win.WM_MOUSEWHEEL:
var cmd uint16
if delta := int16(win.HIWORD(uint32(wParam))); delta < 0 {
cmd = win.SB_LINEDOWN
} else {
cmd = win.SB_LINEUP
}
sv.composite.SetY(sv.scroll(win.SB_VERT, cmd))
return 0
case win.WM_COMMAND, win.WM_NOTIFY:
sv.composite.WndProc(hwnd, msg, wParam, lParam)
case win.WM_SIZE, win.WM_SIZING:
s := maxSize(sv.composite.layout.MinSize(), sv.ClientBounds().Size())
sv.composite.SetSize(s)
sv.updateScrollBars()
}
}
return sv.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例3: WndProc
func (lb *ListBox) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
switch win.HIWORD(uint32(wParam)) {
case win.LBN_SELCHANGE:
lb.prevCurIndex = lb.CurrentIndex()
lb.currentIndexChangedPublisher.Publish()
case win.LBN_DBLCLK:
lb.itemActivatedPublisher.Publish()
}
case win.WM_GETDLGCODE:
if form := ancestor(lb); form != nil {
if dlg, ok := form.(dialogish); ok {
if dlg.DefaultButton() != nil {
// If the ListBox lives in a Dialog that has a DefaultButton,
// we won't swallow the return key.
break
}
}
}
if wParam == win.VK_RETURN {
return win.DLGC_WANTALLKEYS
}
case win.WM_KEYDOWN:
if uint32(lParam)>>30 == 0 && Key(wParam) == KeyReturn && lb.CurrentIndex() > -1 {
lb.itemActivatedPublisher.Publish()
}
}
return lb.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例4: WndProc
func (cb *CheckBox) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
switch win.HIWORD(uint32(wParam)) {
case win.BN_CLICKED:
cb.checkedChangedPublisher.Publish()
}
}
return cb.Button.WndProc(hwnd, msg, wParam, lParam)
}
示例5: WndProc
func (cb *ComboBox) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
code := win.HIWORD(uint32(wParam))
selIndex := cb.CurrentIndex()
switch code {
case win.CBN_EDITCHANGE:
cb.selChangeIndex = -1
cb.textChangedPublisher.Publish()
case win.CBN_SELCHANGE:
cb.selChangeIndex = selIndex
case win.CBN_SELENDCANCEL:
if cb.selChangeIndex != -1 {
if cb.selChangeIndex < cb.model.ItemCount() {
cb.SetCurrentIndex(cb.selChangeIndex)
}
cb.selChangeIndex = -1
}
case win.CBN_SELENDOK:
if editable := cb.Editable(); editable || selIndex != cb.prevCurIndex {
if editable && selIndex > -1 {
cb.Property("Value").Set(cb.model.Value(selIndex))
}
cb.currentIndexChangedPublisher.Publish()
cb.prevCurIndex = selIndex
return 0
}
cb.selChangeIndex = -1
}
case win.WM_MOUSEWHEEL:
if !cb.Enabled() {
return 0
}
case win.WM_SIZE:
if cb.Editable() {
result := cb.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
cb.SetTextSelection(0, 0)
return result
}
}
return cb.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例6: WndProc
func (b *Button) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
switch win.HIWORD(uint32(wParam)) {
case win.BN_CLICKED:
b.raiseClicked()
}
case win.WM_SETTEXT:
b.textChangedPublisher.Publish()
}
return b.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例7: SizeHint
func (tb *ToolBar) SizeHint() Size {
if tb.actions.Len() == 0 {
return Size{}
}
size := uint32(tb.SendMessage(win.TB_GETBUTTONSIZE, 0, 0))
width := tb.defaultButtonWidth
if width == 0 {
width = int(win.LOWORD(size))
}
height := int(win.HIWORD(size))
return Size{width, height}
}
示例8: WndProc
func (tb *ToolBar) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
switch win.HIWORD(uint32(wParam)) {
case win.BN_CLICKED:
actionId := uint16(win.LOWORD(uint32(wParam)))
if action, ok := actionsById[actionId]; ok {
action.raiseTriggered()
return 0
}
}
case win.WM_NOTIFY:
nmhdr := (*win.NMHDR)(unsafe.Pointer(lParam))
switch int32(nmhdr.Code) {
case win.TBN_DROPDOWN:
nmtb := (*win.NMTOOLBAR)(unsafe.Pointer(lParam))
actionId := uint16(nmtb.IItem)
if action := actionsById[actionId]; action != nil {
var r win.RECT
if 0 == tb.SendMessage(win.TB_GETRECT, uintptr(actionId), uintptr(unsafe.Pointer(&r))) {
break
}
p := win.POINT{r.Left, r.Bottom}
if !win.ClientToScreen(tb.hWnd, &p) {
break
}
win.TrackPopupMenuEx(
action.menu.hMenu,
win.TPM_NOANIMATION,
p.X,
p.Y,
tb.hWnd,
nil)
return win.TBDDRET_DEFAULT
}
}
}
return tb.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例9: WndProc
func (le *LineEdit) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
switch win.HIWORD(uint32(wParam)) {
case win.EN_CHANGE:
le.textChangedPublisher.Publish()
}
case win.WM_GETDLGCODE:
if form := ancestor(le); form != nil {
if dlg, ok := form.(dialogish); ok {
if dlg.DefaultButton() != nil {
// If the LineEdit lives in a Dialog that has a DefaultButton,
// we won't swallow the return key.
break
}
}
}
if wParam == win.VK_RETURN {
return win.DLGC_WANTALLKEYS
}
case win.WM_KEYDOWN:
switch Key(wParam) {
case KeyA:
if ControlDown() {
le.SetTextSelection(0, -1)
}
case KeyReturn:
le.editingFinishedPublisher.Publish()
}
case win.WM_KILLFOCUS:
// FIXME: This may be dangerous, see remarks section:
// http://msdn.microsoft.com/en-us/library/ms646282(v=vs.85).aspx
le.editingFinishedPublisher.Publish()
}
return le.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例10: WndProc
func (rb *RadioButton) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
switch win.HIWORD(uint32(wParam)) {
case win.BN_CLICKED:
prevChecked := rb.group.checkedButton
rb.group.checkedButton = rb
if prevChecked != rb {
if prevChecked != nil {
prevChecked.setChecked(false)
}
rb.setChecked(true)
}
}
}
return rb.Button.WndProc(hwnd, msg, wParam, lParam)
}
示例11: applyDefaultButtonWidth
func (tb *ToolBar) applyDefaultButtonWidth() error {
if tb.defaultButtonWidth == 0 {
return nil
}
lParam := uintptr(
win.MAKELONG(uint16(tb.defaultButtonWidth), uint16(tb.defaultButtonWidth)))
if 0 == tb.SendMessage(win.TB_SETBUTTONWIDTH, 0, lParam) {
return newError("SendMessage(TB_SETBUTTONWIDTH)")
}
size := uint32(tb.SendMessage(win.TB_GETBUTTONSIZE, 0, 0))
height := win.HIWORD(size)
lParam = uintptr(win.MAKELONG(uint16(tb.defaultButtonWidth), height))
if win.FALSE == tb.SendMessage(win.TB_SETBUTTONSIZE, 0, lParam) {
return newError("SendMessage(TB_SETBUTTONSIZE)")
}
return nil
}
示例12: WndProc
func (te *TextEdit) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
switch win.HIWORD(uint32(wParam)) {
case win.EN_CHANGE:
te.textChangedPublisher.Publish()
}
case win.WM_GETDLGCODE:
if wParam == win.VK_RETURN {
return win.DLGC_WANTALLKEYS
}
return win.DLGC_HASSETSEL | win.DLGC_WANTARROWS | win.DLGC_WANTCHARS
case win.WM_KEYDOWN:
if Key(wParam) == KeyA && ControlDown() {
te.SetTextSelection(0, -1)
}
}
return te.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}
示例13: WndProc
//.........这里部分代码省略.........
lParam := uintptr(win.MAKELONG(uint16(pos.X), uint16(pos.Y)))
i := int(win.LOWORD(uint32(nle.SendMessage(win.EM_CHARFROMPOS, 0, lParam))))
if max := len(nle.textUTF16()) - len(nle.suffix); i >= max {
if !ShiftDown() {
nle.SetTextSelection(max, max)
}
return 0
}
case KeyUp:
nle.incrementValue(nle.increment)
return 0
}
case win.WM_GETDLGCODE:
if !nle.inEditMode {
if form := ancestor(nle); form != nil {
if dlg, ok := form.(dialogish); ok {
if dlg.DefaultButton() != nil {
// If the NumberEdit lives in a Dialog that has a
// DefaultButton, we won't swallow the return key.
break
}
}
}
}
if wParam == win.VK_RETURN {
return win.DLGC_WANTALLKEYS
}
case win.WM_KILLFOCUS:
nle.endEdit()
case win.WM_LBUTTONDOWN:
i := int(win.LOWORD(uint32(nle.SendMessage(win.EM_CHARFROMPOS, 0, lParam))))
if min := len(nle.prefix); i < min {
nle.SetFocus()
nle.SetTextSelection(min, min)
return 0
}
if max := len(nle.textUTF16()) - len(nle.suffix); i > max {
nle.SetFocus()
nle.SetTextSelection(max, max)
return 0
}
case win.WM_LBUTTONDBLCLK:
nle.selectNumber()
return 0
case win.WM_MOUSEMOVE:
i := int(win.LOWORD(uint32(nle.SendMessage(win.EM_CHARFROMPOS, 0, lParam))))
if min := len(nle.prefix); i < min {
return 0
}
if max := len(nle.textUTF16()) - len(nle.suffix); i > max {
return 0
}
case win.WM_MOUSEWHEEL:
delta := float64(int16(win.HIWORD(uint32(wParam))))
nle.incrementValue(delta / 120 * nle.increment)
return 0
case win.WM_PASTE:
ret := nle.LineEdit.WndProc(hwnd, msg, wParam, lParam)
if !nle.tryUpdateValue(true) {
nle.setTextFromValue(nle.value)
}
nle.selectNumber()
return ret
case win.WM_SETFOCUS:
nle.selectNumber()
case win.EM_SETSEL:
start := int(wParam)
end := int(lParam)
adjusted := false
if min := len(nle.prefix); start < min {
start = min
adjusted = true
}
if max := len(nle.textUTF16()) - len(nle.suffix); end < 0 || end > max {
end = max
adjusted = true
}
if adjusted {
nle.SetTextSelection(start, end)
return 0
}
}
return nle.LineEdit.WndProc(hwnd, msg, wParam, lParam)
}
示例14: WndProc
func (cb *ContainerBase) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr {
switch msg {
case win.WM_COMMAND:
if lParam == 0 {
switch win.HIWORD(uint32(wParam)) {
case 0:
cmdId := win.LOWORD(uint32(wParam))
switch cmdId {
case win.IDOK, win.IDCANCEL:
form := ancestor(cb)
if form == nil {
break
}
dlg, ok := form.(dialogish)
if !ok {
break
}
var button *PushButton
if cmdId == win.IDOK {
button = dlg.DefaultButton()
} else {
button = dlg.CancelButton()
}
if button != nil && button.Visible() && button.Enabled() {
button.raiseClicked()
}
break
}
// Menu
actionId := uint16(win.LOWORD(uint32(wParam)))
if action, ok := actionsById[actionId]; ok {
action.raiseTriggered()
return 0
}
case 1:
// Accelerator
}
} else {
// The window that sent the notification shall handle it itself.
hWnd := win.HWND(lParam)
if window := windowFromHandle(hWnd); window != nil {
window.WndProc(hwnd, msg, wParam, lParam)
return 0
}
}
case win.WM_NOTIFY:
nmh := (*win.NMHDR)(unsafe.Pointer(lParam))
if window := windowFromHandle(nmh.HwndFrom); window != nil {
// The window that sent the notification shall handle it itself.
return window.WndProc(hwnd, msg, wParam, lParam)
}
case win.WM_HSCROLL, win.WM_VSCROLL:
if window := windowFromHandle(win.HWND(lParam)); window != nil {
// The window that sent the notification shall handle it itself.
return window.WndProc(hwnd, msg, wParam, lParam)
}
case win.WM_SIZE, win.WM_SIZING:
if cb.layout != nil {
cb.layout.Update(false)
}
}
return cb.WidgetBase.WndProc(hwnd, msg, wParam, lParam)
}