这几天想看看WinForm到底是如何包装Win32API的,所以调试跟踪了一下,如下图:
我关注的是窗口过程,因为这是一个回调函数,本机代码调用.net中的函数时,.net中是用delegate实现的,可以看到调用的是
System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.WindowClass.Callback(System.IntPtr hWnd, int msg, System.IntPtr wparam, System.IntPtr lparam) 这个方法。
于是乎我在VS的对象浏览器里查看,却怎么也找不到WindowClass这个类的信息,如下图:
在搜索栏输入WindowClass也显示未找到结果。
后用ILDASM查看,终于发现了这个嵌套类,如下:
至此终于找到相关的类和方法了,下一步就可以研究到底是如何包装Win32API的了。