【发布时间】:2018-04-14 11:58:12
【问题描述】:
我的最终目标是使用pywebview 拥有一个可调整大小的无边框窗口。我正在使用 Windows 和 WinForms。 我可以通过这样做使其无边界:
webview.winforms.BrowserView.instance.browser.FormBorderStyle = 0
但是,我希望能够移动它并调整它的大小。要在 C# 中正常执行此操作,我可以覆盖派生 Form 类中的 WndProc 方法并调用调整大小消息。不过,我不确定如何在 Python 中执行此操作。 pywebview中的Form是defined here。
我无法将self.WndProc 设置为我自己的定义;我得到AttributeError : attribute is read-only。我尝试像这样(在表单定义中)直接挂钩:
WndProcType = ctypes.WINFUNCTYPE(c_int, c_long, c_int, c_int, c_int)
GWL_WNDPROC = -4
handle = windll.kernel32.GetModuleHandleW(None)
self.oldWndProc = self.WndProc
ctypes.windll.user32.SetWindowLongW(handle, GWL_WNDPROC, WndProcType(self.MyWndProc))
def MyWndProc(self, hWnd, msg, wParam, lParam):
print ("is it working?")
return CallWindowProc(
self.oldWndProc,
hWnd,
msg,
wParam,
lParam
)
但它似乎没有被调用。
【问题讨论】:
标签: python winforms clr wndproc