2008-09-21 4 views
14

패널을 만들어 화면을 채우도록 설정 했으므로 이제 그 아래의 창을 볼 수 있지만 클릭을 통해 파일을 클릭하거나 투명도를 통해 다른 개체의 도구 팁을 볼 수 있습니다.Visual C# Window Forms의 투명도를 클릭 하시겠습니까?

RE :이 너무 분명있을 수 있습니다,하지만 당신은 "맨 뒤로 보내기"를 마우스 오른쪽 버튼으로 클릭하고 선택하여 뒷면 패널을 보내는 시도?

내 데스크톱 내에서나 파이어 폭스와 같은 의미입니다.

답변

21

투명 인 최상위 양식을 만드는 것은 매우 쉽습니다. 화면이나 필요한 영역을 채우고 같은 값의 TransparenyKey 색상과 BackColor를 갖도록 정의하십시오.

마우스를 무시하는 것은 간단합니다. WndProc를 재정의하고 모든 마우스 위치가 투명하게 처리되도록 WM_HITTEST에 알려 주면됩니다. 따라서 마우스가 창 아래에 어떤 일이 생기든지 상호 작용하게합니다. 이게 뭔가 ...

protected override void WndProc(ref Message m) 
    { 
     if (m.Msg == (int)WM_NCHITTEST) 
      m.Result = (IntPtr)HTTRANSPARENT; 
     else 
      base.WndProc(ref m); 
    } 
+1

해당 코드는 어디에 넣어야합니까? InitializeCoponets 아래에 넣을 때 작동하지 않았다. 나는 한번도 전화하지 않았다. – Hooch

+0

폼 클래스에 배치하십시오. 그건 그렇고, WM_NCHITTEST = 0x84 및 HTTRANSPARENT = -1. 그것은 작동합니다! : D – Pedro77

+1

호기심으로 이것은 [계층화 된] (http://msdn.microsoft.com/en-us/library/ms997507.aspx) 창을 사용하여 Win8에서 나에게 적합하지 않았습니다. 호버는 통과하지만 클릭은 활성화 될 것입니다 내 창문을 통과하는 대신에. 대신에 [WS_EX_TRANSPARENT 설정] (http://stackoverflow.com/a/2798294/33080)이 효과가있었습니다. –

관련 문제