2010-08-24 4 views
1

Я пытаюсь установить систему XNA WinForms, поэтому у меня может быть редактор игр, и мне нужно использовать мышь для этого. Поскольку класс ввода XNA Mouse сообщает о позиции мыши, основанной на местоположении окна, мне нужно разместить форму, которую я имею в том же месте. Как я могу получить местоположение окна, которое использует моя игра XNA?Xna - получить расположение окна?

ответ

4

Я закончил тем, что делал это с этим кодом:

 Form gameWindowForm = (Form)Form.FromHandle(this.Window.Handle); 
     ... 
     myForm.Location = new System.Drawing.Point(gameWindowForm.Location.X - 5,gameWindowForm.Location.Y - 5); //-5 pixels for adjustment 

, который работает только денди!

+0

А, так что дает вам ссылку на реальную форму ... Полезно знать! – bcat

+0

На самом деле я получил первую строку с http://www.codeproject.com/KB/game/XNA_And_Beyond.aspx. Очень полезно, хотя и не совсем, о том, как получить установку форм Windows для использования XNA. – RCIX

+1

-5 изменится в зависимости от того, какой стиль окна используется? Так что это не будет работать как в классическом стиле, так и в стиле Xp, а также в стиле vista/7 – McKay

1

X и Y Свойства объекта Game.Window.ClientBounds struct должно содержать абсолютные координаты окна, которые вы ищите.

+0

Это * почти *, но это дает мне положение самой верхней левой части содержимого окна, а не фактическое положение окна. См. Мой ответ, как я это сделал. – RCIX

0

Я столкнулся с этой проблемой также и с моим редактором уровней. У меня есть PictureBox в моем Windows Forms, поэтому единственным, что мне необходимо, чтобы при инициализации XNA игр:

Mouse.WindowHandle = this.windowForm.Viewport.Handle; 

где Viewport Является ли PictureBox

теперь положение X мыши отрегулирован автоматически.

Смежные вопросы