2013-07-17 10 views
4

나는 win7 배터리 측정기와 비슷한 플라이 아웃 창을 만들었습니다. NotifyAreaOverflowWindow에있는 알림 아이콘을 통해 표시되는 경우를 제외하고는 하나만 내장 된 것처럼 작동합니다. 잠시 후 창이 자동 숨김 상태가되는 과도한 영역을 알리는 동시에 내 플라이 아웃이 닫힐 때만 숨겨야합니다. 유일한 차이점은 spyxx으로 볼 수 있는데, 오버플로 시간이 지나면 단순히 WM_SHOWWINDOW wp:0 lp:0 메시지가 전송됩니다.NotifyIconOverflowWindow 자동 숨기기

플라이 아웃이 활성화되어있을 때 오버 플로우 창이 자동 숨기기를 방지하려면 어떻게해야합니까?

screenshot

  • 이미지 1 : 테스트 플라이 아웃 사용자 비 활동의 오버 플로우 영역 + 몇 초에있는 아이콘을 통지에 클릭 한 후 표시.
  • 이미지 2 : 오버 플로우 영역에있는 알림 아이콘을 클릭하여 표시되는 배터리 측정기 플라이 아웃 + 사용자가 2 분 동안 사용하지 않음.
+2

아래쪽 유권자는 의견을 제시하지 않았지만 질문에 더 많은 노력을 기울여야한다고 생각합니다. 팁 : 줄 바꿈을 사용하여 피해야 할 부분, 일부 코드 등의 스크린 샷을 추가하십시오. – ixe013

+0

사진을 올리거나 텍스트를 더 잘 편집 할 수 없습니다 (tryed). 코드에 관해서는 Windows SDK 7.1의 NotificationIcon이라는 셸 샘플로 faund 할 수 있습니다. – user629926

+0

[해당 샘플은 C++입니다.] (http://archive.msdn.microsoft.com/shellintegration). C#으로 다시 작성했거나 질문에 잘못 태그가 있습니까? + 샘플이 비활성 상태 일 때 그 샘플은 숨 깁니다. 아무 데나 클릭하거나 잠시 후 창을 숨 깁니 까? – ixe013

답변

1

당신은

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPSTART, Handle, OBJID_CLIENT, 0); 

를 호출해야합니다 이후

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPEND, Handle, OBJID_CLIENT, 0); 

전화 :

다음 튜토리얼은 너무 완벽하게 배치하는 방법에 대한 훌륭한 길이에 간다 당신은 그것을 숨 깁니다.

0

플라이 아웃은 다른 창과 다를 수 있습니다.

시간이 지남에 창문이 사라지는 문제를 이해한다면 해결 방법은 간단합니다. NotifyAreaOverflowWindow은 사용하지 마십시오. 대신 적절한 속성 (컨트롤 상자 없음, 최대/최소 버튼 없음, 제목 텍스트 없음 등)을 사용하여 사용자 고유의 창을 만드십시오. 사용중인 클래스/객체의 지속 시간을 설정하는 것이 가능하지 않기 때문일 수 있습니다. 그것은 단일 통지를 위해 설계되었을 가능성이 있으며, 다소 유용하지는 않습니다.).

플러스에서는 더 이상 문제없이 실행하면 원하는대로 멋지게 할 수 있습니다. 당신이 당신의 창을 보여 전에 http://blog.quppa.net/2010/12/09/windows-7-style-notification-area-applications-in-wpf-part-3-taskbar-position/

+0

답변 해 주셔서 감사합니다. NotifyAreaOverflowWindow는이 문서의 알림 영역 오버플로 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa511448.aspx)에서 언급 한 해당 창 (두 번째 그림에서 2 번 근처에 표시)입니다. 나는 그것을 직접적으로 사용하지 않는다. 나는 단지 내 자신의 플라이 아웃이있는 동안 눈에 띄지 않고 그대로 둔다. – user629926

+0

내 대답은 변하지 않습니다. 나는 당신이 당신 자신의 창을 만들어서 적절한 통제력을 가질 것을 제안합니다. 제가 제공 한 링크를보십시오. –