Вот соответствующая часть моего кода:
Код: Выделить всё
[DllImport("user32.dll", SetLastError = true)]
private static extern bool IsWindow(IntPtr hWnd);
public static void MakeWindowClickThrough(IntPtr hWnd)
{
int exStyle = GetWindowLong(hWnd, GWL_EXSTYLE);
SetWindowLong(hWnd, GWL_EXSTYLE, exStyle | WS_EX_LAYERED | WS_EX_TRANSPARENT);
}
protected override void OnRenderFrame(FrameEventArgs e)
{
base.OnRenderFrame(e);
if (!_clickThroughSet)
{
IntPtr hWnd = (nint)WindowPtr;
if (IsWindow(hWnd))
{
MakeWindowClickThrough(hWnd);
_clickThroughSet = true;
Console.WriteLine("Click-through style set.");
}
else
{
Console.WriteLine("Waiting for a valid window handle...");
}
}
// ... rest of the rendering code
}
Мои вопросы:
- Почему IsWindow не распознает WindowPtr из OpenTK как действительный дескриптор окна?
- Есть ли другой способ получить действительный дескриптор, который распознает IsWindow, или я неправильно использую WindowPtr?
- Кто-нибудь сталкивался с этой проблемой при работе с OpenTK и существует ли альтернативный подход для настройки перехода по клику в окне OpenTK?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ptr-as-a-v
Мобильная версия