我有一个dll,它使用OpenGl在窗口上绘制。通过HWMD获取窗口。在
动态链接库:
extern "C" __declspec(dllexport) int Init(HWND hWnd);
extern "C" __declspec(dllexport) void Resize(HWND hWnd, int w, int h);
extern "C" __declspec(dllexport) void Paint(HWND hWnd);
qt++应用程序是c++正常工作的。在
^{pr2}$但是在python中如何做到这一点呢?我的程序主要是发送小工具.winId(). 在
# coding=utf-8
import ctypes
from PyQt5 import QtWidgets, QtOpenGL
app = QtWidgets.QApplication([])
e3d = ctypes.CDLL(r"engine3d.dll")
init = lambda hwnd: e3d.Init(hwnd)
paint = lambda hwnd: e3d.Paint(hwnd)
resize = lambda hwnd, w, h: e3d.Paint(hwnd, w, h)
class MyGLWidget(QtOpenGL.QGLWidget):
def __init__(self):
super().__init__()
def showEvent(self, ev):
init(self.winId())
def paintEvent(self, ev):
paint(self.winId())
def resizeEvent(self, ev):
resize(self.winId(), self.width(), self.height())
w = MyGLWidget()
w.show()
app.exec_()
打印(自身.winId())是
检查是否有动态链接库比较容易,所以我就直说。在c++代码中,您得到了以下初始化代码:
在这里创建引擎实例
^{pr2}$lib
,并使用load
方法,但在python中,您不会执行任何操作:但在创建
MyGLWidget
之前,您没有将您的引擎初始化为它的c++对应项,问题是,为什么不呢?在相关问题 更多 >
编程相关推荐