第一步:需要了解的基本知识
NativeWindow:该类自动管理窗口类的创建和注册。当窗口与窗口句柄关联时,该窗口不适合进行垃圾收集。为了确保正确的垃圾回收,必须使用DestroyHandle手动销毁句柄,或者使用ReleaseHandle释放句柄。NativeWindow类提供以下属性和方法来管理句柄:句柄、CreateHandle、AssignHandle、DestroyHandle和ReleaseHandle。详细请见:https://docs.microsoft.com/enus/dotnet/api/system.windows.forms.nativewindow?view=netframework-4.8
CreateParams:封装创建控件时所需的信息。CreateParams中的信息可用于传递关于控件初始状态和外观的信息。大多数控件派生的控件都覆盖CreateParams属性,以传入适当的值或在CreateParams中包含附加信息。用于设置样式、ExStyle和ClassStyle属性的常量在Winuser.h头文件中定义。该文件由平台SDK或Visual Studio安装。详细请见:
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.createparams?view=netframework-4.8
user32.dll:是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。在早期32-bit 版本的Windows中,用户控件是在ComCtl32中实现的,但是一些控件的显示功能是在User32.dll中实现的。例如在一个窗口中非客户区域(边框和菜单)的绘制就是由User32.dll来完成的。User32.dll 是操作系统的一个核心控件,它和操作系统是紧密联系在一起的。也就是说,不同版本的Windows中User32.dll 是不同。因此,应用程序在不同版本的Windows中运行的时候,由于User32.dll的不同,会导致应用程序的界面通常会有微小的不同,详细请见:
https://blog.csdn.net/nodeman/article/details/82424076
gdi32.dll:系统文件gdi32.dll是存放在Windows系统文件夹中的一个动态链接库,是windows下图形用户界面的应用拓展,通常情况下是在安装操作系统过程中自动创建的,对于系统正常运行来说至关重要。除非用户电脑被木马病毒、或是流氓软件篡改导致出现gdi32.dll丢失、缺失损坏等弹窗现象,否则不建议用户对该类文件(gdi32.dll)进行随意的修改。(至于里面的函数,大家一个个到百度搜索吧)
第二步:代码实现
效果如图: