Derived Control: Implement CreateHandle

155
28 апреля 2018, 15:42

Как правильно реализовать производный от System.Windows.Forms.Control класс, в котором используется собственный механизм создания дескриптора окна?

Cкажем, есть сторонняя библиотека, создающая окно Windows и возвращающая его дескриптор.

А затем привязать полученный дескриптор окна Windows к контролу (т. е. сохранить его NativeWindow/Handle)?

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() {
      // Здесь нужно обязательно вызвать base.CreateHandle()
      // для изменения private field state,
      // но он сам создает handle?
      var handle = CreateWindow();
      // Почему-то происходит повторный вход в CreateHandle
      // в момент вызова CreateWindow,
      // вероятно из Control/NativeWindow WndProc.
      // Как теперь ассоциировать полученный handle с MyControl,
      // т. е. что-то вроде:
      (WindowTarget as NativeWindow)?.AssignHandle(handle);
    }
  }
}
READ ALSO
Получение данных из Mysql C#

Получение данных из Mysql C#

Необходимо получить balance по userid

124
c# system.IO.Directory.GetDirectories нужен метод для сортировке по Дате

c# system.IO.Directory.GetDirectories нужен метод для сортировке по Дате

я начинающий в c#Написана довольно большая консольная программа в ней множество раз получается массив методом system

123