2010-04-11 13 views
5

SDL.net video yüzeyini ekran çevresinde programatik olarak nasıl hareket ettireceğini biliyor mu?SDL video yüzeyinin hareket ettirilmesi

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); 

Ben Surface veya iş yapmak Video herhangi özelliklerini bulamıyorum ve FromHandle Boş dönüyor.

Pencere, ekranın altından düşerek başlatılıyor. alt text http://i42.tinypic.com/2mespe0.png

Herhangi bir fikir?

Güncelleme: Bu kodu gördüğüm ama bir equivilent C# implimentation dışarı çalışamaz

. Biri yardım edebilir mi?

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

Başarısız olan şey, C# projemde C++ dahil edilmesine ne kadar işin dahil edildiğini?

Teşekkürler.

+0

kendilerine notlar: Eve geldiğinizde ipuçlarına bakın ... http://fixunix.com/xwindows/91816-coords-window-under-sdl.html, http://www.gamedev.net/ topluluk/forumlar/topic.asp? topic_id = 328286 – gingerbreadboy

cevap

4

Bu bildirimleri gerekir:

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); 

Kullanımı: x ve y ekran koordinatlarında olan

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

. Gerekiyorsa Control.PointToScreen() kullanın.

3

Bulunduğunuz C++ kodu ile yargılayarak, Win32 SetWindowPos işlevini P/Invoke edebilir ve Video.WindowHandle tanıtıcısını (boyut ve konum parametrelerinizin yanı sıra) geçirebilirsiniz. .AĞ.

İlgili konular