Пусть у нас есть сторонняя DLL, которая создает собственное окно и возвращает его дескриптор.
Я хочу использовать эту функцию в приложении C # WinForms через класс MyControl, основанный на System.Windows.Forms.Control.
Как правильно перезаписать виртуальный защищенный метод Control.CreateHandle в классе, производном от Control?
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WinFormsApp {
public class MyControl : Control {
[DllImport("MyLib.dll")]
static extern IntPtr CreateWindow();
protected override void CreateHandle() {
// Did to need do invoke a base.CreateHandle()?
// However, it creates Control.Handle it self.
var handle = CreateWindow();
// How to associate returned handle with MyControl instance?
(WindowTarget as NativeWindow)?.AssignHandle(handle);
}
}
}