本文整理汇总了Golang中github.com/lxn/win.DefWindowProc函数的典型用法代码示例。如果您正苦于以下问题:Golang DefWindowProc函数的具体用法?Golang DefWindowProc怎么用?Golang DefWindowProc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DefWindowProc函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: defaultWndProc
func defaultWndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) (result uintptr) {
defer func() {
if len(appSingleton.panickingPublisher.event.handlers) > 0 {
var err error
if x := recover(); x != nil {
if e, ok := x.(error); ok {
err = wrapErrorNoPanic(e)
} else {
err = newErrorNoPanic(fmt.Sprint(x))
}
}
if err != nil {
appSingleton.panickingPublisher.Publish(err)
}
}
}()
if msg == notifyIconMessageId {
return notifyIconWndProc(hwnd, msg, wParam, lParam)
}
wi := windowFromHandle(hwnd)
if wi == nil {
return win.DefWindowProc(hwnd, msg, wParam, lParam)
}
result = wi.WndProc(hwnd, msg, wParam, lParam)
return
}
开发者ID:henrylee2cn,项目名称:walk,代码行数:30,代码来源:window.go
示例2: clipboardWndProc
func clipboardWndProc(hwnd win.HWND, msg uint32, wp, lp uintptr) uintptr {
switch msg {
case win.WM_CLIPBOARDUPDATE:
clipboard.contentsChangedPublisher.Publish()
return 0
}
return win.DefWindowProc(hwnd, msg, wp, lp)
}
开发者ID:JSchwehn,项目名称:walk,代码行数:9,代码来源:clipboard.go
示例3: WndProc
func WndProc(hWnd win.HWND, message uint32, wParam uintptr, lParam uintptr) uintptr {
ret, handled := gohl.ProcNoDefault(hWnd, message, wParam, lParam)
if handled {
return uintptr(ret)
}
switch message {
case win.WM_CREATE:
println("win.WM_CREATE called", win.WM_CREATE)
}
return win.DefWindowProc(hWnd, message, wParam, lParam)
}
开发者ID:Archs,项目名称:go-htmlayout,代码行数:11,代码来源:main4.go
示例4: notifyIconWndProc
func notifyIconWndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) (result uintptr) {
// Retrieve our *NotifyIcon from the message window.
ptr := win.GetWindowLongPtr(hwnd, win.GWLP_USERDATA)
ni := (*NotifyIcon)(unsafe.Pointer(ptr))
switch lParam {
case win.WM_LBUTTONDOWN:
ni.publishMouseEvent(&ni.mouseDownPublisher, LeftButton)
case win.WM_LBUTTONUP:
ni.publishMouseEvent(&ni.mouseUpPublisher, LeftButton)
case win.WM_RBUTTONDOWN:
ni.publishMouseEvent(&ni.mouseDownPublisher, RightButton)
case win.WM_RBUTTONUP:
ni.publishMouseEvent(&ni.mouseUpPublisher, RightButton)
win.SendMessage(hwnd, msg, wParam, win.WM_CONTEXTMENU)
case win.WM_CONTEXTMENU:
if ni.contextMenu.Actions().Len() == 0 {
break
}
win.SetForegroundWindow(hwnd)
var p win.POINT
if !win.GetCursorPos(&p) {
lastError("GetCursorPos")
}
actionId := uint16(win.TrackPopupMenuEx(
ni.contextMenu.hMenu,
win.TPM_NOANIMATION|win.TPM_RETURNCMD,
p.X,
p.Y,
hwnd,
nil))
if actionId != 0 {
if action, ok := actionsById[actionId]; ok {
action.raiseTriggered()
}
}
return 0
case NIN_BALLOONUSERCLICK:
ni.balloonClickedPublisher.Publish()
}
return win.DefWindowProc(hwnd, msg, wParam, lParam)
}
开发者ID:joy999,项目名称:walk,代码行数:52,代码来源:notifyicon.go
示例5: WndProc
//.........这里部分代码省略.........
canvas, err := newCanvasFromHDC(win.HDC(wParam))
if err != nil {
break
}
defer canvas.Dispose()
if err := canvas.FillRectangle(wb.background, wb.ClientBounds()); err != nil {
break
}
return 1
case win.WM_LBUTTONDOWN, win.WM_MBUTTONDOWN, win.WM_RBUTTONDOWN:
if msg == win.WM_LBUTTONDOWN && wb.origWndProcPtr == 0 {
// Only call SetCapture if this is no subclassed control.
// (Otherwise e.g. WM_COMMAND(BN_CLICKED) would no longer
// be generated for PushButton.)
win.SetCapture(wb.hWnd)
}
wb.publishMouseEvent(&wb.mouseDownPublisher, wParam, lParam)
case win.WM_LBUTTONUP, win.WM_MBUTTONUP, win.WM_RBUTTONUP:
if msg == win.WM_LBUTTONUP && wb.origWndProcPtr == 0 {
// See WM_LBUTTONDOWN for why we require origWndProcPtr == 0 here.
if !win.ReleaseCapture() {
lastError("ReleaseCapture")
}
}
wb.publishMouseEvent(&wb.mouseUpPublisher, wParam, lParam)
case win.WM_MOUSEMOVE:
wb.publishMouseEvent(&wb.mouseMovePublisher, wParam, lParam)
case win.WM_SETCURSOR:
if wb.cursor != nil {
win.SetCursor(wb.cursor.handle())
return 0
}
case win.WM_CONTEXTMENU:
sourceWindow := windowFromHandle(win.HWND(wParam))
if sourceWindow == nil {
break
}
x := win.GET_X_LPARAM(lParam)
y := win.GET_Y_LPARAM(lParam)
contextMenu := sourceWindow.ContextMenu()
var handle win.HWND
if widget, ok := sourceWindow.(Widget); ok {
handle = ancestor(widget).Handle()
} else {
handle = sourceWindow.Handle()
}
if contextMenu != nil {
win.TrackPopupMenuEx(
contextMenu.hMenu,
win.TPM_NOANIMATION,
x,
y,
handle,
nil)
return 0
}
case win.WM_KEYDOWN:
wb.handleKeyDown(wParam, lParam)
case win.WM_KEYUP:
wb.handleKeyUp(wParam, lParam)
case win.WM_SIZE, win.WM_SIZING:
wb.sizeChangedPublisher.Publish()
case win.WM_DESTROY:
switch w := wb.window.(type) {
case *ToolTip:
case Widget:
globalToolTip.RemoveTool(w)
}
delete(hwnd2WindowBase, hwnd)
wb.hWnd = 0
wb.window.Dispose()
}
if window := windowFromHandle(hwnd); window != nil {
origWndProcPtr := window.AsWindowBase().origWndProcPtr
if origWndProcPtr != 0 {
return win.CallWindowProc(origWndProcPtr, hwnd, msg, wParam, lParam)
}
}
return win.DefWindowProc(hwnd, msg, wParam, lParam)
}
开发者ID:henrylee2cn,项目名称:walk,代码行数:101,代码来源:window.go
示例6: WndProc
//.........这里部分代码省略.........
return window.WndProc(hwnd, msg, wParam, lParam)
}
case win.WM_LBUTTONDOWN, win.WM_MBUTTONDOWN, win.WM_RBUTTONDOWN:
if msg == win.WM_LBUTTONDOWN && wb.origWndProcPtr == 0 {
// Only call SetCapture if this is no subclassed control.
// (Otherwise e.g. WM_COMMAND(BN_CLICKED) would no longer
// be generated for PushButton.)
win.SetCapture(wb.hWnd)
}
wb.publishMouseEvent(&wb.mouseDownPublisher, wParam, lParam)
case win.WM_LBUTTONUP, win.WM_MBUTTONUP, win.WM_RBUTTONUP:
if msg == win.WM_LBUTTONUP && wb.origWndProcPtr == 0 {
// See WM_LBUTTONDOWN for why we require origWndProcPtr == 0 here.
if !win.ReleaseCapture() {
lastError("ReleaseCapture")
}
}
wb.publishMouseEvent(&wb.mouseUpPublisher, wParam, lParam)
case win.WM_MOUSEMOVE:
wb.publishMouseEvent(&wb.mouseMovePublisher, wParam, lParam)
case win.WM_MOUSEWHEEL:
wb.publishMouseWheelEvent(&wb.mouseWheelPublisher, wParam, lParam)
case win.WM_SETFOCUS, win.WM_KILLFOCUS:
wb.focusedChangedPublisher.Publish()
case win.WM_SETCURSOR:
if wb.cursor != nil {
win.SetCursor(wb.cursor.handle())
return 0
}
case win.WM_CONTEXTMENU:
sourceWindow := windowFromHandle(win.HWND(wParam))
if sourceWindow == nil {
break
}
x := win.GET_X_LPARAM(lParam)
y := win.GET_Y_LPARAM(lParam)
contextMenu := sourceWindow.ContextMenu()
var handle win.HWND
if widget, ok := sourceWindow.(Widget); ok {
handle = ancestor(widget).Handle()
} else {
handle = sourceWindow.Handle()
}
if contextMenu != nil {
win.TrackPopupMenuEx(
contextMenu.hMenu,
win.TPM_NOANIMATION,
x,
y,
handle,
nil)
return 0
}
case win.WM_KEYDOWN:
wb.handleKeyDown(wParam, lParam)
case win.WM_KEYUP:
wb.handleKeyUp(wParam, lParam)
case win.WM_DROPFILES:
wb.dropFilesPublisher.Publish(win.HDROP(wParam))
case win.WM_SIZE, win.WM_SIZING:
wb.sizeChangedPublisher.Publish()
case win.WM_DESTROY:
if wb.origWndProcPtr != 0 {
// As we subclass all windows of system classes, we prevented the
// clean-up code in the WM_NCDESTROY handlers of some windows from
// being called. To fix this, we restore the original window
// procedure here.
win.SetWindowLongPtr(wb.hWnd, win.GWLP_WNDPROC, wb.origWndProcPtr)
}
delete(hwnd2WindowBase, hwnd)
wb.window.Dispose()
wb.hWnd = 0
}
if window != nil {
if wndProc := window.AsWindowBase().origWndProcPtr; wndProc != 0 {
return win.CallWindowProc(wndProc, hwnd, msg, wParam, lParam)
}
}
return win.DefWindowProc(hwnd, msg, wParam, lParam)
}
开发者ID:CodyGuo,项目名称:walk,代码行数:101,代码来源:window.go
注:本文中的github.com/lxn/win.DefWindowProc函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论