gpt4 book ai didi

c# - 在 C# 中,我有一个指向 WIN32 WndProc 的 IntPtr。调用它的语法是什么?

转载 作者:行者123 更新时间:2023-11-30 22:51:04 25 4
gpt4 key购买 nike

我正在对 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 static 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com