그래서 저는 윈도우 비헤이비어가 Photoshop CS와 비슷한 방식으로 동작하는 응용 프로그램을 가지고 있습니다. Photoshop CS에서 문서 창은 항상 도구 창 뒤에 있지만 최상위 창입니다. 문서 창은 실제로 자식이므로 MDI 자식 창에 대해서는 주 창 외부로 이동할 수 없습니다. 그러나 CS에서는 Visual Studio와 같은 도킹 된 응용 프로그램과 일반 MDI 응용 프로그램에 비해 이미지를 다른 모니터로 잘 옮길 수 있습니다.윈도우를 Photoshop CS와 같이 Z- 순서로 관리
어쨌든, 여기 내 연구가 있습니다. 나는 WM_MOUSEACTIVATE 메시지를 가로 채고 DeferWindowPos 명령을 사용하여 내 자신의 윈도우를 주문한 다음 MA_NOACTIVATEANDEAT를 반환하지만 윈도우가 제대로 활성화되지 못하게하고 "활성화시키는 다른 명령이 있다고 생각합니다. "WM_MOUSEACTIVATE (예 : SetFocus()) 호출하지 않고 창, 그래서 아마도 어쨌든 작동하지 않습니다.
나는 "활성화"에 대한 윈도우 프로 시저가 창 (WM_POSCHANGING, WM_POSCHANGED를 보내는 WM_NCACTIVATE 및 WM_ACTIVATE 메시지와 함께 2. 이동 Z 순서의 상단에 창을 활성화되지 않은 창을 통보하고 다시 칠 1 믿는다 메시지) 3. WM_NCACTIVATE 및 WM_ACTIVATE 메시지를 사용하여 새로 활성화 된 창에 알립니다.첫 번째 WM_ACTIVATE 메시지를 가로채는 것이 가장 깨끗한 방법 인 것처럼 보이며 어떻게 든 Windows에 알리고 Z- 순서 지정 방식을 재정의 한 다음 DeferWindowPos 명령을 사용하지만 그렇게하는 법을 알 수 없습니다. 일단 Windows에서 WM_ACTIVATE 메시지를 보내면 이미 순서를 바꾸어 처리 할 것으로 보이므로 사용하는 모든 DeferWindowPos 명령이 재정의됩니다.
지금 당장은 앱 실행시 도구 창을 최상으로 만드는 기본적인 구현 방식을 사용하고 있지만 그렇지 않을 때는 최상위가되지 못하지만 매우 기발합니다 (때로는 맨 위에 표시됨). 작업 관리자와 같은 다른 창, Photoshop CS는 그렇게하지 않으므로 Photoshop이 어떻게 든 다르게 처리한다고 생각합니다.) 더 직관적 인 방법으로 작업하는 것처럼 보입니다.
어쨌든 Photoshop CS가 어떻게 작동하는지 또는 최상위를 사용하는 것보다 더 나은 방법을 알고 있습니까?
짧은 쪽지에서, 이것은 아마도 Poor-Man's-Photoshop 일명 김프 (내가 항상 사용하는 슬래 밍이 아닌)가 같은 종류의 창 작업을하지 않는 이유 일 수 있습니다. 실제로 김프를 사용하는 동안 내 주요 인물 중 하나입니다. Photoshop의 Mac 버전과 동일합니다. –