我正在对 native 窗口进行子类化(组合框的编辑控件...)
oldWndProc = SetWindowLong(HandleOfCbEditControl, GWL_WNDPROC, newWndProc);
在我的子类化 wndproc 中,我将有这样的代码,对吧,但我无法弄清楚调用 oldWndProc 的语法。
int MyWndProc(int Msg, int wParam, int lParam)
{
if (Msg.m == something I'm interested in...)
{
return something special
}
else
{
return result of call to oldWndProc <<<< What does this look like?***
}
}
编辑:这个问题中的“子类化”一词是指 WIN32 API 的含义,而不是 C#。这里的子类化并不意味着覆盖 .NET 基类的行为。这意味着告诉 WIN32 调用你的函数指针而不是 Windows 当前的回调。它与 C# 中的继承无关。
最佳答案
您将调用CallWindowProc通过 P/调用。只需将参数定义为 int 变量(因为看起来这就是您在 SetWindowLong 调用中定义它们的方式),因此如下所示:
[DllImport("CallWindowProc"...] 公共(public)静态 extern int CallWindowProc(int previousProc, int nativeControlHandle, int msg, int lParam, int wParam);
请记住,对于编码(marshal)处理,int、uint 和 IntPtr 都是相同的。
关于c# - 在 C# 中,我有一个指向 WIN32 WndProc 的 IntPtr。调用它的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/200924/