Кто-либо знает, как переместить мою поверхность видео 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
возвращает Пустой указатель.
Окно инициализирует уменьшение с нижней части экрана.
Какие-либо идеи?
Обновление:
Я видел этот код, но не могу разработать 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# проекте?
Спасибо.
Вам понадобятся следующие объявления:
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 ().
Судя по найденному вами коду C ++, вы можете P / вызвать функцию Win32 SetWindowPos
и передать Video .WindowHandle
дескриптор (а также ваши параметры размера и положения), поскольку, похоже, не существует решения, предоставляемого .NET.