2011-02-09 4 views
2

Carbon에서는 HideWindow (WindowRef) 및 ShowWindow (WindowRef)를 사용하여 창 표시를 변경할 수 있습니다.코코아에서 ShowWindow/HideWindow

코코아에서 NSWindow의 orderOut : hide 및 orderFront :, orderBack : 또는 orderWindow : relativeTo :를 화면에 다시 표시하려면 해당 NSWindow의 orderOut : 전화를 걸 수 있지만 그 중 아무 것도 다른 창과 관련된 순서 마지막으로 보았습니다.

예를 들어, 하나의 창 위에 다른 창을 하나 더 배치 한 다음 다시 창에서 orderOut :을 ​​호출하는 경우 orderWindow : relativeTo를 호출하지 않고 창을 다시 앞면 창 뒤에 표시하는 방법은 입니다. :.

지금 당장 생각해 볼 수있는 유일한 일은 바로 위에있는 창 ID를 기억하고 orderWindow : relativeTo :를 사용하는 것입니다. 다시 표시 할 때 위의 창에서 어떻게되는지 생각하지 않았습니다. 후방 창을 다시 볼 수있게하기 전에 닫힙니다.

+2

Carbon 생각과 Cocoa가 윈도우 가시성을 어떻게 생각하는지에 대한 차이 때문에 이것이 가능하지 않다고 생각합니다. Carbon에는 응용 프로그램 창 사이의 순서와는 별도로 창에 눈에 보이는 Boolean 플래그가있었습니다. 코코아에서는 (적어도 API에서는) 순서 만 있습니다. 보이지 않는 창이 순서대로 정렬되지 않은 반면 (보이는 순서대로) 보이는 창은 순서대로 정렬됩니다. 따라서 Cocoa에서 창을 숨기면 (주문) 순서대로 정보가 삭제됩니다. 그래, 네가 그 정보를 스스로 보존해야한다고 생각해. –

+0

@Peter, 귀하의 의견은 내가 지금까지 발견 한 것과 거의 일치합니다. 나는이 문제가있는 프로젝트에서 더 이상 일하지 않기 때문에 다른 사람들이이 질문을 통해 도움이되기를 바랍니다. –

답변

1

나는 코코아에서 사용할 수있는 방법이 없다고 생각합니다. 나는 당신이 당신의 아이디어를 사용하여 그것을 모방 할 필요가 있다고 생각합니다. 그런데

은, 당신이 그런

A B C D E 

X 지금 사용자가이를 재정렬 숨길

A B X C D E 

으로 주문 네 개의 창에서 시작하는 경우 탄소 행동, 그리고 일부 제거합니다

E A C 

다음으로 X을 다시 표시하십시오. 이 경우 X은 어디로 카본을 넣었습니까?

+0

설명서는 "'ShowWindow'가 윈도우의 앞에서 뒤로 순서를 변경하지 않는다고 말합니다. 사용자가 A와 C를 앞으로 가져 가면 (E가 이제 가장 뒤쪽의 보이는 창을 남겨둔 채로) 그 순서를 얻었다고 가정 할 때, E 뒤에있는 X가 맨 뒤에있는 창이어야합니다. –