창에 포커스가 있어도 비활성 상태로 유지하는 방법이 있습니까? 저는 두 가지 형태 (A와 B)를 가지고 있습니다. 사용자가 A와 상호 작용하면 B로 초점을 다시 전송합니다. 초점 전송의 결과 (사용자가 A를 클릭 한 다음 B로 다시 초점이 이동 됨)는 A 양식이 활성에서 비활성으로 tZ입니다. 이것은보기 흉하게 보입니다 (특히 Vista에서는 A가 잠시 더 큰 그림자를 얻습니다). 이 깜박임이 발생하지 않도록 A가 비활성 상태로 유지하도록하려면 어떻게해야합니까?활성화 된 상태에서도 모양이 창을 비활성 상태로 유지
답변
마침내 대답을 찾았습니다!
경고 : 이 답변의 기술을 남용하지 마십시오. 이렇게하면 사용자가 혼동을 느끼고 일반적으로 컴퓨팅 환경에 해를 끼칩니다. 아래에서 설명하는 기술은 특정 상황 (예 : IntelliSense와 유사한 동작)에서 매우 유용 할 수 있지만 은으로 사용하십시오.
WM_NCACTIVATE 메시지는 비 클라이언트 영역 (즉, 경계 및 제목 표시 줄)의 상태를 비활성 또는 활성으로 변경하기 위해 창으로 전송됩니다. 메시지의 wParam은 상태가 비활성 상태인지 또는 활성 상태인지를 나타냅니다. wParam이 참이면 (값 1) 창은 활성화 된 것처럼 보입니다. wParam이 false이면 (값 0) 창은 비활성 상태로 보입니다. 창을 비활성 또는 활성 상태로 유지하려면 wParam을 해당 값 (0 또는 1)으로 설정하여 무시하고 모든 설정이 완료됩니다!
private const int WM_NCACTIVATE = 0x0086;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCACTIVATE)
{
// Use this to make it always look inactive:
m.WParam = (IntPtr)0;
// Alternately, use this to make it always look active:
m.WParam = (IntPtr)1;
}
base.WndProc(ref m);
}
GUI 모델의 기본 동작을 변경하는 것에 대해 이야기하고 있습니다. 그렇게 할 것을 권하지는 않습니다. 사용자가 A에서 무언가를하고 있다면 B로 돌아가서 A가 사라지지 않아야합니까? 왜 깜박입니까? 초점이 바뀌면 단일 스위치 여야합니다.
초점이 같은 전환되어 당신이 무엇을 설명에서 알 수 없습니다 :
A-> B
B-> A-> 사용자 클릭 -> B
B->은
?
이 방법이 도움이되는지는 확실하지 않지만 Winforms는 소유 한 양식의 개념을 지원합니다. 예를 들어 부동 도구 모음이 최상위 창 외부에있는 경우에도 최상위 창이 활성 상태 일 때도 활성 상태로 유지됩니다 (반대의 경우도 마찬가지 임). 마찬가지로 양식 B를 비활성화하지 않고도 사용자가 양식 A와 상호 작용할 수 있기를 원합니다.
a
을 표시하기 직전에 b.AddOwnedForm(a)
으로 전화해야하는 것처럼 들릴 수 있습니다.
나는 당신의 제안을 시도했지만 안타깝게도 소유 된 창과 부모 창 사이를 전환하면 여전히 창의 모양이 비활성에서 활성으로 바뀝니다. –
- 1. 많은 현지화 된 콘텐츠를 동기화 상태로 유지
- 2. Postgresql : 2 시퀀스를 동기화 된 상태로 유지
- 3. WPF - 컨테이너에서도 활성화 된 유지 단추가 비활성화되었습니다.
- 4. 내용을 변경할 때 컨트롤이 비활성 상태로 표시됩니다.
- 5. Django 로그 아웃 후 비활성 상태로 전환
- 6. iPhone 앱이 비활성 상태에서 활성 상태로 전환됩니다.
- 7. GridView를 WPF로 최신 상태로 유지
- 8. Eclipse 내의 Tomcat - JPDA가 활성화 된 상태로 시작
- 9. 단기간 비활성 상태 일 때 내 창을 깜박 거리지 않게하십시오.
- 10. 싱글 톤 인스턴스의 값을 동기화 된 상태로 유지
- 11. Entity Framework - 끝나면 관련 객체를로드/포함 된 상태로 유지 하시겠습니까?
- 12. 일시 중지 상태로 활동 유지 - Android
- 13. Xml 정의 된 모양이 표시되지 않습니다.
- 14. ModalPopup에서 게시 중이지만 표시 상태로 유지 하시겠습니까?
- 15. iOS 프로비저닝 프로파일 앱을 만료 상태로 유지
- 16. 헤더와 구현 파일을 동기화 상태로 유지
- 17. xmphp bot 항상 온라인 상태로 유지
- 18. Facebook 세션을 활성 상태로 유지 하시겠습니까?
- 19. 네트워크를 통해 객체를 동기화 상태로 유지 하시겠습니까?
- 20. 어떻게 php stream_socket을 활성 상태로 유지 하시겠습니까?
- 21. 파이썬 소켓 - 소켓을 활성 상태로 유지 하시겠습니까?
- 22. VS2005를 filesytem과 동기화 상태로 유지 하시겠습니까?
- 23. Watin의 과도한 사용, IE가 열린 상태로 유지
- 24. autohotkey 활성화 창을 두 번 비활성화 하시겠습니까?
- 25. 발사대에서 제거하지만 활성화/시작 가능을 유지
- 26. 비활성 팝업 창이
- 27. 회전 된 모양이 애플릿에 나타나지 않습니다.
- 28. jQuery의 Flowplayer IE의 UI 탭이 비활성 탭에서 비디오 재생 유지
- 29. svn hook에 의해 생성 된 php 파일을 소유자 nobody, suphp가 활성화 된 상태로 실행하려고 시도했습니다.
- 30. vim vim은 비활성 창을 위/아래로 스크롤 할 수 있습니까?
VisualStudio의 IntelliSense를 모방하려고합니다. A는 제안 창이고 B는 사용자가 텍스트를 입력하는 곳입니다. 사용자가 A (선택한 제안 변경 등)를 클릭하면 자동으로 포커스를 B로 설정하여 사용자가 포커스를 수동으로 설정할 필요없이 입력을 계속할 수 있습니다. 포커스 전송은 다음과 같습니다 : 포커스가 B로 설정되고, 사용자가 A로 클릭하면 위로 이동합니다. 포커스를 B로 다시 설정합니다. 일시적으로 포커스를 가져오고, 멈추려는 포커스의 깜박임 (또는 깜박임)을 가져옵니다. . –