перемещение поверхности видео SDL

Кто-либо знает, как переместить мою поверхность видео SDL.net вокруг экрана programtically?

Surface videoContext = Video.SetVideoMode(1024, 768, 32, false, false, false, true, true);

var a = System.Windows.Forms.Control.FromHandle(Video.WindowHandle);
var b = System.Windows.Forms.NativeWindow.FromHandle(Video.WindowHandle);

Я не могу найти свойства в Surface или Video которые делают задание, и FromHandle возвращает Пустой указатель.

Окно инициализирует уменьшение с нижней части экрана. alt text

Какие-либо идеи?

Обновление:

Я видел этот код, но не могу разработать equivilent C# реализацию. Кто-либо может помочь?

#ifdef WIN32
#include 
SDL_SysWMinfo i;
SDL_VERSION( &i.version );
if ( SDL_GetWMInfo ( &i) ) {
  HWND hwnd = i.window;
  SetWindowPos( hwnd, HWND_TOP, x, y, width, height, flags );
}

Сбой этого, сколько работы вовлечено во включение некоторого C++ в моем c# проекте?

Спасибо.

5
задан Glorfindel 22 July 2019 в 17:06
поделиться

2 ответа

Вам понадобятся следующие объявления:

    private static IntPtr HWND_TOP = IntPtr.Zero;
    private static int SWP_FLAGS = 0x004 | 0x0010;
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern bool SetWindowPos(IntPtr hWnd, IntPtr after, int x, int y, int width, int height, int flags);

Использование:

    SetWindowPos(Video.WindowHandle, HWND_TOP, x, y, width, height, SWP_FLAGS);

где x и y указаны в координатах экрана. При необходимости используйте Control.PointToScreen ().

4
ответ дан 14 December 2019 в 08:46
поделиться

Судя по найденному вами коду C ++, вы можете P / вызвать функцию Win32 SetWindowPos и передать Video .WindowHandle дескриптор (а также ваши параметры размера и положения), поскольку, похоже, не существует решения, предоставляемого .NET.

3
ответ дан 14 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: