일상다반사 로그

C# 마우스 이벤트 본문

IT/C,C#

C# 마우스 이벤트

일상다반사로그 2018. 7. 16. 20:50
반응형

개발일을 잠깐 하다보니 마우스이벤트를 처리해야할 일이 생겼었다.

폼을 투명하게 해서서 화면에 보여주는 기능이 필요했는데 여기 폼에다가 마우스를 올렸을 때

보통은 마우스 커서가 폼 위에 닿으면 이런 모양으로 있다.

폼 밑에 만약에 텍스트를 입력해야하는데 폼이 상단에 있다면 텍스를 입력 못하는 상황이 발생한다.

그래서 또 구글링을 열심히 했다. 솔직히 국내 사이트에서는 사례를 찾기 힘들어서 구글링하다가

이미지 검색까지 하면서 소스 코드를 찾았다.

https://stackoverflow.com/questions/39855720/windows-forms-pass-clicks-through-a-partially-transparent-always-on-top-window

 

소스코드

 

using System; using System.Windows.Forms;
using
System.Runtime.InteropServices;
public partial class Form1 : Form
{
   
public Form1()
   
{
       
InitializeComponent();
       
this.Opacity = 0.5;
       
this.TopMost = true;
   
}
   
[DllImport("user32.dll", SetLastError = true)]
   
static extern int GetWindowLong(IntPtr hWnd, int nIndex);
   
[DllImport("user32.dll")]
   
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
   
const int GWL_EXSTYLE = -20;
   
const int WS_EX_LAYERED = 0x80000;
   
const int WS_EX_TRANSPARENT = 0x20;
   
protected override void OnLoad(EventArgs e)
   
{
       
base.OnLoad(e);
       
var style = GetWindowLong(this.Handle, GWL_EXSTYLE);
       
SetWindowLong(this.Handle,GWL_EXSTYLE , style | WS_EX_LAYERED | WS_EX_TRANSPARENT);
   
}
}

추가 관련 자료 :

https://msdn.microsoft.com/en-us/library/ms997507.aspx

검색 키워드 : Pass clicks through a partially transparent always-on-top window

 

 

 

반응형

'IT > C,C#' 카테고리의 다른 글

How to Add AD user to Groups C# (AD 사용자 그룹 멤버추가)  (0) 2020.03.18
C# https/security/tls/보안처리/ServicePointManager  (0) 2020.01.04
DataGridView - 읽기 전용  (0) 2017.12.04
c# FileSystemWatcher Class  (0) 2017.11.21
Stack  (0) 2017.11.15
Comments