SharpDx RenderControl이 포함 된 WinForms 프로젝트에서 작업하기 시작했습니다. 이 같은 시작됩니다 :WinForms에서 탭 및 alt + 키를 잃었습니다
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using(var game = new VisionQuestGame())
{
var form = new FMain(game.Data);
form.Show();
game.IsMouseVisible = true;
game.Run(form.RenderControl);
}
}
}
VisionQuestGame 클래스는 SharpDx.Toolkit.Game에서 상속됩니다.
이제 Tab 키가 작동하지 않으며 alt-F4와 같은 키 조합도 작동하지 않습니다. 내가 탭 문제 때문에 같이 극복 할 수 있음을 알아 냈어요 :
public bool PreFilterMessage(ref Message m)
{
if ((m.Msg == 256 || m.Msg == 257) && m.WParam.ToInt32() == (int) Keys.Tab)
{
if (m.Msg == 256 && (ModifierKeys == Keys.None || ModifierKeys == Keys.Shift))
SelectNextControl(ActiveControl, ModifierKeys == Keys.None, true, true, true);
return true;
}
return false;
}
불행히도 ALT-F4 키 조합이 이제까지 이런 식으로 밀어하지 않습니다.
이에 대한 의견을 보내 주시면 감사하겠습니다.
메시지 루프 문제입니다. VisionQuestGame 클래스가 수행 할 수있는 작업과 Run() 메서드가 Application.Run()이 수행하는 작업과 비슷한 작업을 수행하는지 여부는 매우 명확하지 않습니다. 글쎄요, 그렇지 않을 수도 있습니다. –
감사합니다. 한스. 질문을 간략하게 업데이트했습니다. 게임 클래스에는 키보드가 자체 방식으로 노출되는 메서드가 있습니다. 나는 그걸로 살 수 있다고 생각해. 가장 문제가되었던 부분은 탭 키가 전체 형식에 맞지 않아서 고정되었지만 (그리고 미래의 spelunkers를 위해 문서화했습니다) –