2014-12-29 4 views
0

SetParent를 사용하여 Java JFrame에 게임 창을 포함하려고합니다. Java JNA User32 라이브러리를 사용하여 다음 종류의 코드를 사용하고 있습니다.상위 창 JNA Java를 통해 SetParent를 사용하여 속도가 느려짐

SetParent(GameWin,JFrameWin); 
SetWindowPosF(GameWin,null,Game_X_pos ,Game_Y_pos+1,0,0,0x0020 | 0x0001 | 0x0008); 

위의 코드는 정상적으로 작동하고 게임 창이 성공적으로 JFrame의 일부가되고 있습니다. 그러나 JFrame의 드롭 다운 목록 및 단추와 같은 컨트롤은이 프로세스를 수행 한 후에 크게 느려졌습니다.

  • 내 JFrame에서 아무 버튼이나 드롭 다운 목록을 클릭 할 때마다 1 ~ 2 분 후에 많은 시간이 지나면 응답합니다.

  • 내 게임 창을 JFrame에 삽입하면 모든 것이 정상적으로 작동합니다.

당신이 하나 개의 프로세스에서 창은 사용자가 부착되어 다른 프로세스의 창 부모가 될 수 있도록 할 때 누군가가 ...이 경우

감사합니다, Nikunj

답변

2

를 좀 도와 주시겠습니까 해당 윈도우의 메시지 대기열.

게임 창에는 일반 GUI 응용 프로그램과는 상당히 다른 메시지 루프가있을 수 있습니다. 거의 확실하게이 게임은 적시에 창에 대기중인 메시지를 보내는 데 그다지 관심이 없습니다. 게임은 이런 식으로 공중 납치 될 것으로 예상하지 않았습니다.

이 상황을 개선하기 위해 할 수있는 일은별로 없을 것입니다. 십자가 양육은 기본적으로해서는 안되는 일입니다. 주제에 대한 자세한 내용은 여기를 참조하십시오. http://blogs.msdn.com/b/oldnewthing/archive/2013/04/12/10410454.aspx

+0

좋아, 알겠습니다. 하지만 JFrame 내 게임 윈도우를 도킹하여 내 앱의 속도를 늦추지 않는 방법이 있습니다. 예 : 가상으로 게임 창 만들기. 부모와 자식 창간에 포커스를 공유하기 위해 AttachThreadInput을 사용하려고했지만 효과가 없습니다. JFrame 내부에 Game Window를 도킹 할 수있는 방법을 제안 할 수 있다면 좋을 것입니다. – Niks

+0

다른 프로세스의 협력없이이 작업을 수행하는 좋은 방법이있을 수 있다고 생각하지 않습니다. 게임 개발자와 이야기하고 함께 작업 해 보시지 않겠습니까? –

+0

나는 게임 개발자이다. Unity3D에서 게임을 개발하고 Unity3D 빌드 실행 파일을 만들었습니다. JFrame 안에 도킹 할 수있는 실행 가능 윈도우. Java 및 Unity 응용 프로그램은 로컬 소켓 연결을 통해 통신합니다. – Niks

관련 문제